Vac*_*ano 8 .net logging log4net
注意:我读了这个问题和答案,它不适用于我想要的东西:Log4Net:以编程方式指定多个记录器(具有多个文件追加器)
我有一个WCF服务,这是一个"问答"式服务.它获得输入并发送输出.它根本不存在.
我需要在单独的文件中记录每个问答环节.
我有一个Appender(目前是RollingAppender).
有没有办法为每次调用我的WCF服务启动一个新的日志文件?
注意:我使用的是XML Layout,其想法是可以解析日志的输出并以图形方式显示(稍后的功能).有点像"查询计划".这是我在一个单独的文件中需要它们的另一个原因.
注意:如果需要其他原因,Log4Net XmlLayoutBase将不会删除xml页脚,直到应用程序关闭.这不是IIS中托管的WCF服务的计划事件.
这似乎为我工作:
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)