【问题标题】:Logback - do not create empty log files at startupLogback - 不要在启动时创建空日志文件
【发布时间】:2013-09-25 11:50:40
【问题描述】:

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

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

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

【问题讨论】:

    标签: startup logback logfile


    【解决方案1】:

    Logback 的FileAppender 没有官方支持懒惰/按需创建日志文件。

    但是,有一些已知的配置解决方法可能会达到相同的结果。更多详情请参阅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();
            }
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      • 2018-04-07
      相关资源
      最近更新 更多