【问题标题】:How to make log4j record to a file and print to console如何将 log4j 记录到文件并打印到控制台
【发布时间】:2011-08-21 23:57:26
【问题描述】:

我可以将日志发送到控制台,但我似乎无法将其发送到日志文件。这是我的properties 文件。

log4j.rootLogger=DEBUG, LOG , stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d{d/MM/yy HH:mm:ss}:%m%n
# log4j.appender.LOG.Threshold=INFO

log4j.appender.LOG=org.apache.log4j.RollingFileAppender
log4j.appender.LOG.File=C:\dev\harry\data\logs\core.log
log4j.appender.LOG.layout=org.apache.log4j.PatternLayout
log4j.appender.LOG.Append=true
log4j.appender.LOG.layout.ConversionPattern=%5p %d{d/MM/yy HH:mm:ss}:%m%n
# log4j.appender.LOG.Threshold=INFO

【问题讨论】:

  • 不是 \ 必须是 \\ 吗?在大多数属性文件中都是如此
  • @MJB:谢谢。你的建议解决了我的问题。您能否将您的评论格式化为单独的答案,以便我接受。

标签: java log4j


【解决方案1】:

问题是你的单个\应该是\\。在大多数属性文件中都是如此。

【讨论】:

    【解决方案2】:

    文件路径中的 \ 存在一些问题需要修复。语法有点神秘,但记录到多个位置的方法是将命名的日志记录附加器附加到根记录器。在这个例子中是:

    log4j.rootLogger=DEBUG, LOG , stdout
    

    DEBUG 是用于根记录器的日志记录级别(阈值过滤器)。

    LOG 是日志附加程序的名称

    stdout 是第二个附加程序的名称

    日志附加器由

    指定
    log4j.appender.{logging-appender-name}={some.log4j.appender.class}
    log4j.appender.{logging-appender-name}.{some-other-property}=...
    

    其中{logging-appender-name} 是您自己选择的名称(在本例中为LOG 和stdout),{some.log4j.appender.class} 是许多log4j logging appender classes 之一,例如DailyRollingFileAppenderConsoleAppender

    【讨论】:

      【解决方案3】:

      我会添加: log4j.appender.LOG.Threshold=全部

      我不确定默认值是什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-17
        • 1970-01-01
        • 1970-01-01
        • 2018-07-14
        • 2014-08-24
        • 1970-01-01
        • 2019-08-22
        • 2021-06-05
        相关资源
        最近更新 更多