2012-02-09 70 views
5

サイズ制限に達すると、ログファイルをロールオーバーするようにTomcatを設定しようとしています。私はWindowsサービスとしてTomcatを実行しており、すべての標準出力をcatalina.logにリダイレクトしています。これは、logging.propertiesによってサイズ制限を設定するように設定した方法です。しかし、それは動作していません。catalina.logファイルをロールオーバーするようにTomcatを設定する方法

logging.properties

handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 

.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 

############################################################ 
# Handler specific properties. 
# Describes specific configuration info for Handlers. 
############################################################ 

1catalina.org.apache.juli.FileHandler.level = FINE 
1catalina.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001 
1catalina.org.apache.juli.FileHandler.prefix = catalina. 
1catalina.org.apache.juli.FileHandler.limit = 100000 # size 100kb 
1catalina.org.apache.juli.FileHandler.count = 5 


2localhost.org.apache.juli.FileHandler.level = FINE 
2localhost.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001 
2localhost.org.apache.juli.FileHandler.prefix = localhost. 

3manager.org.apache.juli.FileHandler.level = FINE 
3manager.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001 
3manager.org.apache.juli.FileHandler.prefix = manager. 

4host-manager.org.apache.juli.FileHandler.level = FINE 
4host-manager.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001 
4host-manager.org.apache.juli.FileHandler.prefix = host-manager. 

java.util.logging.ConsoleHandler.level = FINE 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 


############################################################ 
# Facility specific properties. 
# Provides extra control for each logger. 
############################################################ 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler 

# For example, set the com.xyz.foo logger to only log SEVERE 
# messages: 
#org.apache.catalina.startup.ContextConfig.level = FINE 
#org.apache.catalina.startup.HostConfig.level = FINE 
#org.apache.catalina.session.ManagerBase.level = FINE 
#org.apache.catalina.core.AprLifecycleListener.level=FINE 

しかし1catalina.org.apache.juli.FileHandler.limit = 100000は

+0

なぜあなたもWebアプリケーションでstdoutに何かを書きます!あなたが話すような負荷があれば、これはあなたのパフォーマンスを殺すでしょう。 log4jやその他のログライブラリを使用できませんか? – Olaf

+0

サービスとしてtomcatを実行すると、コンソールメッセージは直接stdout.logに送られます。 – Srinivas

+0

とにかく私はstdout.logを返すことができますか? – Srinivas

答えて

8

org.apache.juli.FileHandlerファイルのサイズに基づいて、回転をサポートしていていませんが動作していないようですlimitcountプロパティを設定しようとしていません(see docs)。代わりに、サイズベースのローテーションをサポートする標準Java java.util.logging.FileHandlerを使用できます。あなたの設定に以下の行を変更する必要があります。

handlers = 1catalina.java.util.logging.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 

.handlers = 1catalina.java.util.logging.FileHandler, java.util.logging.ConsoleHandler 

は、Java FileHandlerにTomcatしかしFileHandler

1catalina.java.util.logging.FileHandler.level = FINEST 
1catalina.java.util.logging.FileHandler.pattern = <your log dir>/catalina%g.log 
1catalina.java.util.logging.FileHandler.limit = 100000 
1catalina.java.util.logging.FileHandler.count = 5 
1catalina.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter 

よりもわずかに異なるように構成されていることに注意してください、私は、ファイルに標準出力をリダイレクトすることを確認しないんだけどロガーによって書かれたものはうまく動作し、あなたが望むものを達成するのに役立ちます。 Official Tomcat 7 documentationによると

1


パブリッククラスのFileHandlerがjava.util.logging.Handler {プレフィックス}という名前のファイルにログメッセージを追加するハンドラの

実装を拡張{date} {接尾辞}を設定されたディレクトリに置きます。

次の設定プロパティを使用できます。

  • ディレクトリ - ログファイルを作成するディレクトリ。パスが絶対パスでない場合は、アプリケーションの現在の作業ディレクトリ に相対的です。 Apache Tomcatの設定ファイルは通常 $ {catalina.base} /ログ、 デフォルト値このプロパティの絶対パスを指定します。ログ

  • 回転可能に - trueの場合、ログファイルは真夜中過ぎ最初の書き込みに回転することになりますファイル名は{接頭辞} {日付} {接尾辞}、 となります。日付はyyyy-MM-ddです。 falseの場合、ファイルは回転されず、 ファイル名は{接頭辞} {接尾辞}になります。デフォルト値:true

  • 接頭辞 - ログファイル名の先頭部分。デフォルト値:juli。

  • 接尾辞 - ログファイル名の末尾部分。デフォルト値:.log

  • bufferSize - バッファリングを設定します。値0はシステムのデフォルトバッファリングを使用します(通常は8Kバッファが使用されます)。 の値は、各ログ書き込み時に書き込み側を強制的にフラッシュします。値が0より大きい場合は、 BufferedOutputStreamを定義済みの値で使用しますが、システム のデフォルトバッファリングも適用されます。デフォルト値:-1

  • エンコーディング - ログファイルで使用される文字セット。デフォルト値:空の文字列。システムのデフォルトの文字セットを使用します。

  • レベル - このハンドラのレベルしきい値。可能なレベルについては、java.util.logging.Levelクラスを参照してください。デフォルト値: ALL

  • filter - このHandlerのjava.util.logging.Filter実装クラス名。デフォルト値:unset

  • フォーマッタ - このハンドラのjava.util.logging.Formatter実装クラス名です。デフォルト値: java.util.logging.SimpleFormatter