Logback - не создавать пустые файлы журнала при запуске


У меня есть проект с большим количеством классов "инструментов", которые имеют свои собственные журналы. Эти файлы журнала создаются при запуске приложения, но остаются пустыми, пока не будут использованы.

Можно ли сказать logback, что пустые файлы не должны создаваться при запуске? Но только когда они используются?

Почему-то я не нахожу информации на эту тему. Спасибо!

1 5

1 ответ:

В программе Logback FilAppender отсутствует официальная поддержка ленивого/по требованию создания файлов журналов.

Однако есть некоторые известные обходные пути конфигурации, которые могут достичь того же результата. Для получения более подробной информации смотрите запрос функции обратной связи 202 "FileAppender должен разрешить ленивое создание файлов" .

Мой личный фаворит-это вариант, использующий LazyFileOutputStream и пользовательскую реализацию FileAppender. Рабочая реализация LazyFileOutputStream можно найти в разделе log4j-additions Алессио Поллеро .

Код 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();
        }
    }

}