从log4net转换到log4j 2

时间:2015-02-06 15:08:38

标签: logging log4j log4net log4j2

我正在研究java中的一个项目,该项目使用log4j2,并希望使用log4net设置与.NET中旧版项目相同的日志记录。

有些事情我无法弄清楚,如何在log4j2中做。

如何强制log4j2 appender将当前日期放入日志文件并每天创建新的日志文件?我尝试使用TimeBasedTriggeringPolicy,它允许我将日期放在旧日志的名称中,但当前的日志永远不会有日期。我尝试在fileName中使用%d {yyyyMMdd},但它不起作用。在log4j2中是否有一些与datePattern等效的内容?

以下是.NET项目的原始appender。

<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>

我也不喜欢它在我的旧日志中放置第一名我知道它是filePattern中的%i这是什么,但我不想把它丢弃,因为我需要将日志分割并在超过一定大小时进行编号。我能用它做些什么吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

Log4j2目前(v 2.1)不能做你所描述的。我建议在log4j2 Jira问题跟踪器上提出功能请求。我喜欢从一开始就在文件名中包含日期的想法,这非常有意义。