
プログラマーの常識をJavaで身につける (10)
入門から実践までJavaで学べる「ログ」の常識
株式会社 NTTデータ ビジネスブレインズ
伊賀敏樹
2008/1/10
本連載は、Java言語やその文法は一通り理解しているが、「プログラマー」としては初心者、という方を対象とします。Javaコアパッケージを掘り下げることにより「プログラマーの常識」を身に付けられるように話を進めていきます(編集部注:Java言語の基礎を学びたい読者は、連載「Eclipseではじめるプログラミング」や連載「いまから始めるJava」をご参照ください)。
今回はログの常識について、Java言語を通じて学んでいきます。多くの場合、ログは「ログファイル」という物理的なファイルに関連付けられて、私たちの前に現れます。
前回のプロパティの記事と同様、プログラム内では完結せず、外部の物理ファイルとのかかわりが出てくるため、初心者のうちはなかなかなじみにくい技術であるかもしれません。しかし、プログラミングにおいて重要ですので、しっかり習得してしまいましょう。
前回紹介したプロパティでは、プロパティファイルからの設定情報の読み込みが話題の中心であったのに対し、ログはログファイルへの書き込みが話題の中心となります。入力から出力へと話題が変わるのです。
いまさら聞けない「ログファイル」とは何か?
皆さんがOSやアプリケーションなどを利用していると、ファイル拡張子が「.log」のファイルを見掛けたり、あるいはその内容を確認することがあるかと思います。多くの場合、この拡張子のファイルがログファイルです。
■ ログファイルの種類
ログファイルはさまざまな種類のプログラムから出力されます。その出力形式もログファイルによってさまざまです。単純なテキスト形式のログファイルもあれば、XML形式のログファイルなどもあります。
ログ1件の内容が1行で表されるものもあれば、複数行で表されるものもあります。
■ ログファイルの中身
ただし多くの場合、ログの情報として、ログ発生元、日付、時刻、ログの種類、メッセージなどの項目が含まれていることと思います。そして、それらの情報を手掛かりに、プログラムが出したメッセージを人間が確認したり、あるいはほかのプログラムが読み込みを行ったりします。
■ 「イベントログ」
また、ログファイルに類似したものとして、Microsoft Windowsでは「イベントログ」というものが提供されています。
![]() |
| 図1 Microsoft Windowsの「イベント ビューア」 |
■ ログファイルの目的
このように、さまざまな形で提供されるログファイルですが、主立った利用目的は下記のようになります。
- プログラムなどの処理や動作の過程を記録する
- セキュリティ確保のためにログオン・ログオフや操作のログを記録する
- ユーザーに画面などの対話的な方法を用いて伝えることができないメッセージを伝達する
- ほかのプログラムと連動する
- プログラム内部の動きを調べる
■ 「ログ」「ロギング」「ロガー」?
なお、ログファイルに書かれた情報そのものは「ログ(log)」と呼ばれることがあります。また、ログをログファイルに書き込むことを「ロギング(logging)」と呼びます。そしてロギングを行うプログラムは「ロガー(logger)」と呼ばれます。「ログ」とか「ロギング」とか、いろいろな呼び方がありますので、混乱しないようにしてください。
このように、よく利用されるログ(ログファイル)ですが、プログラマーにとって求められる常識スキルであると同時に、やや難易度が高いものの1つでもあります。しっかり学んでいきましょう。
ロギングを行うための標準Java API
それでは、Java言語でログをログファイルにロギングするためのJava APIパッケージであるjava.util.loggingを見ていきます。
■ あまり利用されていないjava.util.loggingパッケージ
java.util.loggingを紹介するのに先立って、まずは原稿執筆時点(2007年12月)の一般的なJavaロギング事情をお伝えしておきます。原稿執筆時点では、Java言語でロギングを行うために、「Apache log4j」や「Apache Commons Logging」というプロダクトを利用するのが主流となっています。実はjava.util.loggingはあまり利用されていません。
![]() |
| 図2 「Apache log4j」のページ |
![]() |
| 図3 「Apache Commons Logging」のページ |
編集部注:Apache log4jやApache Commons Loggingについて詳しく知りたい読者は、連載「現場に活かすJakarta Project」の第9回「効率的なログ出力をCommonsで実現」をご参照ください。
● 理由【その1】歴史的背景
これには、まず歴史的な背景があるものと考えられます。Java APIでロギングがサポートされたのはJ2SE 1.4からです。それ以前のバージョンでは、java.util.loggingパッケージは存在しませんでした。このため、ある程度古くから存在するJava関連プロダクトの多くはApache log4jを利用していました。
● 理由【その2】古いバージョンだと使えない
また、J2SE 1.4より前のバージョンをサポートしなくてはならないJava関連プロダクトも、必然的にjava.util.loggingパッケージは利用できません(ちなみに、Apache log4jとApache Commons Loggingは親和性が高いので、Apache Commons Loggingへの移行は比較的進めやすいのです)。
● 理由【その3】経験の蓄積
さらに、利用者やプログラマーもApache log4jや Apache Commons Loggingに慣れており、経験も蓄積されているので、「java.util.loggingを利用してみよう」というきっかけがなかなか得られない、またはjava.util.loggingに移行するメリットが見いだせない、といった状況もあります。
● 理由【その4】「ない」機能がある
なお、Apache Commons Logging(そして、Apache log4j)には、java.util.loggingにはない機能があります。そういったことも、java.util.loggingに移行しない理由の1つなのでしょう。
■ java.util.loggingパッケージにを使うメリットはあるのか?
このように、現時点ではあまり利用されていないjava.util.loggingパッケージですが、一方でjava.util.loggingパッケージを使うと、標準のJava APIだけでソースコードが記述できるというメリットもあります。
Java APIだけを利用していると、追加ライブラリとしてjarファイルを設定することなく、ソースコードのコンパイルや実行ができるようになります。これは大きなメリットであり、魅力的なのです。
Javaの経験はあるが、java.util.loggingは未経験な方も、これを機会にぜひ一度java.util.loggingを触ってみましょう。
次ページからは、java.util.loggingパッケージを使ったロギング・プログラミングを解説します。
| Index | ||||||||||
|
||||||||||
| Java Solution全記事一覧 |
ホワイトペーパー(TechTargetジャパン)
- Webの表示速度を遅くする「SSLハンドシェイク」とは (2010/2/9)
安全性を担保しようとWebページにSSLを適用すると、負荷の高い処理が実行される。速度と安全性は両立できるのか? - クラウド活用「雲活」のために押さえるべき39のポイント (2010/2/2)
活用するべきサービスか否か、クラウドの利点・問題点、クラウドプラットフォーム提供企業になるための条件、開発者がするべきことに分けて紹介 - 再利用性の高いクラス作成に重要な“アクセス制御” (2010/1/28)
Javaのアクセス修飾子public、private、protectedや、Eclipseで簡単に作れるアクセサメソッドgetter、setterについて解説 - DB設計の神ツール「ERMaster」なら、ここまでできる (2010/1/21)
直感的なUIに、カスタマイズ可能な、Excel出力のテーブル定義書、辞書機能など多機能なERモデリングの無料Eclipseプラグインです
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |









