gpt4 book ai didi

.net - 事件日志消息文件问题

转载 作者:行者123 更新时间:2023-12-03 19:05:05 24 4
gpt4 key购买 nike

我工作的应用程序之一一直在吐出丑陋的事件日志消息,其中包含我们的消息,但也有精彩的消息,如下所示:

The description for Event ID 103 from source MyCustomSource cannot be found. Either  the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

If the event originated on another computer, the display information had to be saved with the event.

The following information was included with the event:

My event log message that is redacted.

the message resource is present but the message is not found in the string/message table

所以我开始为这个源创建一个事件日志消息文件,听起来很简单吧?
;// Header
MessageIdTypedef=DWORD

LanguageNames=(
English=0x409:MSG00409
)

;// Categories
MessageId=0x1
SymbolicName=MYAPP_CATEGORY_GENERAL
Language=English
MyApp General
.

;// Messages
MessageId=0x103
SymbolicName=API_ERROR
Severity=Error
Language=English
An error occurred in the API. Message: %1
.

然后我像往常一样编译这个文件:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\mc.exe" -u MyAppMessages.mc"
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\rc.exe" -r MyAppMessages.rc"
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\link.exe" -dll -noentry -out:MyAppMessages.dll MyAppMessages.res /MACHINE:x86

我现在有了编译好的 MyAppMessages.dll。我现在添加所需的注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\MyApp\MyApp
CategoryCount REG_DWORD 1
CategoryMessageFile REG_EXPAND_SZ <path to MyAppMessages.dll>
EventMessageFile REG_EXPAND_SZ <path to MyAppMessages.dll>

问题是,我仍然收到与开始时相同的消息,只有任务类别现在从消息文件加载正确的值,而不是之前加载的默认值 (1)。

这是事件数据的 XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="MyApp" />
<EventID Qualifiers="57344">103</EventID>
<Level>2</Level>
<Task>1</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2012-02-27T16:42:20.000000000Z" />
<EventRecordID>20759</EventRecordID>
<Channel>MyApp</Channel>
<Computer>Skycaller</Computer>
<Security />
</System>
<EventData>
<Data>My event log message that is redacted.</Data>
</EventData>
</Event>

我不是消息文件专家,但它在消息文件中找到类别定义,而不是事件消息。有没有人知道为什么找不到消息但在同一个 DLL 中找到类别?

最佳答案

事实证明,MSDN 论坛上的某个人不小心偶然发现了这个问题的解决方案并与我分享。

只需用 Severity=xxxxx 去掉任何行和 Facility=xxxxx在消息文件中,重新编译后将显示自定义消息。 Facility不在我的文件中,但另一个人在他的文件里有那条线,如果不把那条线也去掉,它就对他不起作用。不知道为什么这些行出现在很多教程和官方 MSDN 文档示例中,但确实存在。

希望这对某人有所帮助!

关于.net - 事件日志消息文件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9469188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com