是否可以在tomcat 5.5安装程序中使用单个log4j jar文件,它可以被多个webapps使用并为每个webapp单独记录?在Tomcat5中使用单独的属性文件在多个webapps之间共享一个log4j jar文件
我有大约8个不同的webapps写在哪里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
基本上为各成分的我想登录到一个单独的文件,然而,问题是,如果我包括共享/ lib目录下的log4j,取其web应用被第一次访问,有效地限定了日志该文件将被所有的webapps使用。即我不能使用单独的配置。
我知道的替代方案: 将log4j放入每个war文件的WEB-INF/lib目录中,这样我就可以为每个webapp分别配置一个配置。
将上面的“LogFile”引用更改为特定于每个Web应用程序,以便有效地由每个属性文件定义单独的配置。这似乎避免以下的错误“的log4j:ERROR A‘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
我宁愿坚持使用的布局第一个属性文件并尽可能保持它与web应用程序之间的相似性,并且也不会在每个web应用程序中包含一个单独的log4j副本。理想情况下,我希望只使用从tomcat共享库目录到系统副本log4j的符号链接。
还有其他的选择吗?