web-dev-qa-db-ja.com

Tomcatの最大ロール数と最大ログサイズを設定する方法

スペースに問題があるため、catalina.outのサイズを10Mに制限し、ロール数を前の3日に制限する必要があります。 logging.propertiesの設定のみで可能ですか?ありがとう。

28
user710818

Tomcatは内部的にJULを使用してログを記録するため、システムプロパティJava.util.logging.config.fileを使用してプロパティファイルのファイルパスを指定できます。このプロパティファイルの形式については、JRE_HOME/lib/logging.properties(JULが使用するデフォルトの構成ファイル)を参照できます。

ただし、 JULは日次ローテーションをサポートしていません 。気にしない場合は、そのJava.util.logging.FileHandlerを使用して、代わりにログのファイルサイズに基づいてログファイルをローテーションできます。

# Define the FileHandler 
handlers= Java.util.logging.FileHandler

# Configure the FileHandler
Java.util.logging.FileHandler.pattern = %h/Java%u.log
Java.util.logging.FileHandler.limit = 1024000
Java.util.logging.FileHandler.count = 3
Java.util.logging.FileHandler.formatter =  Java.util.logging.SimpleFormatter
Java.util.logging.FileHandler.append=true

次に、各ログファイルの制限サイズは1024000バイト(1MB)になり、最大で3つの出力ログファイルにロールされます。設定の詳細については、 Java.util.logging.FileHandler のJavadocを参照できます。


JULを使用して毎日ローテーションをサポートする場合は、ファイルハンドラーを実装する必要があります。 このブログ からカスタム実装を見つけました。まだ試していません。興味があれば参照できます。

37
Ken Chan

少なくともTomcat 5.5の「Apache Tomcatの内部ログはJULIを使用しているため、Java.util.logging(JUL)フレームワークを使用するようにハードコーディングされたApache Commons Loggingの名前が変更されたフォーク」。

JULIの最近のバージョンとアクセスログバルブは、デフォルトでYYYY-MM-dd日付形式を使用します。 juli.FileHandlerログの名前は{prefix} {date} {suffix}で、rotateがtrue(デフォルト)の場合、dateはyyyy-MM-ddです。 falseの場合、日付は削除され、Tomcatはファイルのローテーションを処理しません。保持されるTomcatローテーションログの数を制限するmaxDaysパラメーターもあります。たとえば、これを3に設定し、3日間分のログのみを保持できます。

アクセスログバルブはより詳細に構成できます。たとえば、デフォルトのyyyy-MM-ddからfileDateFormatを指定できるため、HHを追加して1時間ごとにローテーションしたり、単に月ごとにローテーションしたりできます。 renameOnRotateを使用して、回転するまで書式設定された命名を遅らせることもできます。

これまたはJULのサイズとカウントに基づいた回転よりも手の込んだものが必要な場合は、rotableをfalseに設定し、Tomcatの外部で回転を処理するのが最善です。

1
jla