是否可以在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的符號鏈接。
還有其他的選擇嗎?