Apache Tomcat 6.0の日本語ドキュメント
公式にはねーしThe Ja-Jakarta Project - Tomcat翻訳は5で止まってるしどうしたもんかと思ったけど、沖電気なる会社がOSSでドキュメントを公開していたらしい。 いたらしい。
つまり2015年時点ではごろっと消えているんだけど、最終版ではApache Tomcat 6.0の日本語訳が一部進んでいたらしい。 Apache Tomcat 6.0 - ドキュメンテーション 索引 翻訳してある所の方が少ないレベルだけど、俺が探していたロギングの項目はしっかり訳してあったのでメモ・・・というか転載させてもらう。 [quote font="program" width_="auto" source='Apache Tomcat 6.0 - Tomcat での Logging' id="post-2581-document" ]Apache Tomcat 6.0 Tomcat での Logging
重要な注意
デフォルトでは java.util.logging だけが core Tomcat で利用可能である。 Tomcat は,その [java.util.logging の] logger に向けて [処理をリダイレクトするように] ハードコードされた logging 実装の改名したパッケージを使っているからである。 代替的な logger の使用は,extra コンポーネントの構築後に利用可能である [言い回しがくどいのですが原文も Usage of alternative ... is available ... です] (extras components ドキュメンテーションを参照)。 extra コンポーネントは完全な commons-logging 実装を含んでいる。 [要するに,デフォルトでは java.util.logging 専用の簡易版 commons-logging を使っているから, 内部実装のログ出力を log4j に切り替えるには extra が必要だ,ということです]
はじめに
Tomcat 6.0 はその内部コード全体で Commons Logging を使っており, java.util.logging や Log4J など,開発者が必要に応じてロギング・コンフィグレーションを選択できるようにしている。 Commons Logging は,特定のロギング実装に依存することなく, さまざまなログ・レベルにわたって階層的にログを行う能力を Tomcat に与えている。
Tomcat 6.0 での重要な変更点として,localhost_log を作るために前のバージョンにあった エレメントは,もはや の妥当な入れ子エレメントではない。 そのかわりに,デフォルトの Tomcat コンフィグレーションは java.util.logging を使う。 もしも開発者が Tomcat 内部の詳細なロギング (つまり Tomcat エンジン内部で何が起こっているか) を収集したいならば,下記に詳述するように java.util.logging や log4j などの ロギング・システムを設定すべきである。 [「前のバージョン」 previous versions とありますが,この文書は Tomcat 5.5 からありました]
Tomcat 6.0 は,君が実行時の例外/スタック・トレースのログとして親しんでいたかもしれない localhost_log を廃止した。 これらのタイプのエラーはたいていは未捕獲の例外によって投げられるが,なおも開発者にとって価値がある。 それらは現在 stdout ログに見ることができる。
もしも君が Tomcat のコード内部からの,コンテキストにまたがる詳細なロギングをセットアップ する必要があるならば,単純な log4j コンフィグレーションを使うことができる。 このロギングは,君が使うことに選んだログ・レベルによっては非常に冗舌になることに注意せよ。 log4j ロギング・コンフィグレーションは,スタック・トレース・タイプのロギングを生成しないことにも注意せよ。 それらのスタック・トレースは上述の stdout に出力される。
次のステップにしたがって,tomcat.log という名前のファイルに Tomcat 内部のロギング出力が書き込まれるようにセットアップしてみよう:
- 次の内容の log4j.properties というファイルを作成して,$CATALINA_HOME/lib にセーブする。 log4j.rootLogger=debug, R log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=${catalina.home}/logs/tomcat.log log4j.appender.R.MaxFileSize=10MB log4j.appender.R.MaxBackupIndex=10 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n log4j.logger.org.apache.catalina=DEBUG, R
- Log4J (v1.2 以降) をダウンロードして log4j jar を $CATALINA_HOME/lib に置く。
- commons-logging 追加コンポーネントを extras.xml を使ってビルドする。 [ここで] extras.xml は Tomcat ソース・バンドルの一部である Ant ビルド・スクリプトである。
- $CATALINA_HOME/bin/tomcat-juli.jar を output/extras/tomcat-juli.jar で置き換える。
- output/extras/tomcat-juli-adapters.jar を $CATALINA_HOME/lib に置く。
- Tomcat をスタートさせる。
- log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG, R
- log4j.logger.org.apache.catalina.core=DEBUG, R
- log4j.logger.org.apache.catalina.session=DEBUG, R
java.util.logging
JDK に用意されている java.util.logging のデフォルト実装は,あまりに限定的で有用ではない。 JDK logging の限定性は, コンフィグレーションが VM 単位のため,web アプリケーション単位でのロギングが持てない点にあるといえるだろう。 したがって Tomcat は,デフォルト・コンフィグレーションでは,デフォルトの LogManager 実装を, その欠点に対処した JULI というコンテナ・フレンドリーな実装に置き換える。 JULI は標準の JDK java.util.logging と同じコンフィグレーション・メカニズムを, プログラム的なアプローチであれ,プロパティ・ファイルであれサポートする。 主な違いは,クラスローダ単位のプロパティ・ファイルをセットできることと (これは簡単 [で] 再デプロイ・フレンドリーな web アプリケーション・コンフィグレーションを可能にする), ハンドラを定義して logger に割り当てることができるように 少々拡張した構文要素をプロパティ・ファイルがサポートしていることである。
JULI は Tomcat 6 ではデフォルトでイネーブルになっており, 通常のグローバルな java.util.logging コンフィグレーションに加えて, クラスローダ単位のコンフィグレーションをサポートする。 つまり,logging は次のレイヤーで設定できる。
- JKD の logging.properties ファイルで。 どの JDK を Tomcat が使っているのかを見るために JAVA_HOME 環境変数の設定をチェックする。 ファイルは $JAVA_HOME/jre/lib にあるはずだ。 あるいは,システム・プロパティ java.util.logging.config.file を使ってどこか別の場所にあるグローバルなコンフィグレーション・ファイルを使うことや, java.util.logging.config.class を使ってプログラム的なコンフィグレーションを使うことができる。
- logging.properties ファイルを使った各クラスローダで。 これは,Tomcat コアに対して1本のコンフィグレーションを持つばかりでなく, 各 web アプリに対してもそれと同じライフサイクルを持つ個別のコンフィグレーションを持てることを意味する。
- 接頭辞をハンドラ名に付けられるから, 1個のクラスから複数のハンドラをインスタンス化できる。 接頭辞は数字ではじまり,"." で終わる文字列である。 例えば 22foobar. は妥当な接頭辞である。
- Java 5.0 と同様,logger は loggerName.handlers プロパティを使ってハンドラのリストを 定義できる。
- デフォルトでは,logger にハンドラがあるとき,logger は自分の親への委譲はしない。 これは boolean 値をとる loggerName.useParentHandlers プロパティで logger ごとに変更できる。
- root logger はそのハンドラを .handlers プロパティで定義できる。
- ${systemPropertyName} ではじまるプロパティ値に対するシステム・プロパティ置換。
[/quote]
おまけ。公式の最新のドキュメント Apache Tomcat 8 (8.0.24) - Logging in Tomcat 参考 話は変わるけどTomcat6の翻訳は沖電気 - SIer魂 OSS資料室|OSSソリューション|OKI