1

首先,如果这个问题已经被问过,我很抱歉。我搜索但找不到任何特定于我的问题的内容。

这是场景 - 我正在部署一个应用程序,例如,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”记录消息?

4

1 回答 1

1

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

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

于 2012-09-28T21:16:07.537 回答