Q1:NTイベント・ログ・システムへログを出力するには?

NTEventLogAppender を使用します。

このアペンダは Windows 環境下でのみ使用できます。また、実行時に NTEventLogAppender.dll が必要です。これは Log4j のルートディレクトリの src/java/org/apache/log4j/nt に格納されています。
そのため以下のように、実行時にシステムプロパティで DLL の場所を指定するか(カレントディレクトリの dll/ 以下に NTEventLogAppender.dll が格納されている場合)、

% java -Djava.library.path=dll ターゲットクラス

またはコマンド検索パスの通っているディレクトリへ NTEventLogAppender.dll を格納する必要があります。ログの追加だけならばどちらでもかまいませんが、イベントビューワでログを確認する場合に、コマンド検索パスに NTEventLogAppender.dll が入っていなければイベント ID が見つからないというエラーメッセージが余分に表示されるため、同一マシンでログ出力,確認を行う場合は、後者のほうが良いでしょう。

アペンダは以下のように設定します。

  <appender name="NT" class="org.apache.log4j.nt.NTEventLogAppender">
    <param name="Source" value="Logging Test" />    
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern"
        value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
    </layout>
  </appender>

リモートのサーバに対して NT イベントログを追加することも可能ですが、リモートサーバの指定は NTEventLogAppender クラスのコンストラクタでのみ設定可能で、設定ファイルで設定できないようです。上記設定はローカルホストに対してNTイベントログを追加する設定です。

このアペンダでログを出力すると、以下のようにイベントログが追加されます。

上から ERROR, WARN, INFO, DEBUG, FATAL のログが表示されています。INFO のプロパティを見ると、

ログの内容が表示されています。Windows の機種依存文字を含む日本語も正しく表示できるようです。


トップページへ戻る