よろしければ1クリックお願いします

2015年01月12日

Apache log4j2によるロギング機能の基本サンプル

仕事ではインフラ案件も経験する機会に恵まれたが、
やはりどちらかというとアプリケーションエンジニア寄り
の仕事が自分にはあうかな?と感じる今日この頃。

久しぶりにJava開発に関する勉強を再開。

Webアプリケーションではなく、JDKを使用したローカルアプリ
ケーションを視野に、ログ出力の機能を見直してみた。
# 諸々の事情によりですが・・・・

【Java メジャーロギング機能】
※2015年1月現在

・java.util.logging(JUL):Java標準APIのログ出力機能
・Log4j:Apache Jakarta プロジェクトの有名ログ出力機能
・SLF4J+Logback:最近のデフォルトロギング機能
 ※次は「SLF4J+Logback」を調べねばと考え中・・・・
 

今回は昔からよく活用していた『Apache log4j』について復習してみたが、
現在はlog4j2がリリースされていたので、log4j2を利用してみた。

【log4j2 サイト】
 Apache Logging Servicesサイト
  http://logging.apache.org/log4j/2.x/
  
 ダウンロードサイト
 http://logging.apache.org/log4j/2.x/download.html
 

【モジュール情報】
 ・apache-log4j-2.1-bin
 ・jdk-8u25-windows-x64
 ・pleiades-e4.4-java-jre_20140926


【開発準備】
 JavaのIDEと言えば、Eclipseということで、今回も
 Eclipseを採用
 
 プロジェクトを作成後、以下のjarファイルを配置し、クラスパスを
 設定。
 
 ※jarファイルは、「apache-log4j-2.1-bin」を展開したフォルダ
  配下に格納されている。
  
 ・log4j-api-2.1.jar
 ・log4j-core-2.1.jar

  

 ※ほかにもたくさんのjarファイルが格納されているが、必要なときに
  また調査してみます
 
【環境設定】
 log4jといえば、log4.xmlの設定が必要ですが、log4j2では「log4j2.xml」
 というファイル名で設定ファイルを準備する必要がある。
 ※「log4j.properties」はなくなりました
 
 log4j2.xmlファイルを作成後、クラスパスを通しておく。
 ≪クラスパス設定参考≫
 classPathSet.JPG
 
【サンプル実行】
 ほかのサイトでもあるシンプルなサンプルを実行してみる。
 
 ≪log4j.xml記載例≫
===============================================================
≪log4j.xml記載例≫
<?xml version="1.0" encoding="UTF-8"?>
<Configuration package="log4j.test" status="WARN">

<Properties>
<Property name="log-path">./logs/</Property>
</Properties>

<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n%ex"/>
</Console>

<RollingFile name="RollingFile" fileName="${log-path}/application.log" filePattern="${log-path}/application-%d{yyyy-MM-dd}-%i.log" >
<PatternLayout>
<pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n</pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
</Policies>
</RollingFile>
<RollingFile name="Test" fileName="${log-path}/Test.log" filePattern="${log-path}/Test-%d{yyyy-MM-dd}-%i.log" >
<PatternLayout>
<pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n</pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
</Policies>
</RollingFile>
</Appenders>

<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
<Logger name="test" level="trace" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<Logger name="EventLogger" level="info">
<AppenderRef ref="Audit"/>
</Logger>
</Loggers>
</Configuration>
 
===============================================================
 
 ≪実行サンプルソース≫
--------------------------------------------------------------
package jp.com.test.log;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
* log4j2を使用してログ出力を行うサンプルクラス
*
*/
public class LogOutputTest {
public static void main(String[] args) {
Logger logger = LogManager.getLogger("EventLogger");

logger.trace("TraceMessage");
logger.debug("DebugMessage");
logger.info("InfoMessage {}!", "Info Test Log4j2");
logger.warn("WarnMessage {}!", "Warn Test Log4j2");
logger.error("ErrorMessage {}!", "Error Message");
logger.fatal("FatalMessage");
logger.info("Exception", new Exception("Error EX"));
}
}
--------------------------------------------------------------
 サンプルソースに関しては、他サイトで記載されている設定では動作しない
 場合があったので、使用するバージョンに応じて少し編集が必要になるかも
 しれない。

 log4j2では、多くのアダプターが利用できるようになっているので、
 開発するアプリケーションに応じてlog4j2.xmlの設定を変更する必要が
 ある。
 
 http://logging.apache.org/log4j/2.0/manual/appenders.html


景気動向により、開発案件が増えつつありますが、『安価短納期』の
要望は今後も続いていくと思うので、少しでも品質アップと効率化を
行える開発方針を検討していかねばと思います。




==========================================
【ご参考サイト】
熱い!暑い!!サラリーマン!!!
ちょっとおでかけ写真展
タグ:log4j2
posted by クーキチ at 02:22 | Comment(0) | TrackBack(0) | Java | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック