4

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

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)从配置中我设置我的控制台打印调试但我真正想要它打印的是纯调试消息而不是信息消息。有没有办法控制这个?如果阈值设置为调试,则仅打印调试和错误?

4

2 回答 2

3

在您的中添加以下行log4j.properties以使其在每次应用程序启动时都焕然一新

log4j.appender.rollingFile.Append=false

您也可以像这样将日志记录级别添加到您的自定义包中。
假设你有一个包foo.bar.MyPack
您想为此包指定日志记录级别,因为info您必须在您的log4j.properties

log4j.logger.foo.bar.MyPack=info

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

于 2013-04-03T07:20:58.547 回答
1

在您的代码中设置日志级别。IE

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

它只会显示调试消息

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

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

于 2013-04-03T07:06:00.633 回答