首页 > 解决方案 > consoleSource 和 consoleLogLevel 与 server.xml 中的日志设置有什么关系?

问题描述

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

标签: websphere-libertyopen-liberty

解决方案


bootstrap 属性控制控制台处理程序将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,您将不会在控制台输出中看到 INFO 级别的消息,除非您还在consoleLogLevel=infoserver.xml 中明确设置。

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


推荐阅读