将某些org.apache.log4j日志消息分流到特定日志文件

时间:2012-10-03 16:00:12

标签: java log4j

我们已经使用org.apache.log4j在我们的应用程序中进行了大量的日志记录。我们现在想要将其中一些消息分流到新的XML日志文件中(同时继续转到原始日志文件)。

这可能吗?除了常规日志文件之外,有没有办法可以识别这些消息并将它们发送到特殊位置?

1 个答案:

答案 0 :(得分:1)

我认为你可以定义两个文件追加器。一个在根级别,另一个在包中(根据需要选择包级别)级别如下:

# 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级别。