◀ 9.

tomcat の起動 / 停止ログと catalina.log・catalina.out の違い

▶
この記事の要点
  • 標準のファイルログはCATALINA_BASE/logs。インストール先HOMEと実行インスタンスBASEを区別し、設定されたdirectoryと起動方式を確認する
  • catalina.log は java.util.logging 経由のログ(Tomcat 自身の動作ログ)
  • catalina.out は標準出力 + 標準エラー出力(System.out / System.err + 例外スタックトレース)
  • Unixの標準startが作るcatalina.outはそれ自体では日次分割しない。外部収集・サービス設定を含む実際の出力経路に合わせて容量と保持を管理する
  • Windowsサービスも標準出力を転送できるが、procrunのStdOutput/StdError等で出力先が決まる。catalina.outがないことと標準出力がないことは別

 

ログファイルの場所

Tomcat 10.1の標準ファイルhandlerは${catalina.base}/logsへ出力します。CATALINA_HOMEはインストール先、CATALINA_BASEは実行インスタンスの基点で、同じとは限りません。実際のlogging.propertiesのdirectoryと起動引数を確認してください。次のファイル名は設定例で、すべての環境で全ファイルが生成される保証ではありません。

ファイル名内容出力元
catalina.YYYY-MM-DD.logTomcat 本体の動作ログ(起動・停止・エラー)java.util.logging (JUL)
catalina.out標準出力 + 標準エラー(System.out.println / 例外スタックトレース等)OS のシェルリダイレクト
localhost.YYYY-MM-DD.loglocalhost コンテキストのログJUL
manager.YYYY-MM-DD.logManager アプリのログJUL
host-manager.YYYY-MM-DD.logHost Manager アプリのログJUL
localhost_access_log.YYYY-MM-DD.txtアクセスログ(HTTP リクエスト)AccessLogValve

catalina.log と catalina.out の違い

ファイルhandlerと標準出力の転送は別の経路です。ただし同じログイベントを両方のhandlerへ送る設定なら、同じメッセージが両方に現れます。

catalina.log(正確には catalina.YYYY-MM-DD.log)

  • Tomcat 内部の java.util.logging ハンドラ(1catalina.org.apache.juli.AsyncFileHandler)が出力
  • 出力対象: Tomcat コアクラスのログ(起動完了メッセージ・ライフサイクルイベント・コネクタ起動など)
  • conf/logging.properties で出力レベル・フォーマットを制御
  • 日付ごとに自動ローテーションされる(catalina.2026-05-15.log のように)
  • 同梱の logging.properties は maxDays = 90 を設定しており、既定では 90 日より古いログが自動削除される(日数は変更可)

catalina.out

  • Unixのcatalina.sh startでは標準出力/標準エラーを通常CATALINA_OUTへ転送します。既定はCATALINA_BASE/logs/catalina.out。catalina.sh runは前面へ出力し、IDE・コンテナ・サービスでは外側の実行方式も確認します
  • 出力対象: アプリ内の System.out.println / System.err.println、printStackTrace()、Tomcat 起動初期のメッセージなど
  • logging.properties の java.util.logging.ConsoleHandler 出力もここに混ざる
  • 標準startの通常ファイルへの転送自体は日次分割しません。外部の収集・ローテーション設定があれば挙動は変わります
  • WindowsサービスではprocrunのStdOutput/StdError等を確認します。Unixのcatalina.out名や出力設定をそのまま前提にしません

本番運用のローテーション設定

通常ファイルへ追記する構成では容量・保持期間・回収先を決めます。既存の収集方式と重複した設定を追加せず、必要な監査ログの欠落条件も確認します。

方法 1: logrotate(Linux 推奨)

次はUnixで通常ファイルを出力している場合の設定例です。実パス・権限・既存の収集/ローテーションと保持要件を確認してから検証環境で検討します。copytruncateはコピーと切詰めの間のログを失う可能性があり、無欠落の方式ではありません。確認のためだけに本番の設定作成や強制ローテーションを実行しません。

/opt/tomcat/logs/catalina.out {
    copytruncate
    daily
    rotate 14
    compress
    missingok
    notifempty
}

ポイント:

  • copytruncate: 元のファイルを維持してコピー後に切り詰める。ログファイルの再openのための再起動を避ける用途ですが、コピーと切詰めの間の追記を失い得る
  • daily: 日次でローテーション
  • rotate 14: 14 世代保持
  • compress: gzip 圧縮

方法 2: 標準出力の出力経路を確認する

CATALINA_OUTのパス変更だけでは標準出力はJULIのAsyncFileHandlerへ変換されません。Tomcat 10.1のUnixスクリプトには外部コマンドへ渡すCATALINA_OUT_CMDもありますが、named pipe・外部コマンド・権限や障害時の扱いが別途必要です。サービスやコンテナの収集設定も含めて方式を選び、配布物のcatalina.shを直接書き換えることを通常の手順にしません。

方法 3: アプリ側で log4j2 / SLF4J を使う(推奨)

アプリがLog4j2やSLF4JとLogback等を使う場合は、その出力先とrolling設定を確認します。Console出力なら引き続き標準出力へ流れるため、ライブラリを採用しただけでcatalina.outのローテーションや縮小が実現するわけではありません。Tomcat内部のJULIや他アプリのログとも別に確認します。

logging.properties のカスタマイズ

通常は${catalina.base}/conf/logging.propertiesを使い、java.util.logging.config.fileで別ファイルが指定されていれば実際の指定を確認します。下の設定抜粋はhandlerの出力先/保持/encodingとlevelの例です。handlerの登録やloggerへの接続も必要で、サイズ上限の設定ではありません。

# ハンドラの追加(catalina.log の場所・サイズ)
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8

# ログレベル(全体)
.level = INFO

# 特定パッケージのレベル
org.apache.catalina.startup.level = FINE
org.apache.coyote.level = WARNING

よくあるトラブル

Q. catalina.out にログが出ない

主な原因:

  • Windowsサービス: 実際のStdOutput/StdError/LogPathを確認します。ファイル名や転送の有無をUnixの既定から推測しません
  • 環境変数 CATALINA_OUT が変更されている: setenv.sh で別ファイルにリダイレクトされていないか確認
  • パーミッション: tomcat ユーザがログディレクトリに書き込めない

Q. ログが文字化けする(日本語が ??? になる)

JULIの対象handler.encoding、アプリの出力側、標準出力の転送先と閲覧側の文字コードを別々に確認します。handlerのUTF-8設定やJVMのfile.encodingだけで全経路の文字化けが直るとは限りません。JDK/起動方式の既定値を確認し、ログ調査の初手でJVM設定を一律変更しません。

Q. ログレベルを変えたのに反映されない

対象プロセスが読んでいる設定ファイル、logger/handlerのlevelと出力経路を先に確認します。設定ファイルの編集と稼働中loggerへの反映は同じ操作ではありません。管理機能によるlevel変更とファイル設定の再読込みも区別し、対応が確認できない環境で調査のためだけに再起動やロギング基盤の入替えを行いません。

関連記事

確認先: Tomcat 10.1 Logging、RUNNING、catalina.sh、Windowsサービス設定。logrotate manual。2026-10-28に公式資料を照合しました。実環境のTomcat・サービス・ログ回収やアプリの正常性を検証した記録ではありません。

子ページ

子ページはありません

同階層のページ
  1. tomcatインストール(CentOS)
  2. WARファイルのAutoDeploy設定
  3. tomcatの起動/停止(Linux, Mac)
  4. JRE(JVM)のJavaのバージョン確認方法
  5. エラー一覧
  6. CATALINA_HOMEの確認方法(Linux, Mac)
  7. 管理画面の開き方
  8. tomcatの起動確認方法
  9. tomcatの起動/停止ログとcatalina.log/catalina.outの違い
  10. CentOSにおけるポート開放方法
  11. Javaのバージョン変更方法(Mac編)

最近更新/作成されたページ