即使Level为OFF,也会创建log4j2日志文件?

时间:2017-05-31 21:32:55

标签: java logging log4j2

我有一个全局记录器,在几个类中使用,以便我可以将所有内容记录在一个文件中。一切正常,但我希望能够从UI禁用Logger。我尝试将Level设置为OFF,如下所示,这会停止记录,但仍会创建一个空的日志文件(我正在使用带有记录器的File Appender)。

当Level为OFF时,有没有简单的方法可以避免创建日志文件?

public class Main {
    public static Logger LOGGER = LogManager.getLogger("GLOBAL");
    public static void main(String[] args) {
        Configurator.setLevel("GLOBAL", Level.OFF);
        //Rest of code

    }
}

1 个答案:

答案 0 :(得分:2)

LogManager.getLogger("GLOBAL")在读取log4j配置并初始化时创建日志文件。所以,当你在Configurator.setLevel("GLOBAL", Level.OFF);时,你无法阻止它这样做。 IMO,你有两个选择:

1)优雅方式:通过在运行时LogManager.getLogManager().readConfiguration传递配置来初始化代码中的LogManager。您可以参考here进行详细实施。

2)丑陋的方式:设置LEVEL.OFF时删除日志文件