私は自分の設定にこのアペンダーを持っています:
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='+') "/>
<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);
}
しかし、ファイルにログを記録しようとするたびに、新しいファイルを取得します。