В Log4j2, используя приложение RollingFile, как добавить уникальный идентификатор к имени свернутого файла?

Я использую приложение RollingFile с политиками триггеров времени (ежедневно) и размера. FilePattern (используемый для переименования файла при ролловере) содержит:

filePattern="app-${sys:node}-%d{yyyyMMdd}-%i" 

Я хотел бы добавить случайный идентификатор (в идеале uuid) к имени свернутого файла. Обычно шаблона даты и целочисленного счетчика достаточно для уникальной идентификации файла ... но в моей ситуации журналы автоматически собираются через ftp (и удаляются при успешной передаче). Из-за удаления файла можно получить дубликат файла (на ftp, а не локально) ... потому что счетчик% i основан на файлах, которые уже существуют локально.

Например, имея:

  • app-20180205-1.log
  • app-20180205-2.log
  • app-20180205-3.log

и log4j2 в настоящее время пишет, скажем: /tmp/app.log

Если 3 уже созданных файла переданы по ftp и удалены, при следующем ролловере у меня будет app-20180205-1.log вместо app-20180205-4.log. Этого я пытаюсь избежать.

Какие-нибудь решения?


person Mihnea R    schedule 05.02.2018    source источник
comment
Может, будет проще, удалить целый день, только чтобы этого не случилось ...   -  person Betlista    schedule 05.02.2018


Ответы (1)


Вместо UUID вы можете использовать более конкретный шаблон файла даты и времени с более конкретным разрешением времени, например:

filePattern="logs/log4j2-demo-%d{yyyy-MM-dd-HH-mm-ss}-%i.log

Когда ваши политики времени / триггера соблюдаются, он создаст новый файл с этой более конкретной меткой даты и времени, которая всегда должна быть уникальной в соответствии с указанным вами разрешением времени.

person Dovmo    schedule 07.02.2018