Log4net滚动每日文件名,文件名中包含日期

JL.*_*JL. 116 c# logging log4net filenames

我想以文件命名为例:

dd.mm.yyyy.log

log4net怎么可能这样?

小智 196

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
  <file value="logs\" />
  <datePattern value="dd.MM.yyyy'.log'" />
  <staticLogFileName value="false" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="5MB" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

  • 我认为你应该像 @Mun 那样强调解决问题的参数的要点。不过,我也对你的回答投了赞成票。 (2认同)
  • 对我有用的是 datePattern 元素与 staticLogFileName 元素(并注意 file 元素的 value 属性)结合使用 (2认同)

Mun*_*Mun 99

在Log4net配置文件中,将以下参数与RollingFileAppender一起使用:

<param name="DatePattern" value="dd.MM.yyyy'.log'" />
Run Code Online (Sandbox Code Playgroud)

  • 出现这个已被提升为配置元素:<datePattern value ="dd.MM.yyyy'.log'"/>干杯! (27认同)
  • @mstaessen` <preserveLogFileNameExtension value ="true"/>`是正确的语法,这是一个很好的答案.我可以问,损失是怎么发生的? (3认同)

小智 31

对于RollingLogFileAppender,您还需要以下元素和值:

<rollingStyle value="Date" />
<staticLogFileName value="false" />
Run Code Online (Sandbox Code Playgroud)

  • 这有效,但在文件扩展名后附加日期.例如,我得到像Error.log20111104这样的日志文件 - 有没有人知道格式化文件名的方法好一点? (3认同)

小智 21

使用Log4Net 1.2.13,我们使用以下配置设置来允许文件名中的日期时间.

<file type="log4net.Util.PatternString" value="E:/logname-%utcdate{yyyy-MM-dd}.txt" />

哪个将提供以下约定的文件: logname-2015-04-17.txt

有了它,通常最好有以下内容,以确保您每天持有1个日志.

<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />
Run Code Online (Sandbox Code Playgroud)

如果文件大小是一个问题,以下允许500个文件,大小为5MB,直到新的一天产生.CountDirection允许不再是最新的文件的升序或降序编号.

 <maxSizeRollBackups value="500" />
 <maximumFileSize value="5MB" />
 <rollingStyle value="Composite" />
 <datePattern value="yyyyMMdd" />
 <CountDirection value="1"/>
 <staticLogFileName value="true" />
Run Code Online (Sandbox Code Playgroud)


Nja*_*jal 16

我最终使用(注意'.log'文件名和'myfilename_'周围的单引号):

  <rollingStyle value="Date" />
  <datePattern value="'myfilename_'yyyy-MM-dd"/>
  <preserveLogFileNameExtension value="true" />
  <staticLogFileName value="false" />
  <file type="log4net.Util.PatternString" value="c:\\Logs\\.log" />
Run Code Online (Sandbox Code Playgroud)

这给了我:

myfilename_2015-09-22.log
myfilename_2015-09-23.log
.
.
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 9

我已经尝试了所有的答案,但总有一些东西丢失了,而且我没有按预期运作.

然后我用每个答案中给出的提示进行了一些实验,并通过以下设置成功:

<appender name="RollingActivityLog" type="log4net.Appender.RollingFileAppender">
  <file type="log4net.Util.PatternString" value="C:\temp\LOG4NET_Sample_Activity.log" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <staticLogFileName value="false" />
  <preserveLogFileNameExtension value="true" />
  <datePattern value="-yyyyMMdd" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date %-5level - %message%newline" />
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

其他参数组合的问题是最新文件没有时间模式,或者附加时间模式,因为每天.log20171215创建一个新文件时间(和一个新文件类型!) - 或者两个问题都出现了.

现在使用此设置,您将获得以下文件:

LOG4NET_Sample_Activity-20171215.log

这就是我想要的.总结一下:

  • 不要将日期模式放在<file value=...属性中,只需在中定义它即可datePattern.

  • 确保将preserveLogFileNameExtension value属性设置为true.

  • staticLogFileName属性设置为false.


Fou*_*rat 5

保留文件扩展名:

<log4net>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="D:\\LogFolder\\%date{yyyyMM}\\SchT.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <maximumFileSize value="30MB" />
      <staticLogFileName value="true" />
      <preserveLogFileNameExtension value="true"/>
      <datePattern value="ddMMyyyy" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
  </log4net>
Run Code Online (Sandbox Code Playgroud)