使用Log4Net以编程方式强制新的日志文件

Vac*_*ano 8 .net logging log4net

注意:我读了这个问题和答案,它不适用于我想要的东西:Log4Net:以编程方式指定多个记录器(具有多个文件追加器)

我有一个WCF服务,这是一个"问答"式服务.它获得输入并发送输出.它根本不存在.

我需要在单独的文件中记录每个问答环节.

我有一个Appender(目前是RollingAppender).

有没有办法为每次调用我的WCF服务启动一个新的日志文件?

注意:我使用的是XML Layout,其想法是可以解析日志的输出并以图形方式显示(稍后的功能).有点像"查询计划".这是我在一个单独的文件中需要它们的另一个原因.

注意:如果需要其他原因,Log4Net XmlLayoutBase将不会删除xml页脚,直到应用程序关闭.这不是IIS中托管的WCF服务的计划事件.

Vac*_*ano 6

这似乎为我工作:

public static void StartNewFile(this ILog log, string newFileName)
{
    Logger logger = (Logger) log.Logger;

    while (logger != null)
    {
        foreach (IAppender appender in logger.Appenders)
        {
            FileAppender fileAppender = appender as FileAppender;
            if (fileAppender != null)
            {
                fileAppender.File = newFileName;
                fileAppender.ActivateOptions();
            }
        }
        logger = logger.Parent;
    }
}
Run Code Online (Sandbox Code Playgroud)

它需要以下参考:

using log4net;
using log4net.Appender;
using log4net.Repository.Hierarchy;
Run Code Online (Sandbox Code Playgroud)


bas*_*gio 2

也许您可以尝试记录到数据库表并使用记录的数据记录会话 ID,而不是记录到文件。这样您就可以根据会话 ID 对表进行选择并仅查看其数据。