我无法控制我在 Websphere Liberty Profile 服务器中的代码的日志记录级别。 我已将服务器上的 server.xml 配置为不记录 hibernate 和 spring,因为我的日志将被这两个框架的事件淹没。我通常使用 log4j 执行此操作,它在独立 WAS 中运行良好。
<logging consoleLogLevel="INFO" copySystemStreams="true" traceFormat="ENHANCED" traceSpecification="org.springframework.*=off:com.ibm.ws.*=off:org.hibernate*=off"/>
在 Liberty 中这是行不通的。 当 liberty 更新配置时(当我保存带有更改的 server.xml 时),我得到以下日志:
[INFO ] TRAS0040I: The configured trace state included the following specifications that do not match any loggers currently registered in the server: org.hibernate*=off:org.springframework.*=off
基本上,此消息适用于我的任何代码和任何第三方代码(Spring、Hibernate 等)。 但是,traceSpecification 级别对于 IBM 类工作正常,我能够指定 *=off,这有效地关闭了所有日志记录。
有人遇到过吗? IBM 的 TRAS0040I 文档看起来很简单,但我似乎无法弄清楚为什么我的记录器没有在服务器上注册。
最佳答案
Liberty 对日志记录没有丰富的控制。您应该了解“日志记录”和“跟踪”之间的区别。检查console.log、messages.log、trace.log文件开头的描述:http://www.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.wlp.doc/ae/rwlp_logging.html
您在“traceSpecification”中的配置 - 实际上不会执行任何操作,因为 spring 和 hibernate 是来自 JVM 的日志并且它们不会进行跟踪,因此跟踪配置不会影响它们。
您可以为 jvm 日志自由配置的是 consoleLogLevel(INFO、AUDIT、WARNING、ERROR 和 OFF)
如果您想为 Liberty 中的特定组件配置日志级别 - 您应该使用例如带有自己配置的 log4j
关于spring - 自由配置文件控制日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23094071/