我在java中有一个使用log4j作为我的日志jar的应用程序,但当我尝试调试我的应用程序并打开日志文件时,我发现它很短,只有我记录的最后一行,旋转文件没有显示任何我之前见过的日志。
我的配置文件有问题吗?我有多个项目指向同一个日志文件,这可能是问题吗?
这是我的log4j.properties:
return factor >= 1.0 and factor <= 2.0
由于
答案 0 :(得分:2)
您指定的根记录器级别为ERROR,而在大多数情况下,不会有很多ERROR消息 - 可能是每个INFO级别消息的一两个,而您抑制它们:ERROR级别仅允许ERROR和要记录的FATAL消息。它会提供任何INFO,WARN,DEBUG,TRACE等级。通常,您不会在开发中使用此类设置。在生产中,你通常只会抑制一些详细的类/包,但不会像你发布的配置中那样(这里的ERROR级别适用于每个类)。
所以我想你应该在配置中用INFO替换ERROR。
更新:也可能log4j根本看不到您的配置文件。我个人多次遇到这个问题,每次我都有这样的解决方法:
public class Log4JProperties {
public static void setupLog4j(){
String log4jPathFile = Log4JProperties.class.getResource("/log4j.properties").getFile();
Properties props = new Properties();
try {
InputStream configStream = new FileInputStream(log4jPathFile);
props.load(configStream);
configStream.close();
} catch (IOException e) {
System.out.println("log4j configuration file not found");
}
LogManager.resetConfiguration();
PropertyConfigurator.configure(props);
}
}
当我从Intellij内部运行代码时,这不是必需的,但是当我使用Maven运行时,日志记录在执行开始时不调用此函数就不起作用。
答案 1 :(得分:0)
当您指定MaxBackupIndex = 2时,它将仅保留最后2个备份,如果日志文件快速填满旧备份文件将被覆盖。
您可能必须根据文件记录行为增加MaxFileSize或MaxBackupIndex ...
https://logging.apache.org/log4php/docs/appenders/rolling-file.html