Log4Net:滚动文件记录器,定义扩展名

71

我希望我的日志文件看起来像这样:2009-02-13.log

但问题是我似乎找不到任何方法添加 .log 扩展名。

我尝试过很多事情,但没有什么帮助。 这是我迄今为止的代码:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs/Log4Net/.log"/>
    <appendToFile value="true"/>
    <rollingStyle value="Date"/>
    <datePattern value="yyyy-MM-dd" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
    </layout>
</appender>
5个回答

122

其他答案在datePattern中会忽略"log"中的"g",因为"g"是一个特殊字符。虽然这样做没有问题,但我更喜欢将所有非日期字符放在单引号中,像这样:

<datePattern value="yyyy-MM-dd'.log'" />

这样做可以得到相同的结果,但更易于管理。这样,我就不必回忆哪些特定字符对于datePattern是特殊的(列表又长又杂)。如果我忘记了一个字符,那么我不会冒着损坏文件名的风险;它们都会被一起很好地转义。


1
那么,您对此有什么关于<file />的价值? - ssmith
2
@ssmith:在 <file /> 标签中去掉 .log。Log4Net 会将日期模式追加到文件值上,因此您需要在前者上保留文件扩展名。 - Craig Walker
由于我想监视当天可预测的日志文件名,所以我使用 file 值 = logs/server.log ... 然后为 datePattern 值添加 yyyy 前面的句点。当前日志是 server.log,昨天的日志是 server.log.2014-08-13.log...虽然不是理想的解决方案,但因为我还没有找到其他方法来解决。 - Sun

60
尝试在日期模式中添加.log扩展名,同时从文件属性中删除它。
<datePattern value="yyyy-MM-dd.lo\g"/>
...
<staticLogFileName value="false" />

8
还要记得添加 <staticLogFileName value="false" />。 - Chris Klepeis

21

log4net现在还提供了一个PreserveLogFileNameExtension属性,可以强制将.log扩展名放在复合文件名的末尾(包括日期模式和/或大小序列号):

<file value="LogFiles/.log"/>
<preserveLogFileNameExtension value="true" />
<datePattern value="yyyy-MM-dd" />

必须使用较新的版本吗?我无法在我的系统上使该参数起作用。最终我不得不两次使用.log,一次在文件值中,另一次在日期模式中 :( - Sun
1
我相信它是在1.2.12版本中添加的。 - Christopher G. Lewis

8

在您的日期模式末尾添加“.lo\g”


4
这是我的日志文件xml配置。 "file"标签中包含日志文件的路径。
这将在我的网站根目录下的"LogFiles"文件夹中创建一个名为“2012-11-22.log”的日志文件。
注意:一定要先确保该文件夹存在!
<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,     log4net"/>
  </configSections>
  <log4net>
    <root>
      <level value="INFO"/>
      <appender-ref ref="RollingFileAppender"/>
    </root>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="LogFiles/"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <maxSizeRollBackups value="5"/>
      <maximumFileSize value="10MB"/>
      <datePattern value="yyyy-MM-dd'.log'" />
      <staticLogFileName value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception"/>
      </layout>
    </appender>
  </log4net>
</configuration>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接