blanco Framework 画像(小) 2009/04

blancoLog

[blanco,ログ,Log,java.util.logging] ログにまつわるクラスを集めたクラスライブラリです。java.util.logging を Apache Commons Logging の代わりに利用できるようにするためのクラスなど幾つかの便利なクラスが含まれます。

広告: イマドキのIDE事情: Eclipseベースの統合翻訳環境「Benten」を使ってみよう 09/27
たげぞうさんの手による Benten 紹介記事!
インディックスページへ戻る
blanco Framework 一覧 ドキュメント Download (ダウンロード) SourceForge.jp
AntTask BatchProcess Cg CharacterGroup Commons Constants
Csv Db EclipseDistribution FixedLength JSF Log Mail Message NLpack
PDF Report ResourceBundle Service SOAP SQL StringConverter
StringGroup Struts SvnConf ValueObject
lib message
blancoLogについて

blancoLogは、ログにまつわるクラスを集めたクラスライブラリです。java.util.logging を Apache Commons Logging の代わりに利用できるようにするためのクラスなど幾つかの便利なクラスが含まれます。

視点 自己評価 説明
対応言語 - Java
出現頻度 ★★ クラスライブラリの個々のクラスの仕様が、利用者のニーズに適合した場合にのみ有益です。
適用効果 ★★ ニーズにフィットすると、大きな改善が実現できます。
導入のしやすさ クラスライブラリなので、導入は少し難しいでしょう。
blancoLogに含まれるクラス

blancoLog には 下記のクラスが含まれます。

このうち、特に利用価値が高いと思われるのは BlancoLogLog4jHandler クラスです。

blanco.log.logging.BlancoLogLog4jHandler クラス

blanco.log.logging.BlancoLogLog4jHandler クラスを利用すると、java.util.logging の出力を Apache log4j にリダイレクトすることができます。これにより、標準 Java API のみを利用して Apache log4j へのログ出力を実現することが出来るようになります。

現在、多くの方々はロギングのインタフェースとして Apache Commons Logging を利用しているのものと思います。でも、Apache Commons Logging を利用すると、Java ソースコードに org.apache.commons.logging.* の import文が必要になってしまいます。「ロギングはしておきたいのだけれども、Javaの import文に 標準 Java API以外のものが入るのは好ましくない」というジレンマを多くの方は感じていることでしょう。これを、blanco.log.logging.BlancoLogLog4jHandler は矛盾無く解決することが出来ます。

blanco.log.logging.BlancoLogLog4jHandler クラスの仕組みはとてもシンプルなものです。java.util.logging のログハンドラクラスである java.util.logging.Handler を継承して、その出力を Apache log4j クラスへと引き渡しているだけです。
2007.11.23時点では およそ 105行のソースコードによって実現されています。

利用方法

下記のような手順で利用することが出来ます。

java.util.logging から Apache log4j へのログレベルマッピング

java.util.logging と Apache log4j とではログレベルが異なります。これを解決するために、下記のようなログレベルのマッピングを行っています。

java.util.logging のログレベル Apache log4j のログレベル 備考
java.util.logging.Level.FINEST org.apache.log4j.Level.TRACE 「詳細レベル(高)」。
java.util.logging.Level.FINER org.apache.log4j.Level.TRACE 「詳細レベル(中)」。
java.util.logging.Level.FINE org.apache.log4j.Level.DEBUG 「詳細レベル(低)」。
java.util.logging.Level.CONFIG org.apache.log4j.Level.DEBUG 「設定」。ログメッセージに 「config: 」プレフィクスを付与します。
java.util.logging.Level.INFO org.apache.log4j.Level.INFO 「情報」。
java.util.logging.Level.WARNING org.apache.log4j.Level.WARN 「警告」。
java.util.logging.Level.SEVERE org.apache.log4j.Level.ERROR
org.apache.log4j.Level.FATAL (*1)
「致命的」。
(*1)メッセージがfatalから始まるもののみ FATAL にマップします。

java.util.logging の可能性

既に java.util.logging の利用を検討したことはあるのだけれども、java.util.logging のログハンドラの非力さが原因で利用を断念した人は多いのではいでしょうか。ログハンドラ部分は Apache log4j のほうが一日の長があり、また多機能であるのは確かなことです。そこで、java.util.logging を Apache Commons Logging の代わりに利用して、ロギングは Apache log4j を使ってしまうという、blanco.log.logging.BlancoLogLog4jHandler クラス の利用を提案します。是非 この機会に blanco.log.logging.BlancoLogLog4jHandler クラス を活用して java.util.loggingの利用を検討されることをおすすめします。

関連するブログ

blanco.log.logging.BlancoLogSimpleFormatter クラス

blanco.log.logging.BlancoLogSimpleFormatter クラスを利用すると、java.util.logging の出力を Apache log4j 風のフォーマットに変換することができます。

java.util.logging の java.util.logging.SimpleFormatter クラスのフォーマットは、あまり一般的な「シンプルな」フォーマットではないと感じる方が多いのでは無いでしょうか。BlancoLogSimpleFormatter クラスを利用すると、Apache log4j 風のシンプルなフォーマットを得ることが出来ます。Apache log4jの「log4j.appender.XX.layout.ConversionPattern=%d %-5p %c - %m%n」に相当する出力となっています。

利用方法

下記のような手順で利用することが出来ます。

java.util.logging.Level と ログのレベル文字列との対応付け

java.util.logging と Apache log4j におけるログのレベル文字列とでは粒度が異なります。このため、下記のようなマッピングを行っています。

java.util.logging のログレベル ログのレベル文字列 備考
java.util.logging.Level.FINEST TRACE 「詳細レベル(高)」。
java.util.logging.Level.FINER TRACE 「詳細レベル(中)」。
java.util.logging.Level.FINE DEBUG 「詳細レベル(低)」。
java.util.logging.Level.CONFIG CONF (*1) 「設定」。
(*1)Apache log4j には、このログレベル文字列は存在しません。
java.util.logging.Level.INFO INFO 「情報」。
java.util.logging.Level.WARNING WARN 「警告」。
java.util.logging.Level.SEVERE ERROR
FATAL (*2)
「致命的」。
(*2)メッセージがfatalから始まるもののみ FATAL にマップします。
ダウンロード (download)

blancoLogの実行形式は、下記のページからダウンロードすることができます。

blancoLogはオープンソース/フリーソフトウェアです

SourceForge.jp


いがぴょんについて
Last modified: $Date: 2010/09/27 20:42:52 $