20

http://tomcat.apache.org/tomcat-7.0-doc/logging.htmlに従って、Log4j構成でApache Tomcat 7.0.40を使用しています

my で実際には構成されていないいくつかのログファイルが作成されることを除いて、すべてが期待どおりに機能しています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

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

  • コモンズデーモン。yyyy-MM-dd .log
  • tomcat7-stderr. yyyy-MM-dd .log
  • tomcat7-stdout. yyyy-MM-dd .log

ご覧のとおりDailyRollingFileAppender、メンテナンスフリーのシステムが必要なため、これは望ましくありません。したがって、ログが無制限に大きくなるのを防ぐためにRollingFileAppenderwithを使用したいと思います。maxBackupIndex

stdoutstderrおよびcommons-daemonログはどこで設定できますか? どこかに設定がありますか、それとも自分の Log4j 設定で設定を上書きできますか? どうも

4

5 に答える 5

20

私は、私たちのシステムの 1 つで、同様の要件があり、将来的に同じ問題に直面することを予見しています。そのため、自分で解決策/回避策を見つけることに熱心でした。

最初に 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.catalinaconfig を追加して、ログを独自のログ ファイル にリダイレクトします。

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

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

    (これで、定義したロールオーバー数とログ サイズの制限をYourAppender設定MaxBackupIndexして達成することができます。)MaxFileSize

上記のアプローチがうまくいかない場合; 2番目のアプローチで述べたように、外部ユーティリティを使用してみることができます

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

logrotate制御できないログに対して目的の効果を達成するために使用できると呼ばれる単純なツールがあります。ここにいくつかのリンクがあります。

このツールの使い方は非常に簡単で、これらのリンクをすばやく実行すると、必要なものが得られるはずです.

于 2014-09-25T17:40:43.507 に答える
13

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

それが役立つことを願っています。

于 2013-12-09T17:01:03.810 に答える
1

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

于 2014-08-22T08:57:01.533 に答える