#log4j #log4j2
#log4j #log4j2
Вопрос:
В log4j2 я могу легко войти в файл на основе даты в соответствии со следующей строкой.
<File name="file" fileName="logs/te_${date:yyyy}-${date:MM}-${date:dd}_output.log" append="true">
В некоторых отраслях существует концепция сеанса, который длится до полуночи.
Скажем, кинотеатр, в некоторых странах фильмы начинаются после полуночи.
Итак, я хотел бы, чтобы журналы записывались как сеансы, которые заканчивались / начинались в 4 утра.
В любое время суток, когда вы запускаете программу, она проверяет:
// pseudo code
if time < 04:00 then
session = today.minusDays(1)
else
session = today
Итак, чтобы было понятно, имя файла журнала при запуске программы будет следующим:
# starting datetime | logfile name
2020-05-20 22:00 -> "2020-05-20_output.log"
2020-05-21 01:00 -> "2020-05-20_output.log"
2020-05-21 03:00 -> "2020-05-20_output.log"
2020-05-21 05:00 -> "2020-05-21_output.log"
В любом случае я могу сделать это на log4j2.xml файл?
Ответ №1:
Если не совсем ясно, что вы хотите, чтобы произошло в 4 утра. Похоже, вы хотите начать запись в другой файл. Если это так, вы хотите использовать RollingFileAppender с CronTriggeringPolicy.
<RollingFile name="RollingFile" filePattern="logs/te_%d{yyyy:MM:dd}_output.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<CronTriggeringPolicy schedule="0 0 4 * * ?"/>
</RollingFile>
Комментарии:
1. спасибо за ответ, но это не то, что мне нужно. Это позволяет запустить программу за один день, но назначить файл журнала на другой день. Я обновил вопрос лучшим примером. До 4 утра я все еще хочу, чтобы программа регистрировалась в журнале предыдущего дня. Даже если я запускаю программу в 1 час ночи. Ваш пример сработал бы, если бы он работал непрерывно, что не так. Извините, следовало бы дать более подробную информацию в вопросе.