12

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

"export_(Wed_Feb_21_2009_at_1_36_41PM)"

这是我的 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>

是否可以将日期附加到我的日志文件中,或者它是我需要在代码中而不是配置中做的事情之一?

4

5 回答 5

17

生成文件名,如:

log_2013-12-19.txt

做出改变

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

请注意参数“DatePattern”,其中 .\tx\t 使文件扩展名为 .txt。如果您提供 .txt 而不是 .\tx\t,那么如果时间是 PM,则这将保存带有扩展名 .PxP 的文件名,如果是 AM,则将保存为 .AxA。所以我用 \t 来强制写字符而不是模式。也可以添加时间以及需要什么时间模式。

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

于 2013-12-19T07:49:18.543 回答
13

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

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

以及验证这一点的单元测试:

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

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

    logger.Info("End Log Log");
}

它产生以下输出:

    log_.txt_(2009.02.19-01_16_34)

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

于 2009-02-19T20:17:57.470 回答
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>
于 2009-02-12T13:02:41.280 回答
3

如果您想使用 .log 后缀(生成类似 myLogPrefix.20160309.log 的文件),请使用:

<appender name="GeofenceFileAppender" type="log4net.Appender.RollingFileAppender">
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <file type="log4net.Util.PatternString" value="C:\\Logs\\myLogPrefix" />
        <appendToFile value="true" />
        <rollingStyle value="Date" />
        <datePattern value=".yyyyMMdd.lo'g'" />
        <staticLogFileName value ="false" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger – %message%newline" />
        </layout>
</appender>

陷阱是staticLogFileName = false允许您即时生成汇总(而不是必须重新启动服务\服务器),'g'并且datepattern因为gdatePattern. log4net 网站上没有很好的文档来研究这个,所以它真的是从反复试验和搜索其他人的经验中获得的智慧。

于 2016-03-08T08:29:58.877 回答
1

使用StaticLogFileName

<param name="StaticLogFileName" value="true"/>
于 2009-02-10T19:41:30.967 回答