【问题标题】:Log4net use the same appender config in xml to log to multiple filesLog4net 在 xml 中使用相同的 appender 配置来记录到多个文件
【发布时间】:2014-08-28 05:30:59
【问题描述】:

我的配置中有这个附加程序: appender name="TC3DataLogger" type="Intel.STHI.Device.ContextLog.TC3DataLogger" > <file value="null" /> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <appendToFile value="true" /> <rollingStyle value="Once" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="100MB" /> <datePattern value="-yyyyMMdd-HHmm" /> <layout type="log4net.Layout.PatternLayout"> <header value="Date, CS, FeedbackInput, PWM_Duty_Cycle (Cold='-' Hot='+')&#13;&#10;"/> <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss}, %message%newline" /> </layout> <filter type="log4net.Filter.LoggerMatchFilter"> <acceptOnMatch value="true" /> <LoggerToMatch value="Intel.STHI.Device.ContextLog.TC3DataLogger" /> </filter> <filter type="log4net.Filter.DenyAllFilter" /> </appender>

我需要同时登录多个文件。我以这种方式创建每个日志文件:

public void CreateNewLogFile(string FileName)
    {
        IAppender[] appenders = LogManager.GetLogger(TC3Logger.GetType()).Logger.Repository.GetAppenders();

        foreach (TC3DataLogger rfa in appenders.OfType<TC3DataLogger>())
        {
            rfa.File = FileName;
            rfa.MaxFileSize = MaxFileSizeKB;
            //sub system that the configuration for this appender has changed. 
            rfa.ActivateOptions();
            TC3datalogRFA = rfa;
        }
    }

现在每次我创建一个新的日志文件时,我所有的其他记录器都会登录到这个文件。如何同时登录到不同的文件? 我试过这个:

public void WriteToLog(int CSNum, string Message, string LogfileName)
    {
        if (!TC3LogsDictionary[CSNum].Logging) return;
        TC3LogsDictionary[CSNum].TC3datalogRFA.File = TC3LogsDictionary[CSNum].LogFileName;
        TC3LogsDictionary[CSNum].TC3datalogRFA.ActivateOptions();
        TC3LogsDictionary[CSNum].TC3Logger.Info(CSNum, Message);
    }

但每次我尝试登录文件时都会得到新文件。

【问题讨论】:

    标签: c# log4net log4net-appender


    【解决方案1】:

    记录到不同文件的能力将是特定附加程序的一项功能。您似乎正在使用某种自定义附加程序,我不知道这个附加程序是否具有该功能。我认为任何一个标准的 log4net 文件附加程序都不能做到这一点。您可以通过创建一个继承自 Log4net.Appender.AppenderSkeleton 的类来创建自己的附加程序,有一个教程 here 给出了如何执行此操作的示例。

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      相关资源
      最近更新 更多