windows 自定义事件日志项要使用什么事件ID?

f1tvaqid  于 2023-02-13  发布在  Windows
关注(0)|答案(5)|浏览(270)

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

nfeuvbwi

nfeuvbwi1#

EventId是应用程序特定的,所以你可以使用任何你喜欢的范围。只要确保你记录了你使用的内容和位置,这样你就可以确保你不会使用一个id两次,或者便于调试。
但请记住...
就像亨利·福特说的“只要是黑色,你可以选择任何你想要的颜色”--你也可以选择任何你喜欢的范围,只要这个范围福尔斯0到65535之间。

xam8gpfp

xam8gpfp2#

果然,由作者来定义和跟踪他们使用的事件ID及其含义。
下面是一个参考:http://msdn.microsoft.com/en-us/library/e29k5ebc.aspx-特别有趣的是关于不将具有IPv6地址的消息写入事件日志的部分(因为 * %* 字符)。我打赌您可以使用参数来解决这个问题。

iqjalb3h

iqjalb3h3#

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

    • 0x0000 - 0xffff**

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

mctunoxg

mctunoxg4#

Edit 1:我测试过,eventID不是32位,它只有16位。

事件ID为整数32,从-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
)
csga3l58

csga3l585#

从技术上讲,您可以使用1 - 65536之间的任何值。
但是,如果你是像我一样写大量冗长日志的人,你会发现很难将一堆条目联系在一起,那么我建议每次代码执行时生成一个随机的唯一值,这样你就可以识别事件,甚至更好的想法是创建自己的日志和源代码来使用它,而不是在应用程序日志中写入所有内容。

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

相关问题