java – 如果没有打印日志,则停止创建日志文件

我有以下简单的Hello World:

public class App {
    private static final Logger log = Logger.getLogger(App.class);

    public static void main(String[] args) {
        System.out.println("Hello World!"); 
//        log.info("Test info log");
    }
}

并在log4j.properties中有以下内容:

# Root logger option
log4j.rootLogger=DEBUG,  file  
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=log.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

每当我运行代码时,即使记录已注释掉,也会创建空的log.log文件.

如何仅在打印日志时创建日志文件?

最佳答案 如果您知道第一个日志写入文件的位置,这可能会为此提供解决方案.您可以在需要登录时创建文件追加器.

    public static void addFileAppender() {
        FileAppender fileAppender = new FileAppender();
        fileAppender.setName("FileLogger");
        fileAppender.setFile("feature.log");
        fileAppender.setLayout(new PatternLayout("%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"));
        fileAppender.setThreshold(Level.DEBUG);
        fileAppender.setAppend(true);
        fileAppender.activateOptions();
        Logger.getRootLogger().addAppender(fileAppender);
    }
点赞