2011-05-09 81 views
2

我可以使日志去控制台,但我似乎无法使它转到日志文件。这是我的properties文件。如何使log4j记录到一个文件并打印到控制台

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 
+1

不\ \必须\\?这在大多数属性文件中都是如此 – MJB 2011-05-10 06:06:00

+0

@MJB:谢谢。你的建议解决了我的问题。你能否将你的评论格式化为一个单独的答案,以便我可以接受它。 – 2011-05-16 18:18:22

+0

完成后见... – MJB 2011-05-16 19:13:10

回答

5

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

0

,我会说: log4j.appender.LOG.Threshold = ALL

我不知道默认的是什么。

1

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

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