gpt4 book ai didi

c# - 如何使用 config c# 中的规则在 NLog 中发送特定功能

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

我有一个这样的 Logger 类:

public class Logger : ILogging
{
private ILogger _logger;

public Logger()
{
_logger = LoggerFactory<ILogging>.Resolve();
}

public void log(string priority, string message)
{
//to do the code here
}

这是我的配置文件:

 <rules >
<logger name="Priority1" minlevel="Error" writeTo="logfile" />
<logger name="Priority2" minlevel="Warn" writeTo="logfile" />
<logger name="Priority3" minlevel="Debug" writeTo="logfile" />
<logger name="Priority4" minlevel="Trace" writeTo="logfile" />

我想通过“名称”规则写入 nlog 中的特定函数例如:如果用户调用

 logger.log("Priority1","errorMessage");

这个函数知道去寻找 logger.error("error")

我试图在谷歌中看到但我没有看到任何好的解决方案

更新

      public void log( Priority priority, string message)
{
string currentLogLevel;
_logger = NLog.LogManager.GetLogger(priority.ToString());
LogEventInfo logEvent = new LogEventInfo(currentLogLevel , _logger.Name, message);
_logger.Log(logEvent);
}

最佳答案

根据对 OP 的评论:

代替

public void log( Priority priority, string message)
{
string currentLogLevel; // <= This can't work
_logger = NLog.LogManager.GetLogger(priority.ToString());
LogEventInfo logEvent = new LogEventInfo(currentLogLevel , _logger.Name, message);
_logger.Log(logEvent);
}

public void log( Priority priority, string message)
{
LogLevel logLevel;

switch(priority)
{
case Priority.Priority1 : loglevel = LogLevel.Error; break;
case Priority.Priority2 : loglevel = LogLevel.Warn; break;
case Priority.Priority3 : loglevel = LogLevel.Debug; break;
case Priority.Priority4 : loglevel = LogLevel.Trace; break;
default: loglevel = LogLevel.None; break;
}

_logger = NLog.LogManager.GetLogger(priority.ToString());
LogEventInfo logEvent = new LogEventInfo(logLevel , _logger.Name, message);
_logger.Log(logEvent);
}

开始。

但我也建议只使用一个记录器并将其作为包装器的静态字段。

我个人通常使用不带包装器的 NLog。这让我可以自由地获取基于类的记录器和专门的记录器,我可以在配置文件中路由和过滤它们。但是如果您需要或想要使用包装器,我会考虑将一些上下文与消息一起传递,如果您没有在消息本身中这样做的话。

关于c# - 如何使用 config c# 中的规则在 NLog 中发送特定功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49425217/

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