0

当社のウェブアプリは現在、(System.outを介して)ログメッセージを生成し、後で他のプログラムによって自動的に分析されます。

Windowsサービスとして、tomcatは1日ごとにパーティション化された「logs」ディレクトリにログをきちんと生成します。

問題は、Linuxではすべてがstdoutに送られ、リダイレクトされる可能性があり、毎日のファイルに分割されないことです。

conf /context.xmlでオプション「<ContextswallowOutput=true ...」を試しましたが、出力はcatalina.outに送られ、分割されず、不便な行でコメントされます。

つまり、Linuxでtomcat 6.0を構成して、Windowsサービスと同じようにSystem.outを処理する方法。

よろしくお願いします-Artejera

4

1 に答える 1

1

私の知る限り、*NIX と win32 の Tomcat は同じように動作します。stdout はローテーションされていないファイルにリダイレクトされます。Tomcat をサービスとしてインストールするとき、(procrun をインストールする) Tomcat インストーラーを使用しましたか、それとも他の手順を使用してサービスをセットアップしましたか?

Linux 環境で、bin/catalina.sh を使用して Tomcat を起動していますか、それとも jsvc などを使用していますか? オプションは、起動戦略ごとに異なります。

jsvc を使用して Tomcat を起動することを検討している場合は、SIGUSR1 を jsvc プロセスに送信して、ログ ファイルを再度開くようにすることができます。そうすれば、cron ジョブまたは同様のものに次を実行させることができます。

$ mv $CATALINA_BASE/logs/catalina.out $CATALINA_BASE/logs/catalina-`date -I`.out
$ kill -SIGUSR1 $CATALINA_PID

何も入れずに catalina.out を再度開き、探しているローテーションを実現する必要があります。

bin/catalina.sh に固執する必要がある場合は、ファイルをハッキングして、ログ ファイルをローテーションできる chronolog などのログ サービスに stdout をパイプすることができます。

于 2012-05-22T15:29:52.587 に答える