我已经设置了EventLog目标:
<target xsi:type="EventLog"
name="EventLog"
layout="${longdate:universalTime=true}|${level:uppercase=true}|${logger}|${message}"
source="MyApp"
log="Application" />
现在,显然并非我的所有事件都具有相同的ID,因此我希望基于每个消息设置事件ID,而不是在配置中设置静态ID。我相信这应该有效:
var logger = LogManager.GetCurrentClassLogger();
var logEvent = new LogEventInfo(LogLevel.Warn, logger.Name, "Test message");
logEvent.Properties.Add("EventID", 4444);
logger.Log(logEvent);
...但我的活动总是将事件ID设置为0.任何人都知道如何使其工作?
答案 0 :(得分:12)
我弄清楚了 - 您必须在目标的eventId
属性中使用布局:
<target xsi:type="EventLog"
name="EventLog"
layout="${longdate:universalTime=true}|${level:uppercase=true}|${logger}|${message}"
source="MyApp"
>> eventId="${event-properties:EventID}" <<
log="Application" />
我还为NLog和log4net创建了Timber日志记录,这使得具有不同事件ID的日志消息变得非常简单。
答案 1 :(得分:1)
在github hub repo上有一个包含eventId的EventLog目标的示例配置。 eventId将使用呈现事件ID的布局。