NLog事件日志目标:源/提供商名称和问题的问题消息格式

时间:2012-07-16 09:41:35

标签: event-log nlog

我正在尝试使用NLog将新应用程序的事件记录到文件和事件日志中。我几乎就在那里,但不是很完美 - 我可以将事件记录到事件日志中,并且在(事件日志的)详细信息/ XML视图中,所有内容都可以。但是在查看器的“常规”选项卡中,我没有按预期显示事件消息;相反,我得到“DRGImporterError”;这匹配恰好是我的EventLogMessages.mc文件中的SymbolicName(见下文),但是当我修改了这个值并重新编译错误消息文件时,这并没有改变。事件日志源是'DRGImporter',应用程序名称也是如此,所以我无法确定'DRGImporterError'实际引用了什么!

我手动创建并编辑了存储EventMessageFile位置的注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\MyAppLog\DRGImporter。最初,我将此键指向我的自定义EventLogMessages.dll,但在尝试调试它时,我还将其设置为\Windows\Microsoft.NET\...下的标准DLL之一,但它没有改变结果。

我有许多其他应用程序使用相同的事件日志,但这些应用程序使用不同的日志记录框架。然而,它们可以工作,但更奇怪的是,如果我将NLog指向的源更改为其中一个较旧的源,则会成功记录NLog条目,并且事件日志中的常规视图会显示预期的文本。我从XML视图中看到的唯一区别是EventRecordID和时间戳,这是预期的。

我遗漏了这个等式中的另一个元素吗?

EventLogMessages.mc:

;//***********Event Definitions**************
MessageId=2000
SymbolicName=MailerError
Language=English
%1.
.
MessageId=2100
SymbolicName=DRGImporterError
Language=English
%1.
.

NLog.config:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="true" autoReload="true" internalLogFile="nlog.log" internalLogLevel="Debug">

<targets>
    <target name="eventLogHeaderTarget" xsi:type="EventLog" log="Hexadex" source="DRGImporter" eventId="0" layout="${message}" />
</targets>

<rules>
    <logger name="appLogHeader" minlevel="Debug" writeTo="eventLogHeaderTarget" />
</rules>

0 个答案:

没有答案