Я работаю над проектом на java, который использует log4j2, и хочу настроить ведение журнала так же, как и в более старом проекте на .NET с использованием log4net.
Есть некоторые вещи, которые я не могу понять, как это сделать в файле log4j2.
Как я могу заставить приложение log4j2 помещать текущую дату в файл журнала и создавать новый файл журнала каждый день? Я попытался использовать TimeBasedTriggeringPolicy, и это позволило мне указать дату в имени старых журналов, но текущие никогда не имеют даты. Я попытался использовать% d {yyyyMMdd} в fileName, но это не сработало. Есть ли эквивалент datePattern в log4j2?
Вот оригинальный аппендер из проекта .NET.
<appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<file value="c:\ConcertCTS\Logs\" />
<appendToFile value="true" />
<datePattern value="yyyyMMdd'_debug.log'" />
<staticLogFileName value="false" />
<encoding value="utf-8" />
<maximumFileSize value="50MB" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="-1" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{hh:mm:ss.fffzzz} [Thread: %-2thread] %-5level - %message%newline%exception" />
</layout>
</appender>
И вот что я придумал для log4j2.
<RollingFile name="DebugRollingAppender" fileName="/EnvoyLogs/debug.log"
filePattern="/EnvoyLogs/%d{yyyyMMdd}_debug.%i.log">
<PatternLayout>
<Pattern>%d [%t] %p %c{8.} %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="50 MB" />
</Policies>
<DefaultRolloverStrategy max="100"
compressionLevel="0" />
</RollingFile>
Мне также не нравится, что он ставит номер один в мои старые журналы. Я знаю, что это делает% i в filePattern, но я не хочу убирать его, поскольку мне нужно, чтобы журналы были разделены и пронумерованы, когда они превышают определенный размер. Могу я что-нибудь с этим сделать?
Заранее спасибо!