我在带有Java 1.8.0_65的OpenSuse Leap 42.2上运行Apache Tomcat 7.0.59并部署了多个Web应用程序。其中一些是我自己的,其中一些是第三方。
某些webapps在其类路径中附带了log4j.properties文件。现在我想要一个全局的log4j.properties文件覆盖所有其他文件,这样我就可以将所有日志信息聚合到一个大的my-tomcat.log文件中。
我所做的是将VM标志-Dlog4j.configuration = file:///path/to/my/custom-log4j.properties添加到tomcat的setenv.sh文件中,该文件基本上运行良好。现在我有自己的my-tomcat.log文件,其中包含所有日志记录信息。
但问题在于:" old"日志文件仍然被写入。似乎log4j仍在读取所有特定于应用程序的log4j.properties文件。
例如我的custom-log4j.properties文件如下所示:
# Set root logger level to error
log4j.rootLogger=INFO, File
###### Console appender definition #######
# All outputs currently set to be a ConsoleAppender.
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
# use log4j NDC to replace %x with tenant domain / username
log4j.appender.Console.layout.ConversionPattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %m%n
#log4j.appender.console.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n
###### File appender definition #######
log4j.appender.File.Threshold=INFO
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
log4j.appender.File.File=eWork.log
log4j.appender.File.Append=true
log4j.appender.File.DatePattern='.'yyyy-MM-dd
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] [%t] %m%n
我的一个webapps日志记录文件如下所示:
# Set root logger level to error
log4j.rootLogger=error, Console, File
###### Console appender definition #######
# All outputs currently set to be a ConsoleAppender.
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
# use log4j NDC to replace %x with tenant domain / username
log4j.appender.Console.layout.ConversionPattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %m%n
#log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n
###### File appender definition #######
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
log4j.appender.File.File=alfresco.log
log4j.appender.File.Append=true
log4j.appender.File.DatePattern='.'yyyy-MM-dd
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] [%t] %m%n
创建了my-tomcat.log以及alfresco.log。虽然我没有在custom-log4j.properties中添加控制台appender,但写了catalina.out文件。然而catalina.out的内容非常小。
您是否有任何想法如何完全覆盖所有webapps中的任何log4j.properties文件?
非常感谢您的帮助,祝您度过愉快的一天!