log4j两个带有单独文件的记录器

时间:2015-09-21 14:59:52

标签: java file logging properties log4j

在我的程序中,我有2个记录器,现在我必须将它们保存到文件中,但是没有创建文件。

log4j.rootLogger=arcLog, errorLog, INFO

#ARC-logger properties
log4j.appender.arcLog=org.apache.log4j.FileAppender
log4j.appender.arcLog.File=logs/ARC-1Logger.log
log4j.appender.arcLog.Append=true
log4j.appender.arcLog.maxFileSize=5MB
log4j.appender.arcLog.maxBackupIndex=5
log4j.appender.arcLog.threshold=INFO
log4j.appender.arcLog.layout=org.apache.log4j.PatternLayout
log4j.appender.arcLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n

log4j.appender.arcSLog=org.apache.log4j.FileAppender
log4j.appender.arcSLog.File=logs/ARC-Session_Logger.log
log4j.appender.arcSLog.Append=true
log4j.appender.arcSLog.maxFileSize=1024KB
log4j.appender.arcSLog.maxBackupIndex=5
log4j.appender.arcSLog.threshold=WARN
log4j.appender.arcSLog.layout=org.apache.log4j.PatternLayout
log4j.appender.arcSLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n

log4j.category.arcLog=TRACE, ARC-Logger
log4j.additivity.arcLog=false

log4j.category.errorLog=WARN, ARC-Session_Logger
log4j.additivity.arcSLog=false

要使用记录器:

loggerF = Logger.getLogger("ARC-Logger");
loggerS = Logger.getLogger("ARC-Session_Logger");

发现Appenders因为没有错误,但没有创建文件。 是不是这个项目是我在另一个项目中与Hibernate一起使用的库,它还有另一个记录器?

1 个答案:

答案 0 :(得分:0)

我看到一些不太正确的事情。您的属性文件看起来应该更像这样:

log4j.rootLogger=INFO, arcApp, arcSApp

#ARC-logger properties
log4j.appender.arcApp=org.apache.log4j.RollingFileAppender
log4j.appender.arcApp.File=logs/ARC-1Logger.log
log4j.appender.arcApp.Append=true
log4j.appender.arcApp.maxFileSize=5MB
log4j.appender.arcApp.maxBackupIndex=5
log4j.appender.arcApp.threshold=INFO
log4j.appender.arcApp.layout=org.apache.log4j.PatternLayout
log4j.appender.arcApp.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n

log4j.appender.arcSApp=org.apache.log4j.RollingFileAppender
log4j.appender.arcSApp.File=logs/ARC-Session_Logger.log
log4j.appender.arcSApp.Append=true
log4j.appender.arcSApp.maxFileSize=1024KB
log4j.appender.arcSApp.maxBackupIndex=5
log4j.appender.arcSApp.threshold=WARN
log4j.appender.arcSApp.layout=org.apache.log4j.PatternLayout
log4j.appender.arcSApp.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n

log4j.logger.arcLog=TRACE, arcApp
log4j.additivity.arcLog=false

log4j.logger.arcSLog=WARN, arcSApp
log4j.additivity.arcSLog=false

然后你应该可以打电话给你的课程:

private static final Logger  loggerF = Logger.getLogger("arcLog");
private static final Logger  loggerS = Logger.getLogger("arcSLog");

我在您的房产中看到的问题很少:

  • arcLogarcSLog是追加者,而不是记录器,这可能会让您感到困惑。
  • 如果您想使用maxFileSizemaxBackupIndex,您需要的是RollingFileAppender,而不是FileAppender
  • 在rootLogger属性中,您应首先定义级别,然后定义appender。
  • 实际创建记录器的时间在log4j.logger.arcLog=TRACE, arcApp,您可以在其中定义记录器和先前声明的appender的级别。
  • 要在java类中使用记录器,您需要调用记录器而不是appender。