什么事件ID用于我的自定义事件日志条目?

是否有任何范围的有效的事件ID应该由自定义应用程序在login到Windows事件日志时使用? 或者我可以使用我select的任何事件ID(1,2,3,4 ….)。 PS,我正在C#.NET中开发。

EventIds是特定于应用程序的,所以你可以使用任何你喜欢的范围。 只要确保你记录了你已经使用过的和在哪里,这样你就可以确保你不使用id两次,或者便于调试。

但请记住…

就像亨利·福特(Henry Ford)说的“只要是黑色就可以有任何颜色一样” – 只要该范围落在0到65535的范围内,你也可以使用任何你喜欢的范围。

果然,作者需要定义和跟踪他们使用的事件ID及其含义。

这里是一个参考: http : //msdn.microsoft.com/en-us/library/e29k5ebc.aspx – 特别有趣的是关于不写信息与IPv6地址(由于字符)的事件日志。 我敢打赌,你可以使用一个参数来解决这个问题。

编辑1:我测试过,事件ID是32位是不正确的。 它只有16位。

eventId是Int32,从-2,147,483,648到2,147,483,647

EventLog.WriteEntry方法(字符串,字符串,EventLogEntryType,Int32)

 public static void WriteEntry( string source, string message, EventLogEntryType type, int eventID ) 

ID的高位保留用于测试,调试和其他用于开发的标志。 可用位是:

0x0000 – 0xffff

请参阅: 事件消息结构

应该避免高位,但如果创建自定义源,则底部位的所有值都可用。 如果您使用系统或预先存在的来源,您将发生碰撞,并可能得到错误的信息。 消息来自已注册的源消息DLL文件。 自定义消息文件可以使用SDK中的消息文件编译器构建。

从技术上讲,你可以使用1 – 65536之间的任何值。

但是如果你是一个像我这样写了大量冗长日志的人,你会发现很难将一堆条目联系在一起,那么我建议每次执行代码时都会产生一个随机的唯一值,这样你可以识别事件,甚至是更好的主意是创建自己的日志和源代码来使用它,而不是在应用程序日志中写入所有内容。 喜欢

  Random rnd = new Random(); EventId = rnd.Next(0, 65535);