web-dev-qa-db-ja.com

内部Tomcat7 stdout / stderrログファイルを構成する場所

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

私の構成には含まれていませんが、作成されるファイルは次のとおりです。

  • commons-daemon.yyyy-MM-dd.log
  • Tomcat7-stderr.yyyy-MM-dd.log
  • Tomcat7-stdout.yyyy-MM-dd.log

ご覧のとおり、毎日のローリングファイルアペンダーを使用していますが、これはメンテナンスフリーシステムが必要なため、望ましくありません。

では、stdout、stderr、およびcommons-daemonのログはどこで構成できますか?どこかに何らかの設定がありますか、独自のlog4j設定で設定を上書きできますか? THX

15
räph

私たちのシステムのいずれかで、近い将来、同様の要件が発生し、同じ問題に直面することが予想されます。解決策/回避策を見つけることに熱心でした。

最初にcommons-daemonを調べて、ログでmaxbackupindexを達成するために実行できる構成があるかどうかを確認しました。しかし、検索はあまり役に立ちませんでした。

しかし、「Tomcatログの制限を超えて」対処するために人々が取る2つのアプローチを見つけました。

最初のアプローチ:Tomcatの内部構成

  1. パスでTomcatのcontext.xmlを見つけます:-

    YourTomcatInstallDir\conf\context.xml  
    
  2. コンテキストタグを編集して、以下のようにswallowOutput="true"を追加します。

    <Context swallowOutput="true">
    

    (これにより、すべてのstdout/stderrが飲み込まれ、基礎となるロギングシステムにリダイレクトされます。)

  3. Log4j.propertiesで; org.Apache.catalinaログを独自のログファイルにリダイレクトする構成を追加します。

    ロガーは次のようになります。

    log4j.logger.org.Apache.catalina=INFO, YourAppender
    

    YourAppenderでは、MaxBackupIndexMaxFileSizeを設定して、定義したロールオーバー数とログサイズの制限を達成できます。)

上記のアプローチが機能しない場合; 2番目のアプローチで述べたように、外部ユーティリティを使用してみてください。

2番目のアプローチ:「logrotate」を使用して外部で構成する

logrotateと呼ばれる単純なツールを使用して、制御できないログに望ましい効果をもたらすことができます。始めるためのリンクを次に示します。

このツールの使用法は非常に簡単であり、これらのリンクをすばやく実行すると、必要なものが得られます。

18
Abhin

私は同じ問題を抱えていて、最終的に解決策を見つけました。 Tomcat 7 for Windowsには、Tomcatの監視と呼ばれるTomcatプロパティアプリケーションがあります。 [ロギング]タブで、リダイレクトstdoutおよびstderr入力ボックスの「auto」値を削除する必要があります。空白のままにすると、これらのファイルは作成されません。その後、log4jを使用して、将来のデバッグ目的で重要なファイルのローリングログファイルを作成できます。

お役に立てば幸いです。

13
msilveus

Windowsでは、Tomcat/bin/service.batに移動し、PR_LOGPATH変数(すべて)を編集する必要があります。 Linuxサービスでの「サービスの削除」と「サービスのインストール」によるサービスの再インストールはおそらく非常に似ている必要があります

1
AlexK80

Apache「Commons Daemon Service Manager」によるファイル作成を無効にします

短いバージョン:サービスアプリ内のautoテキストを削除します。これにより、stdoutおよびstderrファイルの作成が無効になります。あなたが行き詰まっている「commons-daemon」ファイルだと思う。

ロングバージョン以下を参照してください。


Tomcat for Windowsには、特別な小さなサービスアプリケーションがあります。このアプリにはいくつかの名前があります。例:Commons Daemon Service Managerprocrun。通常、EXEファイルはTomcat7w.exe/YourServiceNameHerew.exe/Tomcat9w.exeのような名前になります。

WindowsアイコンにはMonitor Tomcatというラベルが付いています。これを開始すると、Loggingタブに直接移動します。

"Monitor Tomcat" icon

「ロギング」タブのスクリーンショットを次に示します。このアプリはいくつかのファイルを生成できます:

  1. commons-daemonログファイル。
  2. Pid file。私たちは今このことを気にしません。
  3. Redirect Stdoutログファイル。
  4. Redirect Stderrorログファイル。

"Logging" tab of procrun app

したがって、3つのログファイルがあります。これらのどれもデフォルトでは回転されません。 ProcRunはそのための機能を提供しません。

だから私の頭に浮かぶいくつかの回避策があります:

  1. Stdout/stderrファイルの作成を無効にします(以下を参照)。それでも、古い「commons-daemon」ファイルをクリーンアップする方法が必要になります。 (これらのファイルの作成を無効にする方法はありません。テキストフィールドを空にするだけではうまくいきません。)しかし、少なくともそれらはサイズが小さいはずです。
  2. Tomcatサービスを定期的に再起動します。これにより、現在の日付がタイムスタンプされたファイルが作成されます。それでも、古いcommons-daemon/stdout/stderrファイルをクリーンアップする方法が必要になります。
  3. 外部のLogrotate-for-Windowsユーティリティを使用して、現在のファイルを回転し、古い回転ファイルをクリーンアップします。
  4. ProcRunを使用せずに、他の方法でWindows Tomcatを起動しないでください。これにより、commons-daemon/stdout/stderrファイルは作成されません。

公式の位置は、おおよそ「何ですか?catalina/stdout/stderrファイルが大きくなりすぎていますか?とにかく、何もログに記録すべきではありません。」言い換えると、公式にサポートされている唯一のオプションは、ナンバー1(および4)のようです。

Stdout/stderrの作成を無効にする

私のTomcatでは、「commons-daemon」ファイルは通常非常に小さく、Tomcatの起動時またはシャットダウン時に数行しか受信しません。 Level: Debugでも。

リダイレクトされたstdoutおよびstderrファイルは非常に大きくなる場合があります。

ただし、テキストフィールドからautoテキストを削除できます。これにより、これらのファイルの生成が完全に無効になります。

参考文献

1
StackzOfZtuff

これら3つのログが作成される場所をカスタマイズしたいだけの場合:Tomcatをサービスとして実行していて、どこでcommons-デーモン、stderror、およびstdoutが常駐している場合は、コマンドラインパラメーター--LogPathを使用してサービスを開始するか、サーバーマシンでカスタムパスを使用して環境変数PR_LOGPATHを設定できます。

これは、他のパラメーターも一緒にここに記載されています: https://Tomcat.Apache.org/Tomcat-8.0-doc/windows-service-howto.html

0
Ioan M