如何使log4j写入控制台

有什么办法可以告诉log4j将其日志写入文件和控制台? 谢谢有我的属性:

log4j.rootLogger=DEBUG,console,R log4j.rootLogger=INFO, FILE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n log4j.appender.FILE=org.apache.log4j.RollingFileAppender log4j.appender.FILE.File=log4j.log log4j.appender.FILE.MaxFileSize=512KB log4j.appender.FILE.MaxBackupIndex=3 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n 

您的根logging器定义有点困惑。 请参阅log4j文档 。

这是一个标准的Java属性文件,这意味着行被视为键=值对。 你的第二个log4j.rootLogger行覆盖第一个,这就解释了为什么你没有看到console appender上的任何东西。

您需要将两个rootLogger定义合并为一个。 它看起来像你试图让DEBUG消息去控制台和INFO消息到文件。 根logging器只能有一个级别,所以你需要改变你的configuration,以便appender有适当的级别。

虽然我没有证实这是正确的,但我猜想它会看起来像这样:

 log4j.rootLogger=DEBUG,console,file log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.file=org.apache.log4j.RollingFileAppender 

请注意,你也有一个错误的大小写 – 你在一个地方控制台小写,在另一个大写字母。

你的log4j文件应该看起来像下面的样子。

 # Define the types of logger and level of logging log4j.rootLogger = DEBUG,console, FILE # Define the File appender log4j.appender.FILE=org.apache.log4j.FileAppender # Define Console Appender log4j.appender.console=org.apache.log4j.ConsoleAppender # Define the layout for console appender. If you do not # define it, you will get an error log4j.appender.console.layout=org.apache.log4j.PatternLayout # Set the name of the file log4j.appender.FILE.File=log.out # Set the immediate flush to true (default) log4j.appender.FILE.ImmediateFlush=true # Set the threshold to debug mode log4j.appender.FILE.Threshold=debug # Set the append to false, overwrite log4j.appender.FILE.Append=false # Define the layout for file appender log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n 

这在debugging模式下适用于控制台

 log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Threshold=DEBUG log4j.appender.console.Target=System.out log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n 

访问我的博客上的java simplejavainterview