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 | Message | NLpack |
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行のソースコードによって実現されています。
利用方法
下記のような手順で利用することが出来ます。
handlers=blanco.log.logging.BlancoLogLog4jHandler .level= ALL |
log4j.rootLogger=DEBUG, A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n |
import java.util.logging.Logger; public class Sample { public static void main(String[] args) { final Logger logger = Logger.getLogger("Sample"); logger.fine("FINEレベルのログ。"); logger.config("CONFIGレベルのログ。"); logger.info("INFOレベルのログ。"); logger.warning("WARNINGレベルのログ。"); logger.severe("SEVEREレベルのログ(1)。"); logger.severe("fatal: SEVEREレベルのログ(2)。"); } } |
2007-11-23 11:10:31,676 [main] DEBUG Sample - FINEレベルのログ。 2007-11-23 11:10:31,676 [main] DEBUG Sample - config: CONFIGレベルのログ。 2007-11-23 11:10:31,676 [main] INFO Sample - INFOレベルのログ。 2007-11-23 11:10:31,676 [main] WARN Sample - WARNINGレベルのログ。 2007-11-23 11:10:31,676 [main] ERROR Sample - SEVEREレベルのログ(1)。 2007-11-23 11:10:31,676 [main] FATAL Sample - fatal: SEVEREレベルのログ(2)。 |
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.ConsoleHandler.formatter=blanco.log.logging.BlancoLogSimpleFormatter …省略… |
import java.util.logging.Logger; public class Sample { public static void main(String[] args) { final Logger logger = Logger.getLogger("Sample"); logger.info("INFOレベルのログ。"); logger.warning("WARNINGレベルのログ。"); logger.severe("SEVEREレベルのログ(1)。"); logger.severe("fatal: SEVEREレベルのログ(2)。"); } } |
2007-11-23 11:15:56,535 INFO Sample - INFOレベルのログ。 2007-11-23 11:15:56,598 WARN Sample - WARNINGレベルのログ。 2007-11-23 11:15:56,598 ERROR Sample - SEVEREレベルのログ(1)。 2007-11-23 11:15:56,598 FATAL Sample - fatal: SEVEREレベルのログ(2)。 |
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はオープンソース/フリーソフトウェアです |