我有一个使用log4j的tomcat java web应用程序。我可以在log4j中指定一些属性来重定向特定包类的日志,以将文件与其他文件分开。
谢谢!
答案 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