Java log4j,希望在控制台中只显示调试(而不是信息),并在应用程序启动时清除日志文件

Java log4j,希望在控制台中只显示调试(而不是信息),并在应用程序启动时清除日志文件,java,log4j,Java,Log4j,我是这个log4j的新手,并设法在eclipse上安装并运行它。我了解各个级别的优先级链,现在这是我的属性文件配置: log4j.rootLogger = DEBUG, rollingFile, console log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender log4j.appender.rollingFile.Threshold=INFO log4j.appender.rollingFile.File=logs/l

我是这个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,我有两个问题
1) 每次启动应用程序时,log4j是否可以清除我的日志文件?我不知道该怎么做


2) 在配置中,我将控制台设置为打印调试,但我真正希望它打印的是纯调试消息,而不是信息消息。有没有办法控制这一切?如果阈值设置为“调试”,则仅打印调试和错误?

在代码中设置日志级别。i、 e

  private static org.apache.log4j.Logger log = Logger
                                    .getLogger(LogClass.class);
       log.setLevel(Level.Debug);
它将只显示调试消息

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


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

在您的
log4j.properties
中添加以下行,使其在每次应用程序启动时都保持新鲜

log4j.appender.rollingFile.Append=false
您也可以像这样将日志记录级别添加到自定义包中。
假设您有一个包
foo.bar.MyPack

您想将此包的日志记录级别指定为
info
,那么您必须在
log4j.properties

log4j.logger.foo.bar.MyPack=info

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

erm用于该参数名称。.我没有xml文件设置,因为我使用的是属性…可以指导我从哪里获取xml文件吗?或者我需要它,因为我认为对于独立的应用程序,属性文件应该足够了。检查链接真棒,谢谢,这工作得很好。现在我想对于调试部分,Biswajit不起作用says@user1897151看,日志级别是级联式的。如果您打印
debug
语句,则无法阻止它打印
info
/
error
语句..但您可以做的是,您可以在
log4j.properties
文件本身中为每个类指定日志记录级别..@user1897151我可以将其添加到我的回答中再次感谢,我将尝试一下..但是有一个关于我的getLogger()方法的问题。我是否应该传入getLogger(“信息”)?您应该始终将Java类的
.class
传递到要记录日志的
getLogger()