Переход с log4net на log4j 2

Я работаю над проектом на 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, но я не хочу убирать его, поскольку мне нужно, чтобы журналы были разделены и пронумерованы, когда они превышают определенный размер. Могу я что-нибудь с этим сделать?

Заранее спасибо!


person Petr Nechvátal    schedule 06.02.2015    source источник


Ответы (1)


Log4j2 в настоящее время (v 2.1) не может делать то, что вы описываете. Я рекомендую отправить запрос на функцию в системе отслеживания проблем log4j2 Jira. Мне нравится идея наличия даты в имени файла с самого начала, она имеет смысл.

person Remko Popma    schedule 08.02.2015