44

自定义应用程序在登录到 Windows EventLog 时是否应使用任何有效事件 ID 范围?或者我可以使用我选择的任何事件 ID (1,2,3,4....)。PS,我正在使用 C#.NET 进行开发。

4

5 回答 5

37

EventIds 是特定于应用程序的,因此您可以使用您喜欢的任何范围。只需确保您记录了您使用过的内容和位置,这样您就可以确保您不会使用 id 两次,或者便于调试。

但请记住...

就像亨利福特所说的“你可以有任何你想要的颜色,只要它是黑色的”——你也可以使用你喜欢的任何范围,只要该范围在 0 和 65535 的范围内。

于 2009-11-18T12:37:43.453 回答
7

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

这是一个参考: http: //msdn.microsoft.com/en-us/library/e29k5ebc.aspx - 特别有趣的是关于不将带有 IPv6 地址的消息(因为%字符)写入事件日志的部分。我打赌你可以使用一个参数来解决这个问题。

于 2013-01-31T17:09:24.217 回答
3

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

0x0000 - 0xffff

请参阅:事件消息结构

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

于 2017-08-27T22:07:35.063 回答
1

Edit1:我对此进行了测试,但 eventID 不是 32 位的。它只有 16 位。

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

EventLog.WriteEntry Method (String, String, EventLogEntryType, Int32)

public static void WriteEntry(
    string source,
    string message,
    EventLogEntryType type,
    int eventID
)
于 2014-08-27T10:54:01.540 回答
0

从技术上讲,您可以为此使用1 - 65536之间的任何值。

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

 Random rnd = new Random();
 EventId = rnd.Next(0, 65535);
于 2017-03-24T20:52:54.277 回答