【问题标题】:Transitioning from log4net to log4j 2从 log4net 过渡到 log4j 2
【发布时间】:2015-04-06 18:28:41
【问题描述】:

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

有些事情我想不通,在log4j2中怎么办。

如何强制 log4j2 appender 将当前日期放入日志文件并每天创建新的日志文件?我尝试使用 TimeBasedTriggeringPolicy,它允许我将日期放在旧日志的名称中,但当前日志从来没有日期。我尝试在文件名中使用 %d{yyyyMMdd} 但它不起作用。 log4j2中的datePattern有什么等价的吗?

这是 .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>

我也不喜欢它把我的旧日志放在第一位.我可以用它做点什么吗?

提前致谢!

【问题讨论】:

    标签: logging log4j log4net log4j2


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      • 2016-08-26
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多