私たちのcatalina.outファイルは非常に大きくなります(これを防ぐために私のアプリケーションではslf4jとlogbackを実装しています)。しかし今のところ、ログを循環させるとき、catalina.outをcatalina {date}にコピーし、cat /dev/null > catalina.out
を実行します。問題は、Tomcatが次の朝に再起動するまで、Tomcatがそれ以降ログを取得しないことです。これは理想的ではありません。なぜこれが起こるのですか?それを避ける方法はありますか?さらなるロギングを無効にすることなくcatalina.outをクリアするには?
答えて
ケーキとして簡単:echo > catalina.out
。ファイル記述子は変更されず、java
はそのファイルへの書き込みを続けることができます。
cat/dev/nullがそれを変更するのはなぜ、エコーはしないのかなど、ファイル記述子の変更はしないでください。 – Jibbyj
@ジビービー、正直言って。私は知らない。それはその仕事をします。 –
あなたが探しているのはログのローテーションです。プロセスが実行されている間は低レベルのsignal supportが必要なので、これを間接的に行う必要があります。これを実現するにはthis procedureを使用できます。これはTomcat Wikiにも記載されています。
伝統的な方法は、それは、ログファイルをクリアし、現在開いているファイルハンドルを保持しているプロセスは中断されません
cat /dev/null > catalina.out
にあります。
より良い方法は、ログファイルを回転させることによって、ログ情報を失わないことです。これを行うには、ファイル/etc/logrotate.d/tomcat
を作成または編集し、その内容を持っているために、
/var/log/tomcat/catalina.out { copytruncate daily rotate 7 compress missingok size 5M }
は、次に(ルートとして)コマンドを使用して、logrotateの
/usr/sbin/logrotate /etc/logrotate.conf
を再起動して読み、あなたはログファイルが毎日出て回転させる必要がありますまたはサイズが5Mを超えた場合、デバッグの目的で最後の7つのログが保持されます。
tomcat catalina.outファイルのパスが異なる場合は、ログファイルの場所を変更する必要があります。同様に、あなたはlogrotateについて読むことができ、好きなように他の値を変更することができます。 –
私は伝統的な方法を使用しましたが、間違いなく現在開いているファイルハンドルを保持しているプロセスを混乱させるようです... – Jibbyj
作成しているlogrotateファイルの内容を説明すると非常に役に立ちます。また、 'tomcat'というファイルを作成するのは、プロセス名が正しい場合にのみ適切です。例えば、tomcat7のUbuntu 14では、プロセスは実際には 'tomcat7'です。 – Madbreaks
ファイルを切り捨てることができます。これは本質的にあなたがしようとしているものなので、論理的にも意味があります。
truncate -s 0 M catalina.out
FYI:cat /dev/null > file
を行うと、ファイルのinodeを変更しません。
logs]$ls -i test.log
19794063 test.log
logs]$
logs]$cat /dev/null > test.log
logs]$ls -i test.log
19794063 test.log
また、私はこれらのコマンドの間にtest.log
にライブデータを尾行別のコマンドを持っていました。これらのコマンドを実行した後、test.log
へのテールは問題なく動作しました。これはなぜそれが動作を停止したとしてあなたの質問に答えることはありませんが、inodeの変更を排除するのに役立ちます。
- 1. Pythonロギング - インポートされたモジュールからのロギングを無効にする
- 2. OWIN - 無効なWSFederation Cookieをクリアする
- 3. Springインテグレーションのロギングを無効にする
- 4. SMSロギングを無効にする
- 5. デバッグレベルのロギングが有効な場合、BlazeDSコールから返されるデータのロギングを無効にするにはどうすればよいですか?
- 6. c3p0のSystem.errへのロギングを無効にすることはできますか?
- 7. コードのspdlogロギングを有効/無効にする方法は?
- 8. Javaコードからlog4jロギングを無効にする方法
- 9. 無効にすることなくドロップダウンリストの変更を制限する方法
- 10. フラグメントをポップすることなく、fragmentManagerのバックスタックをクリアするには?
- 11. 右クリックが無効になることを無効にします。
- 12. タイプを知らなくてもコンポーネントを無効にする
- 13. Jenkins IRCプラグイン - ロギングを無効にする方法は?
- 14. Jersey Client 2.xでロギングを無効にする方法は?
- 15. Windowsインストーラーのロギングを無効にする方法は?
- 16. Delphi:インライン展開を無効にすることなく、インライン展開についてヒントを無効にすることはできますか?
- 17. オーバーフローを隠すことなく水平スクロールを無効にする
- 18. ヘッダーを失うことなくDataSetにバインドされたDataGridViewをクリアするVB.NET
- 19. optionsCaptionを使用するとオプションが無効にならない
- 20. 親メニュー項目を無効にしないでクリックすることを無効にする方法は?
- 21. クリアすることなくテキストフィールドレスポンスを保存する方法
- 22. エラー報告を無効にすることなく、fputs、fsockopenなどの警告を抑制する方法は?
- 23. Android:スタンバイを無効にするか、少なくとも無視する
- 24. allowBackBackLocationUpdates(CLLocationManager)が無効になってから無効にする
- 25. 他のプラグインを無効にすることなく、CKEditorのcontextmenuプラグインを無効にすることはできますか?
- 26. 署名を無効にすることなくカスタムIDを持つInstallShieldインストーラ
- 27. ダイナミックテキストフィールドを有効にすることを無効にする
- 28. Grails 2.0:リソースのすべてのロギングを無効にする
- 29. RadioButtonが無効になっている場合はComboBoxをクリアします
- 30. jquery - ボックスを隠すことなくモーダルコンテンツをクリアする
古いcatalina.outをバックアップするときに 'mp'ではなく' cp'を実行していますか? –