C# log4net:在代码中使用PatternString,而不是在配置文件中
我想使用PatternString在文件名中指定一个模式,以便在C#中使用log4net滚动FileAppender。这可以在配置文件中轻松完成,在线上有很多这样的例子。然而,我想在C代码中也这样做 这是如何在配置文件中完成的:C# log4net:在代码中使用PatternString,而不是在配置文件中,c#,log4net,C#,Log4net,我想使用PatternString在文件名中指定一个模式,以便在C#中使用log4net滚动FileAppender。这可以在配置文件中轻松完成,在线上有很多这样的例子。然而,我想在C代码中也这样做 这是如何在配置文件中完成的: <file type="log4net.Util.PatternString" value="C:\Log\MyLogFile.[%processid].txt" /> 似乎没有一个等价物(或者我没有找到),你可以“欺骗”并自己处理替代品: ... va
<file type="log4net.Util.PatternString" value="C:\Log\MyLogFile.[%processid].txt" />
似乎没有一个等价物(或者我没有找到),你可以“欺骗”并自己处理替代品:
...
var pId = System.Diagnostics.Process.GetCurrentProcess().Id;
fileLogRoot.File = string.Format(@"C:\Log\MyLogFile.{0}.txt", pId);
...
这可能不会直接回答您的问题,但您可以通过代码中的XML配置log4net(和NLog)(而不是将XML放在配置文件中)。不久前我发布了一个关于它的问题/答案 以下是一个链接:
我的文章是从预定义/存储XML的角度(在我的例子中,我们的项目考虑定义XML配置并将其存储在数据库中)、读取XML(作为字符串)并直接在log4net或NLog配置对象上进行设置。实际上,我们从未使用这种方法来实现任何东西,但在我有限的测试中,它似乎工作正常。log4net.Util中的PatternString类允许您像在xml配置文件中编写模式字符串那样解析模式字符串
fileLogRoot.File = new PatternString(@"C:\Log\MyLogFile.[%processid].txt").Format();
你能解释一下为什么这个代码能回答这个问题吗?代码唯一的答案是,因为他们不教解决方案。
fileLogRoot.File = new PatternString(@"C:\Log\MyLogFile.[%processid].txt").Format();