是否可以在 tomcat 5.5 设置中使用单个 log4j jar 文件,多个 webapp 可以使用它并为每个 webapp 单独记录?
我编写了大约 8 个不同的 webapp,其中 log4j 属性文件之间唯一真正的区别是日志文件名。但是,如果我尝试将 log4j 从 webapp WEB-INF/lib 目录移动到 tomcat5 shared/lib 目录,我会遇到问题。
所有的属性文件基本上和下面的一样,我只是在代码中使用 System.setProperty("file.name", ) 设置了 file.name 。真的没有必要,但我在玩弄为所有组件使用单个属性文件的想法。
log4j.rootLogger=DEBUG, LogFile
# stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
# LogFile
log4j.appender.LogFile=org.apache.log4j.RollingFileAppender
log4j.appender.LogFile.File=${file.name}
log4j.appender.LogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.LogFile.MaxFileSize=500KB
log4j.appender.LogFile.MaxBackupIndex=5
log4j.appender.LogFile.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
基本上对于每个组件,我想记录到一个单独的文件,但是问题是如果我在 shared/lib 目录下包含 log4j,无论哪个 webapp 先被访问,都会有效地定义将被所有人使用的日志文件的网络应用程序。即我不能使用单独的配置。
我知道的替代方案:将 log4j 放入每个 war 文件的 WEB-INF/lib 目录中,这样我将获得每个 webapp 的单独配置。
将上面的“LogFile”引用更改为特定于每个 web 应用程序,以便每个属性文件有效地定义单独的配置。这似乎避免了以下错误“ log4j:错误“org.apache.log4j.RollingFileAppender”对象不可分配给“org.apache.log4j.Appender”变量。 “
即使用如下内容:
对于 WebApp1
log4j.rootLogger=DEBUG, LogFileWebapp1
# stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
# LogFile
log4j.appender.LogFileWebapp1=org.apache.log4j.RollingFileAppender
log4j.appender.LogFileWebapp1.File=${file.name}
log4j.appender.LogFileWebapp1.layout=org.apache.log4j.PatternLayout
log4j.appender.LogFileWebapp1.MaxFileSize=500KB
log4j.appender.LogFileWebapp1.MaxBackupIndex=5
log4j.appender.LogFileWebapp1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
对于 WebApp2
log4j.rootLogger=DEBUG, LogFileWebapp2
# stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
# LogFile
log4j.appender.LogFileWebapp2=org.apache.log4j.RollingFileAppender
log4j.appender.LogFileWebapp2.File=${file.name}
log4j.appender.LogFileWebapp2.layout=org.apache.log4j.PatternLayout
log4j.appender.LogFileWebapp2.MaxFileSize=500KB
log4j.appender.LogFileWebapp2.MaxBackupIndex=5
log4j.appender.LogFileWebapp2.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
我宁愿坚持第一个属性文件的布局,并在 webapps 之间保持尽可能相似,并且也希望不必在每个 webapps 中包含单独的 log4j 副本。理想情况下,我希望只使用从 tomcat 共享 lib 目录到 log4j 系统副本的符号链接。
还有其他选择吗?