Log4net:无论日期和时间如何,都将新事件日志附加到同一日志文件中

时间:2018-03-16 09:47:23

标签: c# logging log4net

在我的应用程序中,每次应用程序启动时都会生成一个新的日志文件。但是,这不是我想要的,因为有时候,由于在不同时间打开和关闭我的应用程序10次,我最终会得到10个日志文件。

我希望我的日志文件名为Log_LOGFILECREATEDDATE_LOGFILECREATEDTIME.txt。无论我启动应用程序多少次,该应用程序中执行的所有后续事件都将记录到该日志文件中。只有在重命名或删除旧日志文件时,才应创建新的日志文件。

App.config中的代码

    <appender name="FileAppender" type="log4net.Appender.FileAppender">
        <file type="log4net.Util.PatternString" value="D:\Log_%date{yyyyMMdd_HHmmss}.txt" />
        <appendToFile value="true" />
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date{dd-MMM-yyyy HH:mm:ss,fff} %level - %message%newline" />
        </layout>
    </appender>

我如何记录我的应用程序

public class ABC{
    private static readonly log4net.ILog logMe = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    ....
    function A(int a)
    {
          ...
          logMe.Info("function A done!")
     }
}

2 个答案:

答案 0 :(得分:0)

将您的配置<file type="log4net.Util.PatternString" value="D:\Log_%date{yyyyMMdd_HHmmss}.txt" />更改为log4net.Util.PatternString" value="D:\Log_myapplicationname.txt" />

但是在制作中你最终会得到一个大文件,所以请考虑RollingFileAppender - https://logging.apache.org/log4net/release/config-examples.html

答案 1 :(得分:0)

我不相信有一种方法可以让log4net扫描目录中所有符合您&#34;模式的文件&#34;并选择最新的,这基本上是你要求它做的。每次应用程序启动时,如何使用静态文件名并记录启动时消息?