根据需要创建新的log4net日志文件

时间:2014-07-15 11:15:42

标签: c# log4net log4net-configuration

我有一些与数据库相关的功能,我不会单独记录。可以说,我启动与数据库相关的进程,对于每个进程,我需要一个名称为Processing_DB_DateTime的不同日志文件。

我只找到了如何配置log4net,以便为每个应用程序运行创建新的日志文件:

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
  <file type="log4net.Util.PatternString" value="App-%date{yyyy-MM-dd_HH-mm-ss}.log" />
  <appendToFile value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%2thread] %-5level - %message%newline" />
  </layout>
</appender>

<logger additivity="false" name="LogFileAppender">
  <level value="DEBUG"/>
  <appender-ref ref="LogFileAppender" />
</logger>

我可以用代码获取它:

LogManager.GetLogger(name)

有没有办法告诉log4net在需要时创建新文件?

1 个答案:

答案 0 :(得分:1)

您可以使用下面提到的代码

            Log4NetInitializer.init();
            log4net.Repository.Hierarchy.Hierarchy h = (log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetRepository();
            foreach (IAppender a in h.Root.Appenders)
            {
                if (a.Name == "rollingFile")
                {
                    FileAppender fa = (FileAppender)a;

                    string path = System.Configuration.ConfigurationManager.AppSettings["LogFilePath"] + "\\" + DateTime.Now.ToString("ddMMyyyy") + ".txt";
                    fa.File = path;
                    fa.ActivateOptions();

                    break;
                }
            }