У меня был веб-сервис, использующий log4j, и я обновил его, чтобы использовать log4j2, чтобы я мог воспользоваться тем, как log4j2 может удалить старые файлы журнала с датой регистрации, а log4j - нет.
Журналы хранятся в шаблоне / my_log_root / yyyyMMdd / myservice.log . Соответствующий конфиг log4j.properties выглядел так:
log4j.appender.RollingAppender=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.RollingAppender.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.RollingAppender.RollingPolicy.FileNamePattern=/my_log_root/%d{yyyyMMdd}/myservice.log
Это работало хорошо, за исключением того, что старые файлы журналов никогда не удалялись. Теперь в log4j2 файл свойств выглядит так:
property.basePath = /my_log_root/
appender.rolling.type = RollingFile
appender.rolling.fileName= ${basePath}/${date:yyyyMMdd}/myservice.log
appender.rolling.filePattern= ${basePath}/%d{yyyyMMdd}/myservice.log
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.delete.type = Delete
appender.rolling.strategy.delete.basePath = ${basePath}
appender.rolling.strategy.delete.maxDepth = 3
appender.rolling.strategy.delete.ifLastModified.type = IfLastModified
appender.rolling.strategy.delete.ifLastModified.age = 30d
С помощью этого файла свойств старые файлы журнала удаляются (пустые каталоги остаются, но это не так уж плохо).
Единственная проблема - журнал текущих дней. Похоже, что log4j2 никогда не обновляет fileName после вычисления. Например, когда я перезапустил сервис 2019-06-21, он правильно записал файл в / my_log_root / 20190621 / myservice.log . Однако через несколько дней текущий журнал все еще записывает в / my_log_root / 20190621 / myservice.log . В конце дня он будет вращать журнал в соответствующий каталог с датами, а затем начнет записывать новый журнал в 21-й.
Можно ли заставить log4j2 обновлять текущее местоположение журналов каждый день или он не поддерживает это?