websphere-liberty - 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
?
解决方案
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=info
server.xml 中明确设置。
请注意,<logging>
在 server.xml 的元素中显式设置的日志记录设置(在配置管理器准备好时处理)覆盖使用环境变量或 bootstrap.properties 文件(在服务器启动过程的早期处理)的任何配置集. 在实践中,这意味着您应该使用 bootstrap.properties 或环境变量进行日志配置,并且只需使用 server.xml 文件中的 logging 元素来指定您想要在服务器运行时覆盖的内容。
推荐阅读
- python - 使用python多线程运行无限循环
- javascript - webpack热模块更换不起作用
- c# - 如何解决第 6 步?包含第 6 步的空值......为什么第 6 步包含空值(Nullexception)?
- javascript - 如何在if语句所在的for循环之外返回if语句的else
- vb.net - 类对象属性,它引用相同对象类型的另一个对象实例
- angularjs - 将现有应用程序从 Flex 迁移到 AngularJs
- javascript - 如何将数组从 Javascript 发送到 Laravel 服务器?
- qt - 如何使用 QT 将 udp 音频流录制到 wav 文件
- sql - 使用 54 个 SELECT 优化视图——更新为使用的流程
- java - 为什么这个 IntStream.mapToObj 映射器没有用 Stream.count 评估?