log4j,想要在应用程序启动时仅在控制台中显示调试(不是信息)并清除日志文件

时间:2013-04-03 06:55:19

标签: java log4j

我是这个log4j的新手,并设法在eclipse上设置并让它运行。我理解级别中的优先级链,现在这是我的属性文件config:

log4j.rootLogger = DEBUG, rollingFile, console
log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.Threshold=INFO
log4j.appender.rollingFile.File=logs/logFile.log
log4j.appender.rollingFile.MaxFileSize=1MB
log4j.appender.rollingFile.MaxBackupIndex=5
log4j.appender.rollingFile.layout = org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c: %m%n

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

我对此log4j有2个问题  1)每次启动应用程序时,log4j是否可以清除我的日志文件?我不知道该怎么做。

2)从配置我设置我的控制台打印调试,但我真正想要打印的是纯调试消息,而不是INFO消息。反正有控制吗?如果阈值设置为debug,则只打印调试和错误?

2 个答案:

答案 0 :(得分:3)

log4j.properties中添加以下行,以便每次应用启动时都将其设为新鲜

log4j.appender.rollingFile.Append=false

您也可以像这样添加自定义程序包的日志记录级别 假设您有一个包foo.bar.MyPack
您希望将此包的日志记录级别指定为info,然后您必须在log4j.properties

中添加以下行
log4j.logger.foo.bar.MyPack=info

通过这种方式,您可以控制哪个包应该在info中,哪个包应该在debug等。

答案 1 :(得分:1)

在代码中设置loglevel。即。

  private static org.apache.log4j.Logger log = Logger
                                    .getLogger(LogClass.class);
       log.setLevel(Level.Debug);

它只会显示调试信息

<param name="Append" value="false" />

如果将append参数设置为false,则在应用程序重新启动时,基本日志文件将“重新启动”。