log4j将几个日志重定向到单独的文件

时间:2017-05-06 16:25:54

标签: java logging log4j tomcat7

我有一个使用log4j的tomcat java web应用程序。我可以在log4j中指定一些属性来重定向特定包类的日志,以将文件与其他文件分开。

谢谢!

2 个答案:

答案 0 :(得分:1)

例如,两个软件包的日志文件是:

com.abhi.packageOne;  ->  packageOneFile.log
com.abhi.packageTwo;  ->  packageTwoFile.log

将rootLogger添加为文件或控制台。您可以根据您的要求保留任何日志级别,即跟踪,信息,错误等

log4j.rootLogger=Debug, file

您必须为两个包创建两个新的appender

log4j.appender.MAIN_LOG=org.apache.log4j.RollingFileAppender
log4j.appender.MAIN_LOG.File=/path/main.log
log4j.appender.MAIN_LOG.layout=org.apache.log4j.PatternLayout

log4j.appender.PACKAGE_ONE=org.apache.log4j.RollingFileAppender
log4j.appender.PACKAGE_ONE.File=/path/packageOneFile.log
log4j.appender.PACKAGE_ONE.layout=org.apache.log4j.PatternLayout

log4j.appender.PACKAGE_TWO=org.apache.log4j.RollingFileAppender
log4j.appender.PACKAGE_TWO.File=/path/packageTwoFile.log
log4j.appender.PACKAGE_TWO.layout=org.apache.log4j.PatternLayout

您需要相应地设置可加性。

什么是上瘾?

为了避免日志冗余,我们可以使用Log4j加法。只需将Log4j记录器的additivity属性设置为false,然后进入该记录器的日志消息将不会传播到它的父记录器。因此,我们的新Log4j配置文件将是:

log4j.additivity.com.abhi.packageOne=false
log4j.additivity.com.abhi.packageTwo=false

log4j.logger.com.abhi.packageOne=DEBUG, PACKAGE_ONE
log4j.logger.com.abhi.packageTwo=DEBUG, PACKAGE_TWO

log4j.rootLogger=DEBUG, MAIN_LOG 

MAIN_LOG是您的常规日志文件。如果您还要在MAIN_LOG中打印来自PACKAGE_ONE和PACKAGE_TWO的日志,请包含以下行。

log4j.rootLogger=DEBUG, MAIN_LOG , PACKAGE_ONE , PACKAGE_TWO

答案 1 :(得分:0)

您可以使用此配置进行日志记录,也可以更改日志文件的路径。

# Root logger option
log4j.rootLogger=INFO, file

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender

#Redirect to Tomcat logs folder
#log4j.appender.file.File=${catalina.home}/logs/logging.log

log4j.appender.file.File=./logs/test.log   // change your path
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n


log4j.logger.org.springframework=WARN
log4j.logger.com.amstech=DEBUG