使用log4j创建不同的日志文件

时间:2011-03-24 12:33:17

标签: java log4j

我正在尝试在不同的文件中写入日志。我希望能够从不同的方法写入不同的文件。假设方法A中存在异常,它在文件A中写入...如果方法B中存在异常,则在文件B中写入。我在谷歌上阅读帮助,但它们都建议调试,跟踪等等级别。我的消息都是错误消息,只是方法不同。我正在使用log4j的属性文件。这就是它的样子:

log4j.rootLogger=ERROR, ROOT
log4j.appender.ROOT=org.apache.log4j.RollingFileAppender
log4j.appender.ROOT.File=(**my_path**)\EmailIntegration.log
log4j.appender.ROOT.MaxFileSize=1000KB
log4j.appender.ROOT.MaxBackupIndex=5
log4j.appender.ROOT.layout=org.apache.log4j.PatternLayout 
log4j.appender.ROOT.layout.ConversionPattern=[%d] %t %c %-5p - %m%n
log4j.logger.com.webage.ejbs=INFO

2 个答案:

答案 0 :(得分:3)

  1. 定义您的log4j.rootLogger
  2. 将rootLogger配置为appender。
  3. 定义类必须登录的根记录器。
  4. 示例(我的根记录器是stdoutinfooutdebugouterrorout)。

    #---This is the configuration file for Log4J---
    log4j.threshold=ALL
    log4j.rootLogger=ALL, stdout, infoout, debugout, errorout
    

    然后我定义了每个记录器(例如infoout

    #--Log settings for infoout
    log4j.appender.infoout=org.apache.log4j.RollingFileAppender
    log4j.appender.infoout.file=C:/Logs/Music4Point0.info.log
    log4j.appender.infoout.MaxFileSize=10240KB
    log4j.appender.infoout.MaxBackupIndex=10
    log4j.appender.infoout.layout=org.apache.log4j.PatternLayout
    log4j.appender.infoout.layout.ConversionPattern=%d{dd-MMM-yyy HH:mm:ss,SSS} [%t] %-5p %c - %m%n
    log4j.appender.infoout.Threshold=INFO
    

    现在,我说所有org.hibernate.*类都必须记录到DEBUG阈值和infoout记录器。

    log4j.logger.org.hibernate=DEBUG, infoout
    log4j.additivity.org.hibernate=false
    

    这就是你如何配置log4J来设置自定义日志记录。

答案 1 :(得分:1)

log4j中最好的控制级别是在类级别。无论如何,你有两个选择:

第一个选项,最简单的选项,是为每个方法定义特殊记录器:

log4j.logger.LoggerForMethodA=ERRROR, APPENDERFORMETHODA
log4j.logger.LoggerForMethodB=ERRROR, APPENDERFORMETHODB

在你的课堂上,在你的方法上使用适当的记录器。

第二个选项,功能强大的选项,是切换到xml配置格式,您可以在其中为每个appender定义过滤器,我认为这是您的最佳选择。查看有关XML配置格式的the explanationhow to use filters in log4j。这样,您为每个文件定义一个appender,并使用过滤器来保证异常转到正确的文件。 另请查看FilterLogging EventLocationInfo

的javadoc