写入Windows事件日志时,为每个日志设置事件ID [英] Set Event ID per log when writing to Windows Event Log

查看:180
本文介绍了写入Windows事件日志时,为每个日志设置事件ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经这样设置了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆