http://logging.apache.org/log4j/2.x/download.html
適当なところに解凍します。
以下のディレクトリに、Jar ファイルがあるので、それを自分のJava プロジェクトのlib フォルダ辺りに配置してください。
また、同様に以下のディレクトリに、NTEventLogAppender (※1) というクラスを利用するためのdll ファイルがあるので、
それもlib フォルダ辺りに配置してください。
Eclipse で実行時、Debug Configuration > VM arguments で、以下を指定してください。
-Djava.library.path=<dll を配置したところのパス>
次に、log4j.properties ファイルを作成します。
後は、LoggingEvent (※2)クラスを適当に作ってあげて、NTEventLogAppender クラスのappend メソッドの引数に与えて上げる。
また、LoggingEvent クラスのコンストラクタの引数は、ある程度正しい値(例えば、timestamp であったら、現在時刻のlong 値、など)を入れてあげないと、Windows Event Log に正しく登録できない。 以下に、1例を示す。
LoggingEvent event = new LoggingEvent( null, logger, level, message, null ); NTEventLogAppender appender = new NTEventLogAppender( "ServiceName", new PatternLayout( "%m%n" ) ); this.appender.append( event );
これで、Windows Event Log が書き込みできたので、CTRL+R > eventvwr で、EventLog を確認できます。
以下に、利用したlog4j.properties ファイルを添付する。
# Logger Root log4j.rootLogger=INFO,stdout,debuglog # Logger OperationLog log4j.logger.operation=DEBUG # Appender log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[%5p][%d{MM/dd/yyyy HH:mm:ss:SSS}] %m (%c) %n # Debug log4j.appender.debuglog=org.apache.log4j.DailyRollingFileAppender log4j.appender.debuglog.encoding=UTF-8 log4j.appender.debuglog.layout=org.apache.log4j.PatternLayout log4j.appender.debuglog.layout.ConversionPattern=%p,%d{MM/dd/yyyy HH:mm:ss:SSS},%c,%m,%n log4j.appender.debuglog.File=logs/debug.log log4j.appender.debuglog.DatePattern='.'yyyyMMdd
※1 https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/nt/NTEventLogAppender.html
※2 https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/spi/LoggingEvent.html
0 件のコメント:
コメントを投稿