我们已经使用 org.apache.log4j 在我们的应用程序中进行了大量日志记录。我们现在想要将其中一些消息分流到一个新的 XML 日志文件(同时继续转到原始日志文件)。
这可能吗?除了常规日志文件之外,我们有没有办法识别这些消息并将它们发送到特殊的地方?
我认为您可以定义两个文件附加程序。一个在根级别,另一个在包级别(根据需要选择包级别),如下所示:
# Root logger option
log4j.rootLogger=DEBUG, RootFileAppender
#Shunted Logger option
log4j.logger.com.shunted=ERROR,ShuntedFileAppender
# RootFileAppender - used to log messages in the root.log file.
log4j.appender.RootFileAppender=org.apache.log4j.FileAppender
log4j.appender.RootFileAppender.File=root.log
log4j.appender.RootFileAppender.MaxFileSize=100MB
log4j.appender.RootFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.RootFileAppender.layout.ConversionPattern= %5p [%t] (%F:%L) - %m%n
# ShuntedFileAppender - used to log messages in the shunted.log file.
log4j.appender.ShuntedFileAppender=org.apache.log4j.FileAppender
log4j.appender.ShuntedFileAppender.File=shunted.log
log4j.appender.ShuntedFileAppender.MaxFileSize=10MB
log4j.appender.ShuntedFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.ShuntedFileAppender.layout.ConversionPattern= %5p [%t] (%F:%L) - %m%n
请注意:您也可以将两个记录器选项定义为不同的级别。在上面的示例中,ROOT 定义为,DEBUG
而分流定义为ERROR
级别。