Java 为什么Tomcat在catalina.out日志文件中将我的日志行加倍?

Java 为什么Tomcat在catalina.out日志文件中将我的日志行加倍?,java,tomcat,logging,logfiles,Java,Tomcat,Logging,Logfiles,每次我查看Tomcat的catalina.outlog文件时,我都会看到每个日志条目都有两行代码。为什么会这样?以前有任何Java(Tomcat)用户出现过这种情况吗?当我在类路径上有两个log4j.properties副本时,这种情况会发生在我身上。 检查多个日志记录配置您的webapp的log4j.properties是否设置为log to catalina.out?Tomcat已经在那里记录了事件,如果您的应用程序也在那里记录了事件,这可能解释了重复输入的原因。这很可能与JAR的加载顺序有

每次我查看Tomcat的
catalina.out
log文件时,我都会看到每个日志条目都有两行代码。为什么会这样?以前有任何Java(Tomcat)用户出现过这种情况吗?

当我在类路径上有两个log4j.properties副本时,这种情况会发生在我身上。
检查多个日志记录配置

您的webapp的log4j.properties是否设置为log to catalina.out?Tomcat已经在那里记录了事件,如果您的应用程序也在那里记录了事件,这可能解释了重复输入的原因。

这很可能与JAR的加载顺序有关。在我参与的一个较老的项目中,这种情况会一直发生,解决方案是按照“完美”的顺序重新排列罐子,事情就会自行解决


可能不仅仅是多个log4j,还有commons日志、slf4j等。请尝试重新排列它们,但在看不到类路径顺序的情况下,很难进一步提供帮助。

检查您的log4j,确保您没有“双重附加”到日志。您的根记录器已经有一个与之关联的appender,如果要筛选其他类别,请确保不要指定appender,除非您希望它转到根以外的appender

<category name="org.apache.commons">
    <priority value="warn"/> 
    <!-- don't add the same appender as your root appender -->
</category>

我也遇到了同样的问题。像这样:

log4j.rootLogger=info,R
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/catalina.out
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy.MM.dd HH:mm:ss} %5p %c{1}(%L):? %m%n
log4j.logger.org.apache=info, R
只需将
log4j.rootLogger=info,R
设置为
log4j.rootLogger=R
,它就可以工作了