嗨,我试着记录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