肥大化していく「apache」,「tomcat」のログ;;
そのログをローテーションさせる方法をまとめとく。
■apacheログのローテーション設定
実はapacheはログローテーションさせる用のコマンドが用意されてるので、
それをそのまま使ってしまえば、ローテーション可能。
httpd.confのログ設定に以下を追記。
(virtualhostにも設定可能)
-----------------------
CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log 86400"
ErrorLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/error_log 86400"
-----------------------
これで、日時に数字をつけた形でローテーションが実施される。
ログファイルに日付けをつけてローテーションする場合は、例えばこんな感じ。
-----------------------
CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log_%Y%m%d 86400"
ErrorLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/error_log_%Y%m%d 86400"
-----------------------
(参考URL)
第14回 ログローテーションとAnalogの導入■tomcatログのローテーション設定
tomcatログ・・・ってのはアプリログではなくて、catalina.outの事。
こいつもほっておいたら膨大な大きさになってく。。。
こんな感じでcatalina.shの編集をする。
(※2箇所あります)
--------------------------------
<変更前>
>> "$CATALINA_OUT" 2>&1 &
<変更後>
| /opt/apache/bin/rotatelogs "$CATALINA_OUT".%Y-%m-%d 86400 540 2>&1 &
--------------------------------
つまり、apacheと同様に、rotatelogsコマンドにパイプしちゃうわけですね。
なるほど、納得。
tomcatのバージョンが異なる場合、CATALINA_OUTが無いみたい。
そんな感じのときは、以下の方法で。(こっちも2箇所)
--------------------------------
<変更前>
touch "$CATALINA_BASE"/logs/catalina.out
(省略)
>> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
<変更後>
# touch "$CATALINA_BASE"/logs/catalina.out
(省略)
| /usr/sbin/rotatelogs "$CATALINA_BASE"/logs/catalina.out 86400 &
--------------------------------
ちなみに、日付けをつける場合もapacheの時と同じく、
--------------------------------
| /usr/sbin/rotatelogs "$CATALINA_BASE"/logs/catalina.out_%Y%m%d 86400 &
--------------------------------
これでOK。よし、ローテーション出来てる!
・・・ってか、OKか??
ちょっと思ったのは、パイプで渡されるのって標準出力だけなのでは。
このままだとエラー出力をすべて落としてしまうのでは!?
そのためには、こんな感じにしないといかんのでは??
--------------------------------
2>&1 | /usr/sbin/rotatelogs "$CATALINA_BASE"/logs/catalina.out 86400 &
--------------------------------
でも、こんな記載で書かれてるページは見つけられず・・・
ご存知の方いたら、おせーてください。
でも、設定してみたら普通に動いてたのでOKとしてみた。
(参考URL)
tomcatのcatalina.out をローテーションするではでは。
この記事にトラックバックする