web-dev-qa-db-ja.com

NTEventLogAppenderを使用したカスタムイベントID

これはServerFaultに関する私の最初の投稿ですが、StackOverflowが大好きです。私はコーダーなので、レジストリよりもIDEの方が快適なので、助けを求めてここに来ました。

問題:ロガーのチェーンがあります

CustomLogger(NTEventLogAppenderで解析されるカスタムEventIdを使用してログメッセージを追加します)-> slf4j-> log4j-> NTEventLogAppender

ログは最終的に、CustomLoggerから元のメッセージに追加されたEventIDを解析するように変更したNTEventLogAppenderによって消費され、正常に機能します。ただし、メッセージがカスタムEventIDで生成されると、次のようになります。

ソース(Order Station Jetty Server Diag)のイベントID(blah)の説明が見つかりません。ローカルコンピュータには、リモートコンピュータからのメッセージを表示するために必要なレジストリ情報またはメッセージDLLファイルがない可能性があります。/AUXSOURCE=フラグを使用してこの説明を取得できる場合があります。ヘルプとを参照してください。詳細のサポート次の情報はイベントの一部です:111219 [main] INFO

すべてのカスタムログメッセージの冒頭で、この定型メッセージを削除する必要があります。

次のように、すべての新しいコードを反映するようにEventLogCategories.mcファイルを編集しました。

; example of new logging code
MessageId=0x45
Language=English
No logging code was given, using default logging code %1
.

そして、NTEventLogAppender.dllファイルを生成するbuild.batファイルを実行しています。このファイルを適切なディレクトリに配置し、その上でプロピレン32を実行します。

私もこれを見てFAQ、 http://logging.Apache.org/log4j/1.2/faq.html#a2.1 、そしてコピーしましたNTEventLogAppender.dllを%SYSTEMROOT%\ SYSTEM32ディレクトリに追加しても役に立ちません。

さらに私はこれを見ました https://issues.Apache.org/bugzilla/show_bug.cgi?id=37866 そして、Microsoftメッセージコンパイラ(mc.exe)とMinGWをシステムパスに追加しました環境変数、再コンパイル、コピー、登録...すべて役に立たない。

最後に、Apache Logging-log4j-userフォーラムに投稿しようとしましたが(私は新しいユーザーであり、投稿内の3つ以上のリンクは禁止されているため、リンクは編集されました)、log4j-user @ logging.Apache.orgアドレスは私に跳ね返った。

誰か他に私が間違っている可能性があるアイデアがありますか?

1
ThoughtCrhyme

解決策:プロジェクトのNTEventLogAppenderのレジストリ内のキーを削除してから、VS2010コマンドラインインターフェイスからbuild.batを実行し、NTEventLogAppenderをプロジェクトフォルダー内の適切な場所にコピーします。

Mc.exeまたはrc.exeを含める必要はなく、\ System32ディレクトリにコピーする必要もありません。

0
ThoughtCrhyme