NLogを使用して、新しいアプリケーションのイベントをファイルとイベントログに記録しようとしています。私はもうすぐそこにいますが、完全ではありません。イベントログにイベントを記録できます。(イベントログの)詳細/ XMLビューでは、すべて問題ないように見えます。しかし、ビューアの[全般]タブで、イベントメッセージが期待どおりに表示されません。代わりに、「DRGImporterError」が発生します。これは、EventLogMessages.mcファイルのSymbolicName(以下を参照)と一致しますが、この値を変更してエラーメッセージファイルを再コンパイルしても、変更されませんでした。イベントログのソースはアプリケーション名と同様に「DRGImporter」であるため、「DRGImporterError」が実際に何を指しているのかわかりません。
EventMessageFileの場所を格納するレジストリエントリを手動で作成および編集しました:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\MyAppLog\DRGImporter
。元々、このキーをカスタムEventLogMessages.dllにポイントしましたが、デバッグを試みる際に、の下にある標準DLLの1つにも設定しました\Windows\Microsoft.NET\...
が、結果は変わりませんでした。
同じイベントログを使用する他のアプリケーションがいくつかありますが、これらは異なるログフレームワークを使用しています。それでも機能しますが、もっと不思議なことに、NLogが指すソースをこれらの古いものの1つに変更すると、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>