写入Windows事件日志时,为每个日志设置事件ID [英] Set Event ID per log when writing to Windows Event Log
问题描述
我已经这样设置了EventLog目标:
I've got the EventLog target set up like so:
<target xsi:type="EventLog"
name="EventLog"
layout="${longdate:universalTime=true}|${level:uppercase=true}|${logger}|${message}"
source="MyApp"
log="Application" />
现在,显然不是我的所有事件都具有相同的ID,因此我想基于每个消息设置事件ID,而不是在配置中设置静态ID.我相信这应该可行:
Now, obviously not all my events will have the same ID, so I want to set event ID on a per message basis, rather than setting a static ID in the config. I believe this should work:
var logger = LogManager.GetCurrentClassLogger();
var logEvent = new LogEventInfo(LogLevel.Warn, logger.Name, "Test message");
logEvent.Properties.Add("EventID", 4444);
logger.Log(logEvent);
...但是我的事件始终将事件ID设置为0.有人知道如何使它正常工作吗?
...but my events always have event ID set to 0. Anyone know how to get this working?
推荐答案
我知道了-您必须在目标的eventId
属性中使用布局:
I figured it out - you have to use a layout in the eventId
property of the target:
<target xsi:type="EventLog"
name="EventLog"
layout="${longdate:universalTime=true}|${level:uppercase=true}|${logger}|${message}"
source="MyApp"
>> eventId="${event-properties:EventID:whenEmpty=0}" <<
log="Application" />
我还创建了木材日志门面,同时要求使用NLog和log4net.记录具有不同事件ID的消息非常简单.
I've also created the Timber logging facade called for both NLog and log4net, which makes logging messages with different event IDs very simple.
这篇关于写入Windows事件日志时,为每个日志设置事件ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!