Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Log4net使用xml中相同的appender配置来记录多个文件_C#_Log4net_Log4net Appender - Fatal编程技术网

C# Log4net使用xml中相同的appender配置来记录多个文件

C# Log4net使用xml中相同的appender配置来记录多个文件,c#,log4net,log4net-appender,C#,Log4net,Log4net Appender,我的配置中有一个附录: appender name=“TC3DataLogger”type=“Intel.STHI.Device.ContextLog.TC3DataLogger”> 我需要同时登录到多个文件。我通过以下方式创建每个日志文件: public void CreateNewLogFile(string FileName) { IAppender[] appenders = LogManager.GetLogger(TC3Logger.GetType()).L

我的配置中有一个附录:
appender name=“TC3DataLogger”type=“Intel.STHI.Device.ContextLog.TC3DataLogger”>

我需要同时登录到多个文件。我通过以下方式创建每个日志文件:

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

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

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

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