我的Tomcat 8.0.30的catalina.out
文件记录了大量的调试日志。我不知道为什么这些调试日志记录在catalina.out
中,而不是记录在为应用程序配置的日志文件中。为什么记录在容器日志中?
第二个问题是,在log4j.xml
中,我已经将org.apache
软件包日志级别设置为WARN
,那么为什么会记录这些调试日志?但是,我知道log4j.xml
并不控制catalina.out
的日志。
07:00:17.729 [queue://company.generic.local-6] DEBUG org.apache.activemq.ActiveMQSession - ID:us03dv4vafpc01.ilnx.com-36014-1659188569211-3:1:9 Transaction Commit :null
07:00:17.728 [queue://company.generic.local-4] DEBUG org.apache.activemq.ActiveMQSession - ID:us03dv4vafpc01.ilnx.com-36014-1659188569211-3:1:7 Transaction Commit :null
07:00:17.729 [queue://company.generic.local-8] DEBUG org.apache.activemq.ActiveMQSession - ID:us03dv4vafpc01.ilnx.com-36014-1659188569211-3:1:10 Transaction Commit :null
... 12 lines omitted ...
07:00:19.318 [queue://company.generic.local-9] DEBUG org.apache.activemq.ActiveMQSession - ID:us03dv4vafpc01.ilnx.com-36014-1659188569211-3:1:3 Transaction Commit :null
... 236 lines omitted ...
07:00:19.729 [queue://company.generic.local-2] DEBUG org.apache.activemq.ActiveMQSession - ID:us03dv4vafpc01.ilnx.com-36014-1659188569211-3:1:5 Transaction Commit :null
Show all 257 lines
这是部分启动脚本
CATALINA_HOME=${CATALINA_HOME:-/opt/tomcat8
CATALINA_BASE=${CATALINA_BASE:-/opt/${SERVICE}}
CATALINA_OUT=${CATALINA_OUT:-/var/log/catalina.out}
export CATALINA_HOME CATALINA_BASE CATALINA_OUT
CATALINA_OPT="CATALINA_OPT -Dlog4j.configuration=file:/opt/log4j.xml"
export CATALINA_OPT
exec &>> ${CATALINA_OUT}
...
EXECUTABLE="$CATALINA_HOME/bin/catalina.sh"
nohup "$EXECUTABLE" run -XX:OnOutOfMemoryError="kill -9 %p"
我使用的是log4j,而不是log4j2。在log4j.xml中,明确指示只记录org.apache.actiemq包的WARN级别。log4j.xml中只有一个附加器。部分log4j.xml为
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender class="org.apache.log4j.RollingFileAppender" name="file">
<param name="File" value="/var/log/service.log"/>
<layout class="org.apache.log4j.EnhancedPatternLayout">
....
</layout>
</appender>
<logger name="org.apache">
<level value="warn"/>
</logger>
<root>
<priority value="warn"/>
<appender-ref ref="file"/>
</root>
</log4j:configuration>
1条答案
按热度按时间l0oc07j21#
我找到了这个问题的答案。至少在我的例子中,这是log4j jar和logback jar放在一起的副作用。然而,应用服务器被配置为使用log4j,但是其中一个依赖jar将logback jar作为可传递的依赖项,并且它被包裹在应用程序war文件中。在我从war中排除logback jar之后,这种绝对疯狂的日志记录停止了。我还没有做过全面的分析,这就是为什么它会记录一个完全不相关的日志,例如,在本例中,是来自https://actiemq.apache.org/maven/apidocs/org/apache/actiemq/ActiveMQSession.html#commit()的调试语句
以下是此类的方法,该方法具有调试记录器。