我有一个带有很多Web应用程序目录的Tomcat 6服务器,我已经设置了Log4J。它适用于通过war文件 not 部署的所有应用程序目录。
当前配置如下所示:
/tomcat/lib/log4j.properties
# Define all the appenders
log4j.appender.root=org.apache.log4j.RollingFileAppender
log4j.appender.root.File=${catalina.base}/logs/tomcat.log
log4j.appender.root.Append=true
log4j.appender.root.MaxFileSize=1MB
log4j.appender.root.MaxBackupIndex=5
log4j.appender.root.Encoding=UTF-8
log4j.appender.root.layout=org.apache.log4j.PatternLayout
log4j.appender.root.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
# Configure which loggers log to which appenders
log4j.rootLogger=INFO, root
在每个网络应用程序中:
/content/pages/WEB-INF/classes/log4j.properties
log4j.appender.root=org.apache.log4j.RollingFileAppender
log4j.appender.root.File=${catalina.base}/logs/pages/root.log
log4j.appender.root.Append=true
log4j.appender.root.MaxFileSize=1MB
log4j.appender.root.MaxBackupIndex=5
log4j.appender.root.Encoding=UTF-8
log4j.appender.root.layout=org.apache.log4j.PatternLayout
log4j.appender.root.layout.ConversionPattern=%-5p %d (%c)%m%n
log4j.appender.pages=org.apache.log4j.RollingFileAppender
log4j.appender.pages.File=${catalina.base}/logs/pages/pages.log
log4j.appender.pages.Append=true
log4j.appender.pages.MaxFileSize=1MB
log4j.appender.pages.MaxBackupIndex=5
log4j.appender.pages.Encoding=UTF-8
log4j.appender.pages.layout=org.apache.log4j.PatternLayout
log4j.appender.pages.layout.ConversionPattern=%d [%t] %-5p %c- %m%n
log4j.rootLogger=WARN, root
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[content].[/pages]=WARN, pages
现在是一个不起作用的人:我有一个文件" homepageDev.war"在my / content目录中,每次重新启动Tomcat服务器时都会部署,或者我手动触发它。
/content/homepageDev/WEB-INF/classes/log4j.properties
log4j.appender.root=org.apache.log4j.RollingFileAppender
log4j.appender.root.File=${catalina.base}/logs/homepage_dev/root.log
log4j.appender.root.Append=true
log4j.appender.root.MaxFileSize=1MB
log4j.appender.root.MaxBackupIndex=5
log4j.appender.root.Encoding=UTF-8
log4j.appender.root.layout=org.apache.log4j.PatternLayout
log4j.appender.root.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.homepage=org.apache.log4j.RollingFileAppender
log4j.appender.homepage.File=${catalina.base}/logs/homepage_dev/homepage_dev.log
log4j.appender.homepage.Append=true
log4j.appender.homepage.MaxFileSize=1MB
log4j.appender.homepage.MaxBackupIndex=5
log4j.appender.homepage.Encoding=UTF-8
log4j.appender.homepage.layout=org.apache.log4j.PatternLayout
log4j.appender.homepage.layout.ConversionPattern=%-5p %d (%c)%m%n
log4j.rootLogger=DEBUG, root
log4j.logger.com.mycompany.web.homepage=DEBUG, homepage
我已经设置了Tomcat以在调试模式下启动Log4J,并且我获得了所有其他应用程序(例如/ pages)的大量调试信息。但是在主页Dev.war应用程序的情况下,我什么也得不到。
日志中唯一的东西是:
[/manager]- Manager: deploy: Deploying web application at '/homepageDev'
[/manager]- Manager: Uploading WAR file to /content/homepageDev.war
Deploying web application archive homepageDev.war
在我的应用程序中,我使用Log4J,如下所示:我有一个带有以下内容的servlet:
private static Logger logger = Logger.getLogger(DatabaseJsonServlet.class);
并在init方法中调用:
logger.debug();
答案 0 :(得分:0)
Log4j只会初始化一次,使用线程的当前类加载器来加载log4j.properties
。因此,如果应用A首先加载,则log4j将读取应用A的log4j.properties
文件,然后再也不会再读取另一个log4j.properties
文件。
如果您希望能够在每个应用程序中单独使用log4j,则需要在log4j-1.2.16.jar
中为每个Web应用程序添加WEB-INF/lib
。