使用Log4Net将当前日期附加到日志文件

Chr*_*ris 12 log4net config

我想要做的就是将当前日期和时间附加到我的日志文件中,例如:

"export_(Wed_Feb_21_2009_at_1_36_41PM)"
Run Code Online (Sandbox Code Playgroud)

这是我的app.config中的当前配置

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="c:\export.txt" />
    <appendToFile value="true" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message %stackTrace%newline" />
    </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

是否可以将日期附加到我的日志文件中,或者这是我需要在代码中执行的操作之一而不是配置?

Muh*_*wan 14

生成文件名,如:

log_2013-12-19.txt
Run Code Online (Sandbox Code Playgroud)

做出改变

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="log_"/>
    <param name="RollingStyle" value="Date"/>
    <param name="DatePattern" value="yyyy-MM-dd.\tx\t" />
    <param name="StaticLogFileName" value="false"/>
</appender>
Run Code Online (Sandbox Code Playgroud)

请注意param"DatePattern",其中.\ tx\t使文件扩展名为.txt.如果你提供.txt而不是.\ tx\t,那么如果时间是PM则保存带有扩展名.PxP的文件名,如果是AM则保存.AxA.所以我用\ t来强制写字符而不是模式.还可以添加时间以及所需的时间模式.

所以,这可能是Philipp M想要的.


Chr*_*ris 12

对于那些感兴趣的人,这是解决方案:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="C:\\Users\\chris\\Documents\\log_.txt"/>
    <param name="RollingStyle" value="Date"/>
    <param name="DatePattern" value="_(yyyy.MM.dd-hh_mm_ss)"/>
    <param name="StaticLogFileName" value="false"/>
    <maximumFileSize value="100KB" />
    <appendToFile value="true" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />           
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message %stackTrace%newline" />
    </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

以及验证这个的单元测试:

[Test]
public void TestLogger()
{
    logger.Info("Start Log");

    for (int i = 0; i < 2500; i++)
    {
        logger.Info(i);
    }

    logger.Info("End Log Log");
}
Run Code Online (Sandbox Code Playgroud)

它产生以下输出:

    log_.txt_(2009.02.19-01_16_34)
Run Code Online (Sandbox Code Playgroud)

不是我想要的,但比我以前更好.

  • 我使用了这个DatePattern:<param name ="DatePattern"value ="_(yyyy.MM.dd-hh_mm_ss).\ tx\t"/>它生成了一个这种格式的文件:log_(2011.05.05-11_28_47) .txt也将File命名为"log",而不是log.txt. (3认同)

Nun*_*o G 9

将以下内容添加到配置文件中

<appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net">
  <param name="File" value="c:\\ProjectX\\Log\\log.txt"/>
  <param name="AppendToFile" value="true"/>
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
  <param name="RollingStyle" value="Date"/>
  <param name="DatePattern" value="yyyy.MM.dd"/>
  <param name="StaticLogFileName" value="true"/>
  <layout type="log4net.Layout.PatternLayout,log4net">
    <param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

  • 我不打算将我的答案标记为已被接受,那将是不好的品味. (2认同)