consoleSource 和 consoleLogLevel 与 server.xml 中的日志设置有什么关系?

How do consoleSource and consoleLogLevel relate to the log settings in 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 说启用跟踪),跟踪消息也会发送到控制台。我认为这是因为源被配置为从跟踪中获取消息,但我不明白的是 whether/how 与 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 文件中的日志记录元素来指定服务器为 运行 时要覆盖的内容。