如何使用NLOG日志处理自己的错误代码



嗨,我试着记录Log4Net 中的错误代码

$logger.Error(3, "Converting task invocator's config file failed, exiting...")

如果发生这个错误,它只记录错误代码"0";3〃;但不是消息。看起来它将错误代码作为文本,并自行丢弃消息。

事件日志-->[TaskV1](Automation_TaskInvocator.ps1-1.0.0.0([][错误]3->消息丢失数据库和文件也有同样的问题。

问题是我该如何处理。它应该将错误代码作为INT,将消息作为文本。我不想查看我的数百行代码,将错误代码添加到消息中。尤其是因为我在数据库中有一个额外的错误代码列。

希望有人能带我走正确的路

非常感谢

向致以最良好的问候

NLog ILogger的自定义扩展方法示例(未使用编译器进行测试,因此可能需要进行一些调整(:

public static class NLogLoggerExtensions
{
public static void Error(this NLog.ILogger logger, int eventId, string message)
{
Log(logger, NLog.LogLevel.Error, eventId, null, message);
}
public static void Error(this NLog.ILogger logger, int eventId, Exception exception, string message)
{
Log(logger, NLog.LogLevel.Error, eventId, exception, message);
}
private static void Log(NLog.ILogger logger, NLog.LogLevel loglevel, int eventId, Exception exception, string message)
{
var logEvent = NLog.LogEventInfo.Create(loglevel, logger.Name, exception, message);
if (eventId != 0)
logEvent.Properties["EventId"] = eventId;
logger.Log(logEvent);
}
}

也可以将";事件Id";作为这样的属性:

logger.WithProperty("EventId", 3).Error("Converting task invocator's config file failed, exiting...")

或者像这样使用Fluent API:

logger.ForErrorEvent().Property("EventId, 3").Message("Converting task invocator's config file failed, exiting...").Log();

另请参阅:https://github.com/NLog/NLog/wiki/EventProperties-Layout-Renderer

最新更新