■ はじめに
http://blogs.yahoo.co.jp/dk521123/33192139.html
で、イベントログの出力について、調べたが、Log4jを使って実装可能らしいので実際に試してみた。
!注意! ただし、まだ未完。以下の例外が発生し実行できない。
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.log4j.nt.NTEventLogAppender.registerEventSource(Ljava/lang/String;Ljava/lang/String;)I
at org.apache.log4j.nt.NTEventLogAppender.registerEventSource(Native Method)
at org.apache.log4j.nt.NTEventLogAppender.<init>(NTEventLogAppender.java:77)
at org.apache.log4j.nt.NTEventLogAppender.<init>(NTEventLogAppender.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.apache.log4j.helpers.OptionConverter.instantiateByClassName(OptionConverter.java:330)
at org.apache.log4j.helpers.OptionConverter.instantiateByKey(OptionConverter.java:121)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:664)
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:647)
at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:544)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:440)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:334)
at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:342)
at com.webservices.EventLogWithLog4j.main(EventLogWithLog4j.java:12)
■ 環境設定
[1] 以下のサイトから、Log4Jのモジュールをダウンロードする(例えば「log4j-1.2.17.zip」)
http://logging.apache.org/
[2] ダウンロードしたファイルを解凍する
+ apache-log4j-1.2.17
|
+- NTEventLogAppender.amd64.dll (WinOS64Bit用)
|
+- NTEventLogAppender.dll (WinOS32Bit用)
|
+- log4j-1.2.17.jar
[3] %SYSTEMROOT%\SYSTEM32配下 (例「C:\WINDOWS\system32」)に、
ダウンロードしたNTEventLogAppenderのDLLファイルを配置(コピペ)しておく
[4] Eclipseにおいて、対象とするプロジェクトを右クリックし、
[Properties]-[Java Build Path]-[Libraries]-[Add External JARs]を選択
[5] 手順[2]で解凍したzipで、log4jのJARファイル(例「log4j-1.2.17.jar」)を選択し「ok」押下
■ サンプル
log4j.properties
log4j.rootCategory=DEBUG, EventLogger
log4j.appender.EventLogger=org.apache.log4j.nt.NTEventLogAppender
log4j.appender.EventLogger.Name=WindowsEventLog
log4j.appender.EventLogger.layout.ConversionPattern=%-5p %d{ISO8601} - %m%n
EventLogWithLog4j.java
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class EventLogWithLog4j {
private static Logger logger =
Logger.getLogger(EventLogWithLog4j.class.getName());
public static void main(String[] args) {
PropertyConfigurator.configure("./conf/log4j.properties");
EventLogWithLog4j.logger.error("Hello World!!");
}
}