将2个Web应用程序记录到2个不同的文件

时间:2011-12-05 05:11:56

标签: log4j tomcat6

我有两个来自tomcat中相同源代码树的Web应用程序,每个应用程序使用一个PropertyConfigurator加载它们各自的/webapp/WEB-INF/classes/log4j.properties

目前,tomcat配置为对整个容器使用一个控制台appender,并且两个应用程序的log4js都只写入控制台:

log4j.rootCategory=info, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender

这意味着我最终会为整个容器提供一个大的catalina.out

我想配置每个应用程序log4js,以便它们附加到各自的滚动文件中。

我知道我可以在log4j.properties内使用系统属性替换,但是不是在VM之间共享系统属性,因此容器中的两个应用程序之间不是线程安全吗?

有人可以建议一个整洁的解决方案,它允许我配置2个应用程序以记录单独的文件,最好是在日志的文件名中使用应用程序的上下文名称。

谢谢,p。

1 个答案:

答案 0 :(得分:0)

你的log4j.jar和commons-logging.jar放在tomcat目录中的哪个位置?你正在使用哪个版本的tomcat?

如果你在common / lib中有这些jar的一个副本,那么所有日志记录都会使用catalina.log,因为tomcat的log4j.properties文件只是为它下面的服务器和webapps配置的文件。

假设此方案在您的情况下保持有效,请在WEB-INF / lib下为两个Web应用程序复制log4j.jar和common-logging.jar。

为了在日志的文件名中使用应用程序名称,由于每个应用程序使用单独的log4j.properties文件,因此请在log4j.properties文件中针对FileAppender或RollingFileAppender命名日志文件。