consoleSource和consoleLogLevel与server.xml中的日志设置如何相关?

时间:2019-03-01 04:06:05

标签: websphere-liberty open-liberty

https://www.ibm.com/support/knowledgecenter/en/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/rwlp_logging.html上的文档列出了以下配置片段,用于将日志配置为以JSON格式进入控制台(当Liberty在kubernetes容器中的Linux容器内运行时,这是一个有用的配置):

com.ibm.ws.logging.console.format=json
com.ibm.ws.logging.console.log.level=info
com.ibm.ws.logging.console.source=message,trace,accessLog,ffdc,audit

但是,我注意到当我增加server.xml内的日志级别时(对FINER启用跟踪),跟踪消息也会发送到控制台。我以为是因为将源配置为从跟踪中提取消息,但是我不了解的是它是否/如何与consoleLogLevel设置交互。

为什么要指定com.ibm.ws.logging.console.log.level,如果它只是要包含消息和跟踪日志文件中的所有内容呢?

1 个答案:

答案 0 :(得分:2)

com.ibm.ws.logging.console.source引导程序属性控制控制台处理程序将订阅的源。这意味着,如果traceSpecification启用了任何跟踪(通常为FINE / FINER / FINEST级别),则该内容将被控制台处理程序使用并作为JSON输出到控制台。

因此,设置...

com.ibm.ws.logging.console.source=message,trace,accessLog,ffdc,audit

表示控制台处理程序将接收系统生成的任何日志,跟踪,访问日志,ffdc和审核事件。

如果指定了com.ibm.ws.logging.console.log.level,则它控制控制台处理程序过滤掉哪些日志事件。通过设置com.ibm.ws.logging.console.log.level=WARNING,除非您还在server.xml中显式设置了consoleLogLevel=info,否则您将不会在控制台输出中看到INFO级别的消息。

请注意,在server.xml的<logging>元素中显式设置的日志记录设置(在配置管理器准备就绪时处理)将覆盖使用环境变量或bootstrap.properties文件(已处理)的任何配置集在服务器启动过程的早期)。实际上,这意味着您应该使用bootstrap.properties或环境变量来进行日志记录配置,而仅使用server.xml文件中的logging元素来指定要在服务器运行时覆盖的内容。