gpt4 book ai didi

c# - 如何使用 NLog 记录到两个不同的文件

转载 作者:行者123 更新时间:2023-12-03 19:34:28 43 4
gpt4 key购买 nike

我有以下类(class):

private string name;
private Logger logger;
private LogLevel lvl;
private LoggingConfiguration config;

public Logger(string name, string path, string format, LogLevel lvl)
{
this.name = name;

FileTarget fileTarget = new FileTarget();
fileTarget.FileName = path;
fileTarget.Layout = format;

this.lvl = lvl;
LoggingRule rule = new LoggingRule(name, lvl, fileTarget);

config = new LoggingConfiguration();
config.AddTarget(name, fileTarget);
config.LoggingRules.Add(rule);

LogManager.Configuration = config;

logger = LogManager.GetLogger(this.name);
logger.Trace("test");
}

我像这样创建两个不同的记录器:

Logger("log1", "c:\\test\\log1.txt", ${message}, LogLevel.Debug);
Logger("log2", "c:\\test\\log2.txt", ${message}, LogLevel.Debug);

这两个文件都是用字符串 test 创建的。但是当我尝试使用(类方法)记录消息时:

public void Log(string msg)
{
logger = NLog.LogManager.GetLogger(name);
//LogManager.Configuration = config;
//LogManager.Configuration.Reload();
logger.Log(lvl, msg);
}

该消息仅记录在第二个文件中。我做错了什么?

最佳答案

我不太确定,但据我所知,LogManager.Configuration 是一种全局性的,用于此后创建的所有记录器。因此,对 Logger() 函数的第二次调用会覆盖您在第一次调用期间所做的配置设置。这就是为什么日志记录只发生在后面的文件中。

要解决此问题,您必须先为它们创建文件目标和规则,然后将目标和规则添加到日志记录配置中。

所以基本方法(没有单独的函数)应该看起来像这样:(注意:代码尚未经过测试,所以复制和粘贴需要您自担风险!)

FileTarget fileTarget1 = new FileTarget();
fileTarget1.FileName = "C:\\foo\\bar1.txt";
fileTarget1.Layout = "${message}";

FileTarget fileTarget2 = new FileTarget();
fileTarget2.FileName = "C:\\foo\\bar2.txt";
fileTarget2.Layout = "${message}";

LoggingRule rule1 = new LoggingRule("log1", LogLevel.Debug, fileTarget1);
LoggingRule rule2 = new LoggingRule("log2", LogLevel.Debug, fileTarget2);

config = new LoggingConfiguration();
config.AddTarget("log1", fileTarget1);
config.LoggingRules.Add(rule1);
config.AddTarget("log2", fileTarget2);
config.LoggingRules.Add(rule2);

LogManager.Configuration = config;

logger = LogManager.GetLogger(this.name);
logger.Trace("test");

我将把如何将其放入某种可重用的函数/方法中的细节留给读者作为练习。 ;)

关于c# - 如何使用 NLog 记录到两个不同的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40813789/

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