Преминаване от log4net към log4j 2

Работя върху проект в java, който използва log4j2 и искам да настроя регистриране по същия начин, както имах в по-стар проект в .NET, използвайки log4net.

Има някои неща, които не мога да разбера, как да направя в log4j2.

Как мога да принудя log4j2 appender да постави текущата дата в лог файла и да създава нов лог файл всеки ден? Опитах се да използвам TimeBasedTriggeringPolicy и това ми позволи да поставя дата в името на по-старите регистрационни файлове, но текущите никога нямат датата. Опитах да използвам %d{yyyyMMdd} във fileName, но не се получи. Има ли някакъв еквивалент на datePattern в log4j2?

Ето оригиналния appender от .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