tomcat7の内部stdout/stderrログファイルを設定する場所 質問する

tomcat7の内部stdout/stderrログファイルを設定する場所 質問する

私はApache Tomcat 7.0.40とLog4jの設定を使用しています。ログファイル

いくつかのログ ファイルが作成されることを除いて、すべてが期待どおりに動作しています。これは実際には構成されていません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デーモン。年-月-日。ログ
  • tomcat7-stderr。年-月-日。ログ
  • tomcat7-stdout。年-月-日。ログ

ご覧のとおり、彼らは を使用していますが、メンテナンスフリーのシステムが必要なので、これは望ましくありません。したがって、ログが無制限に増えるのを防ぐために、をDailyRollingFileAppender備えた を好みます。RollingFileAppendermaxBackupIndex

stdoutでは、、およびログstderrはどこで設定できますかcommons-daemon? どこかに設定があるのでしょうか、それとも自分の Log4j 設定で設定を上書きできますか? よろしくお願いします

ベストアンサー1

将来、当社のいずれかのシステムで同様の要件が発生したり、同じ問題に直面することが予想されます。そのため、自分で何らかの解決策や回避策を見つけたいと考えていました。

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

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

最初のアプローチ: Tomcat 内で内部的に設定

  1. context.xmlTomcatのパスを検索します:-

    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設定できるようになりましたMaxBackupIndex。 )MaxFileSize

上記の方法がうまくいかない場合は、2番目の方法で説明した外部ユーティリティを使用してみてください。

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

logrotate制御できないログに対して目的の効果を達成するために、と呼ばれるシンプルなツールが利用可能です。開始するためのリンクをいくつか示します。

このツールの使い方は非常に簡単で、これらのリンクをざっと実行するだけで必要なものが手に入ります。

おすすめ記事