https://www.ibm.com/support/knowledgecenter/en/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/rwlp_logging.html上的文档列出了以下配置代码段,用于配置以JSON格式转到控制台的日志(当Liberty在Linux容器中运行时,如kubernetes pod中的一个有用配置):
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
,如果它只包含消息和跟踪日志文件中的所有内容?
com.ibm.ws.logging.console.source
bootstrap属性控制控制台处理程序将订阅的源。这意味着,如果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
,您将不会在控制台输出中看到INFO级别消息,除非您还在server.xml中明确设置了consoleLogLevel=info
。
请注意,在server.xml中的<logging>
元素中显式设置的日志记录设置(在配置管理器准备就绪时处理)将覆盖使用环境变量或bootstrap.properties文件的任何配置集(在服务器启动过程中很早就会处理) )。实际上,这意味着您应该使用bootstrap.properties或环境变量进行日志记录配置,并且只需使用server.xml文件中的logging元素来指定在服务器运行时要覆盖的内容。