为什么要删除我的日志?

时间:2016-11-08 01:02:50

标签: java log4j

我在java中有一个使用log4j作为我的日志jar的应用程序,但当我尝试调试我的应用程序并打开日志文件时,我发现它很短,只有我记录的最后一行,旋转文件没有显示任何我之前见过的日志。

我的配置文件有问题吗?我有多个项目指向同一个日志文件,这可能是问题吗?

这是我的log4j.properties:

            return factor >= 1.0 and factor <= 2.0

由于

2 个答案:

答案 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