Можно ли настроить log4j для создания нового файла при каждом запуске приложения?

Например, при первом запуске приложения (или сразу после очистки каталога / logs) я хочу, чтобы log4j записывал журналы приложения в файл с именем log.0. Затем я выхожу из приложения и перезапускаю его, я хочу, чтобы журналы записывались в журнал.1. И так далее.

Я хотел бы сохранить это в файле конфигурации, хотя, если я не могу, я думаю, я всегда могу сделать это в своем приложении, когда настроен log4j.

Это возможно? Если да, то как?


person Thomas Owens    schedule 18.09.2009    source источник


Ответы (4)


Может быть это то, что ты ищешь

http://veerasundar.com/blog/2009/08/how-to-create-a-new-log-file-for-each-time-the-application-runs/

** Изменить: ** У меня есть еще одно решение! Но не знаю, работает это или нет, но вы можете попробовать http://www.mail-archive.com/[email protected]/msg02132.html

person Umesh    schedule 18.09.2009
comment
Да, я думаю, что создание собственного приложения - лучший способ. - person Pascal Thivent; 18.09.2009
comment
Опишите, как это сделать. Не ссылка на случайный блог will-404-скоро. - person Matthieu; 12.03.2018

Решение с log4j2:

        <RollingFile name="RollingFile" fileName="${log-path}/GScraper.log"
                 filePattern="${log-path}/GScraper_%d{yyyy-MM-dd}_%i.log">
        <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%level\t%d{yyyy-MM-dd HH:mm:ss} %c: %m%n</pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            <SizeBasedTriggeringPolicy size="32 MB" />
            <OnStartupTriggeringPolicy/>
        </Policies>
    </RollingFile>

Обратите внимание на OnStartupTriggeringPolicy и % i в filePattern. Таким образом, Log4j будет создавать новый файл журнала с индексом каждый раз, когда вы запускаете приложение.

person Nazar Ostryzhniuk    schedule 22.09.2015

См. Руководство по logback для файлов с уникальными именами (по метке времени).

person Ceki    schedule 18.09.2009
comment
Разве это не ответ для другого фреймворка, а не для самого log4j? По крайней мере, у меня он не работает с log4j: `log4j: WARN Непрерывная ошибка синтаксического анализа 11 и столбец 61 log4j: WARN Должна быть объявлена ​​временная метка типа элемента. log4j: WARN Непрерывная ошибка синтаксического анализа 18 и столбец 16 log4j: WARN Содержимое appender типа элемента должно совпадать (errorHandler?, param *, layout?, filter *, appender-ref *). ´ - person Henning; 19.08.2011

Я не думаю, что это возможно с Log4j. Возможно, когда вы закроете приложение, вы сможете переименовать файл .log, чтобы при следующем запуске создавался новый файл журнала.

person Karl    schedule 18.09.2009
comment
Если это так, я несколько разочарован. log4j отвечает всем моим потребностям и хорошо работает. Я просто хочу иметь возможность группировать свои журналы по исполнению, а не по дате или размеру файла. - person Thomas Owens; 18.09.2009
comment
Однажды я написал дополнительный адаптер для log4j (длинная история), исходный код действительно легко читается и хорошо документирован, так что реализация этой функции не займет много времени :-) - person Karl; 21.09.2009