Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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:在代码中使用PatternString,而不是在配置文件中_C#_Log4net - Fatal编程技术网

C# log4net:在代码中使用PatternString,而不是在配置文件中

C# log4net:在代码中使用PatternString,而不是在配置文件中,c#,log4net,C#,Log4net,我想使用PatternString在文件名中指定一个模式,以便在C#中使用log4net滚动FileAppender。这可以在配置文件中轻松完成,在线上有很多这样的例子。然而,我想在C代码中也这样做 这是如何在配置文件中完成的: <file type="log4net.Util.PatternString" value="C:\Log\MyLogFile.[%processid].txt" /> 似乎没有一个等价物(或者我没有找到),你可以“欺骗”并自己处理替代品: ... va

我想使用PatternString在文件名中指定一个模式,以便在C#中使用log4net滚动FileAppender。这可以在配置文件中轻松完成,在线上有很多这样的例子。然而,我想在C代码中也这样做

这是如何在配置文件中完成的:

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