gpt4 book ai didi

c# - NLog 到企业库

转载 作者:行者123 更新时间:2023-11-30 15:09:43 24 4
gpt4 key购买 nike

使用下面使用 NLog 的代码片段,如何使用 Enterprise Library 5.0 Logging 完成此操作?

    private Logger _logger;
public NLogger() {
_logger = LogManager.GetCurrentClassLogger();
}

public void Info(string message) {
_logger.Info(message);
}

public void Warn(string message) {
_logger.Warn(message);
}

最佳答案

您正在寻找这样的东西:

private LogWriter _logger;
public void EntLibLogger()
{
_logger = EnterpriseLibraryContainer.Current.GetInstance<LogWriter>(); ;
}

public void Info(string message)
{
LogEntry log = new LogEntry();
log.Message = message;
log.Categories.Add("Information");
log.Priority = Priority.Normal;
log.Severity = TraceEventType.Information;
_logger.Write(log);
}

public void Warn(string message)
{
LogEntry log = new LogEntry();
log.Message = message;
log.Categories.Add("Warning");
log.Priority = Priority.High;
log.Severity = TraceEventType.Warning;
_logger.Write(log);
}

public void Error(string message, int EventID, Dictionary<String,String> dictMessage)
{
LogEntry log = new LogEntry();
log.Message = message;
log.Categories.Add("Error");
log.Priority = Priority.Highest;
log.Severity = TraceEventType.Error;
log.EventId = EventID;
_logger.Write(log, dictMessage);
}

在 app.config 中设置配置设置是一个棘手的问题。

我的建议是使 EventID 每次调用都具有全局唯一性(系统文档始终包含带有这些编号的电子表格以及这些编号所在的项目/文件/行号)。这样,如果应用程序正在生产中,您很可能会从日志中获得 1 行,并且您必须能够识别此日志记录调用来自源中的何处。为了调试目的,我通常会为局部变量及其值添加一个字典。一个地方想要记录以前的值,所以审计事件总是包含一个字典。

默认情况下,它在数据库中记录的方式,Entlib 将“category”作为字符串存储在类别和日志表中。严重性、优先级和 EventID 存储为整数。 FormattedMessage 是一大堆在格式化程序部分中定义的东西,还包括字典的内容(键值对)——如果使用的话。

类别是一个集合,因为有时您可能想要在数据库中记录所有内容,但某些消息也会写入事件日志和/或向开发人员发送一条文本消息以使他们的腰部垂直尽快工作。我工作的一个地方使用 Iridium 传呼机让指定人员知道服务器已关闭/遇到麻烦,因为他们喜欢爬山,所以他们经常在没有手机信号覆盖的地方。

关于c# - NLog 到企业库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4119529/

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