如何将log4j记录到文件并打印到控制台

时间:2011-05-09 21:03:27

标签: java log4j

我可以让日志进入控制台,但我似乎无法进入日志文件。这是我的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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

log4j.rootLogger=DEBUG, LOG , stdout

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

LOG是日志记录附加程序的名称

stdout是第二个appender的名称

日志记录追加者由

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

{logging-appender-name}是您自己选择的名称(在本例中为LOG和标准输出),而{some.log4j.appender.class}是众多log4j logging appender classes之一,例如DailyRollingFileAppender或{{ 3}}

答案 2 :(得分:0)

我会补充说: log4j.appender.LOG.Threshold = ALL

我不确定默认值是什么。