2014-08-27 55 views
0

我有我的配置此附加目的地: 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>log4net的使用相同的附加目的地的配置在XML記錄到多個文件

我需要同時登錄多個文件。我創建每個日誌文件是這樣的:

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); 
    } 

,但我得到新的文件,每次我試圖登錄到文件的時間。

回答

0

登錄到不同文件的能力將成爲特定appender的一項功能。您似乎正在使用某種自定義appender,並且我不知道此appender是否具有該功能。我不認爲標準的log4net文件appender可以做到這一點。您可以通過創建一個繼承自Log4net.Appender.AppenderSkeleton的類創建自己的appender,其中有一個教程here,該教程給出瞭如何執行此操作的示例。

相關問題