http://Tomcat.Apache.org/Tomcat-7.0-doc/logging.html に従って、log4j構成でTomcat 7.0.40を使用しています
Log4j.propertiesで実際に構成されていないログファイルがいくつか作成されることを除いて、すべてが期待どおりに機能しています。
log4j.rootLogger=INFO, CATALINA
# Define all the appenders
log4j.appender.CATALINA=org.Apache.log4j.RollingFileAppender
log4j.appender.CATALINA.File=${catalina.base}/logs/catalina.log
log4j.appender.CATALINA.MaxFileSize=3MB
log4j.appender.CATALINA.MaxBackupIndex=10
log4j.appender.CATALINA.Append=true
log4j.appender.CATALINA.Encoding=UTF-8
log4j.appender.CATALINA.layout = org.Apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.LOCALHOST=org.Apache.log4j.RollingFileAppender
log4j.appender.LOCALHOST.File=${catalina.base}/logs/localhost.log
log4j.appender.LOCALHOST.MaxFileSize=3MB
log4j.appender.LOCALHOST.MaxBackupIndex=10
log4j.appender.LOCALHOST.Append=true
log4j.appender.LOCALHOST.Encoding=UTF-8
log4j.appender.LOCALHOST.layout = org.Apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.MANAGER=org.Apache.log4j.RollingFileAppender
log4j.appender.MANAGER.File=${catalina.base}/logs/manager.log
log4j.appender.MANAGER.MaxFileSize=3MB
log4j.appender.MANAGER.MaxBackupIndex=10
log4j.appender.MANAGER.Append=true
log4j.appender.MANAGER.Encoding=UTF-8
log4j.appender.MANAGER.layout = org.Apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.Host-MANAGER=org.Apache.log4j.RollingFileAppender
log4j.appender.Host-MANAGER.File=${catalina.base}/logs/Host-manager.log
log4j.appender.Host-MANAGER.MaxFileSize=3MB
log4j.appender.Host-MANAGER.MaxBackupIndex=10
log4j.appender.Host-MANAGER.Append=true
log4j.appender.Host-MANAGER.Encoding=UTF-8
log4j.appender.Host-MANAGER.layout = org.Apache.log4j.PatternLayout
log4j.appender.Host-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.CONSOLE=org.Apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding=UTF-8
log4j.appender.CONSOLE.layout = org.Apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
# Configure which loggers log to which appenders
log4j.logger.org.Apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, LOCALHOST
log4j.logger.org.Apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]=\
INFO, MANAGER
log4j.logger.org.Apache.catalina.core.ContainerBase.[Catalina].[localhost].[/Host-manager]=\
INFO, Host-MANAGER
私の構成には含まれていませんが、作成されるファイルは次のとおりです。
ご覧のとおり、毎日のローリングファイルアペンダーを使用していますが、これはメンテナンスフリーシステムが必要なため、望ましくありません。
では、stdout、stderr、およびcommons-daemonのログはどこで構成できますか?どこかに何らかの設定がありますか、独自のlog4j設定で設定を上書きできますか? THX
私たちのシステムのいずれかで、近い将来、同様の要件が発生し、同じ問題に直面することが予想されます。解決策/回避策を見つけることに熱心でした。
最初にcommons-daemonを調べて、ログでmaxbackupindexを達成するために実行できる構成があるかどうかを確認しました。しかし、検索はあまり役に立ちませんでした。
しかし、「Tomcatログの制限を超えて」対処するために人々が取る2つのアプローチを見つけました。
パスでTomcatのcontext.xml
を見つけます:-
YourTomcatInstallDir\conf\context.xml
コンテキストタグを編集して、以下のようにswallowOutput="true"
を追加します。
<Context swallowOutput="true">
(これにより、すべてのstdout/stderrが飲み込まれ、基礎となるロギングシステムにリダイレクトされます。)
Log4j.propertiesで; org.Apache.catalina
ログを独自のログファイルにリダイレクトする構成を追加します。
ロガーは次のようになります。
log4j.logger.org.Apache.catalina=INFO, YourAppender
(YourAppender
では、MaxBackupIndex
とMaxFileSize
を設定して、定義したロールオーバー数とログサイズの制限を達成できます。)
上記のアプローチが機能しない場合; 2番目のアプローチで述べたように、外部ユーティリティを使用してみてください。
logrotate
と呼ばれる単純なツールを使用して、制御できないログに望ましい効果をもたらすことができます。始めるためのリンクを次に示します。
このツールの使用法は非常に簡単であり、これらのリンクをすばやく実行すると、必要なものが得られます。
私は同じ問題を抱えていて、最終的に解決策を見つけました。 Tomcat 7 for Windowsには、Tomcatの監視と呼ばれるTomcatプロパティアプリケーションがあります。 [ロギング]タブで、リダイレクトstdoutおよびstderr入力ボックスの「auto」値を削除する必要があります。空白のままにすると、これらのファイルは作成されません。その後、log4jを使用して、将来のデバッグ目的で重要なファイルのローリングログファイルを作成できます。
お役に立てば幸いです。
Windowsでは、Tomcat/bin/service.batに移動し、PR_LOGPATH変数(すべて)を編集する必要があります。 Linuxサービスでの「サービスの削除」と「サービスのインストール」によるサービスの再インストールはおそらく非常に似ている必要があります
短いバージョン:サービスアプリ内のauto
テキストを削除します。これにより、stdoutおよびstderrファイルの作成が無効になります。あなたが行き詰まっている「commons-daemon」ファイルだと思う。
ロングバージョン以下を参照してください。
Tomcat for Windowsには、特別な小さなサービスアプリケーションがあります。このアプリにはいくつかの名前があります。例:Commons Daemon Service Manager
、procrun
。通常、EXEファイルはTomcat7w.exe
/YourServiceNameHerew.exe
/Tomcat9w.exe
のような名前になります。
WindowsアイコンにはMonitor Tomcat
というラベルが付いています。これを開始すると、Logging
タブに直接移動します。
「ロギング」タブのスクリーンショットを次に示します。このアプリはいくつかのファイルを生成できます:
commons-daemon
ログファイル。Pid file
。私たちは今このことを気にしません。Redirect Stdout
ログファイル。Redirect Stderror
ログファイル。したがって、3つのログファイルがあります。これらのどれもデフォルトでは回転されません。 ProcRunはそのための機能を提供しません。
だから私の頭に浮かぶいくつかの回避策があります:
公式の位置は、おおよそ「何ですか?catalina/stdout/stderrファイルが大きくなりすぎていますか?とにかく、何もログに記録すべきではありません。」言い換えると、公式にサポートされている唯一のオプションは、ナンバー1(および4)のようです。
私のTomcatでは、「commons-daemon」ファイルは通常非常に小さく、Tomcatの起動時またはシャットダウン時に数行しか受信しません。 Level: Debug
でも。
リダイレクトされたstdoutおよびstderrファイルは非常に大きくなる場合があります。
ただし、テキストフィールドからauto
テキストを削除できます。これにより、これらのファイルの生成が完全に無効になります。
これら3つのログが作成される場所をカスタマイズしたいだけの場合:Tomcatをサービスとして実行していて、どこでcommons-デーモン、stderror、およびstdoutが常駐している場合は、コマンドラインパラメーター--LogPathを使用してサービスを開始するか、サーバーマシンでカスタムパスを使用して環境変数PR_LOGPATHを設定できます。
これは、他のパラメーターも一緒にここに記載されています: https://Tomcat.Apache.org/Tomcat-8.0-doc/windows-service-howto.html