繁体   English   中英

如果有多个log4j.properties,则log4j的行为

[英]Behaviour of log4j in case of multiple log4j.properties

首先,对于这个问题是否已经提出,我深表歉意。 我搜索了但找不到与我的问题有关的任何东西。

这是场景-我正在Tomcat 6.0.35中部署一个应用程序,例如MyFirstWebApp。 Tomcat的公共加载程序路径中有一个log4j.properties,看起来像-

log4j.rootLogger=INFO, LOGFILE

log4j.logger.com.test.java=DEBUG, TEST
log4j.additivity.com.test.java=false

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%p] %m%n

# LOGFILE is set to be a File appender using a PatternLayout
log4j.appender.LOGFILE=org.apache.log4j.RollingFileAppender
log4j.appender.LOGFILE.File=/home/myuserid/tomcat.log
log4j.appender.LOGFILE.MaxFileSize=25MB
log4j.appender.LOGFILE.MaxBackupIndex=5
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d %p %t %c - %m%n

# LOGFILE is set to be a File appender using a PatternLayout
log4j.appender.TEST=org.apache.log4j.FileAppender
log4j.appender.TEST.File=/home/myuserid/test.log
log4j.appender.TEST.layout=org.apache.log4j.PatternLayout
log4j.appender.TEST.layout.ConversionPattern=%d %p %t %c - %m%n

Tomcat的lib /目录中也有一个log4j.jar文件。

现在,MyFirstWebApp的WEB-INF / classes目录中有一个log4j.properties。 MyFirstWebApp的WEB-INF / lib目录中也有一个log4j.jar。

MyFirstWebApp log4j.properties看起来像这样-

log4j.rootCategory=INFO,LOGFILE

# Set the enterprise logger priority to FATAL
log4j.logger.com.test=INFO

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%p] %m%n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.RollingFileAppender
log4j.appender.LOGFILE.MaxFileSize=10MB
log4j.appender.LOGFILE.MaxBackupIndex=99
log4j.appender.LOGFILE.File=/home/myuserid/mywebapp.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n

当我启动服务器并部署此应用程序时,我希望找到3个日志文件-tomcat.log,test.log和mywebapp.log(我做了)。 我还期望从“ test.log”内的“ com.test.java”包中找到所有日志记录,但它们在“ mywebapp.log”中找到

我在这里做错了什么? 如何在不修改MyFirstWebApp的情况下记录来自“ com.test.java”的消息?

log4j.properties文件由类加载器加载。 webapp中的所有类都使用webapp的类加载器,因此只能看到WEB-INF/classes下的log4j.properties文件。 因此,由webapp的类生成的com.test.java日志使用WEB-INF/classes/log4j.properties 因此它们被写入了mywebapp.log

如果您希望com.test.java的日志进入test.log,则必须修改webapp的log4j.properties(正确的解决方案),或者将这些类直接放在tomcat的classpath中(从webapp中删除)(但不要这样做)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM