Logback - 不要在启动时创建空日志文件

时间:2013-09-20 07:10:11

标签: startup logback logfile

我有一个项目,其中包含许多具有自己日志记录的“工具”类。这些日志文件是在应用程序启动时创建的,但在使用之前保持为空。

是否可以告诉logback在启动时不应创建空文件?但只有当它们被使用时?

不知何故,我找不到有关此主题的信息。谢谢!

1 个答案:

答案 0 :(得分:3)

在Logback的FilAppender中,没有正式支持懒惰/按需创建日志文件。

但是,有一些已知的配置解决方法可能会达到相同的结果。有关详细信息,请参阅Logback feature request 202 "FileAppender should permit lazy file creation"

我个人最喜欢的是使用LazyFileOutputStream和FileAppender的自定义实现的变体。 LazyFileOutputStream can be found in Alessio Pollero's log4j-additions section

的有效实施

LazyFileappender代码非常简单:

public class LazyFileAppender<E> extends FileAppender<E> {

    @Override
    public void openFile(String file_name) throws IOException {
        lock.lock();
        try {
            File file = new File(file_name);
            boolean result = FileUtil.createMissingParentDirectories(file);
            if (!result) {
                addError("Failed to create parent directories for [" + file.getAbsolutePath() + "]");
            }

            LazyFileOutputStream lazyFos = new LazyFileOutputStream(file, append);
            setOutputStream(lazyFos);
        } finally {
            lock.unlock();
        }
    }

}