gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:55 26 4
gpt4 key购买 nike

我想使用 PatternString 在 C# 中使用 log4net 的 RollingFileAppender 的文件名中指定模式。这可以在配置文件中轻松完成,网上有很多这样的例子。但是,我想在 C# 代码中执行相同的操作。

这是在配置文件中完成的方式:

 <file type="log4net.Util.PatternString" value="C:\Log\MyLogFile.[%processid].txt" />

我下面的代码在没有配置文件的情况下完成了所有关于设置 log4net 的工作。除了上面的 PatternString 行。如何在代码中为 RollingFileAppender 指定 PatternString?

我的代码是这样的:

public class Log4NetInitializer
{
public static void Setup()
{
Hierarchy hierarchy = (Hierarchy) LogManager.GetRepository();

PatternLayout patternLayout = new PatternLayout();
patternLayout.ConversionPattern = "%date %-5level %logger [%ndc] %thread %newline%message%newline%exception";
patternLayout.ActivateOptions();

RollingFileAppender fileLogRoot = new RollingFileAppender();
fileLogRoot.AppendToFile = true;
fileLogRoot.File = @"C:\Log\MyLogFile.txt";
fileLogRoot.Layout = patternLayout;
fileLogRoot.MaxSizeRollBackups = 5;
fileLogRoot.Encoding = Encoding.UTF8;
fileLogRoot.LockingModel = new FileAppender.MinimalLock();
fileLogRoot.ActivateOptions();
hierarchy.Root.AddAppender(fileLogRoot);

hierarchy.Root.Level = Level.Info;
hierarchy.Configured = true;
}
}

最佳答案

似乎没有等效项(或者我没能找到),无论如何您都可以“作弊”并自己负责替换:

...
var pId = System.Diagnostics.Process.GetCurrentProcess().Id;
fileLogRoot.File = string.Format(@"C:\Log\MyLogFile.{0}.txt", pId);
...

关于c# - log4net:在代码中使用 PatternString,而不是在配置文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19905617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com