首先,如果已经提出这个问题,我道歉。我搜索但找不到任何特定于我的问题。
这是场景 - 我正在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”记录消息?
答案 0 :(得分:1)
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(正确的解决方案),或者直接将这些类放在webapp之外tomcat的类路径(但不要这样做)。