我有一个全局记录器,在几个类中使用,以便我可以将所有内容记录在一个文件中。一切正常,但我希望能够从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
}
}
答案 0 :(得分:2)
LogManager.getLogger("GLOBAL")
在读取log4j配置并初始化时创建日志文件。所以,当你在Configurator.setLevel("GLOBAL", Level.OFF);
时,你无法阻止它这样做。 IMO,你有两个选择:
1)优雅方式:通过在运行时LogManager.getLogManager().readConfiguration
传递配置来初始化代码中的LogManager。您可以参考here进行详细实施。
2)丑陋的方式:设置LEVEL.OFF时删除日志文件