Help us understand the problem. What is going on with this article?

Tomcatログローテートメモ書き

More than 1 year has passed since last update.

Tomcatログ

以下、6種類有
① catalina.YYYY-MM-DD.log
② localhost.YYYY-MM-DD.log
③ manager.YYYY-MM-DD.log
④ host-manager.YYYY-MM-DD.log
⑤ localhost_access_log.txt
⑥ catalina.out

①~⑤ まではTomcatの機能でログローテートが可能である。※
⑥ はTomcatの機能でログローテートする機能がないように見える。そのためOSの標準機能で実施する。
※ ⑤に関してはログローテート自体を止めることができるため、OSのlogrotateを使用する方式で行う。
  ①~④に関してはログローテートを止める方法が勉強不足で見つからなかったためTomcatの機能を使用する。

ログローテーション(OS標準に任せる)

localhost_access_log

最初にログ出力の形式などを設定している箇所を確認
ログローテートに関しては未記載で実施する設定になっている。

$ sudo cat /opt/tomcat/apache-tomcat-8.5.29/conf/server.xml
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"   
               prefix="localhost_access_log" suffix=".txt"  
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

極力OSの標準機能のlogrotateで管理するようにしたいため、ログローテートを止める必要がある。
また、出力形式もなじみ深いapacheと同一のものに変更。
そのような変更を加えたものが以下である。

$ sudo vim /opt/tomcat/apache-tomcat-8.5.29/conf/server.xml
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"   
               prefix="localhost_access" suffix=".txt"  
               rotatable="false"    
               pattern="combined" />    

これでlocalhost_access_logは準備OK

logrotate

Tomcatがログをつかんでいるので、copytruncateが必須
compressは用途に応じて

$ sudo vim /etc/logrotate.d/tomcat8
/opt/tomcat/apache-tomcat-8.5.29/logs/catalina.out
/opt/tomcat/apache-tomcat-8.5.29/logs/localhost_access.txt
{
    copytruncate
    daily
    rotate 7
    compress
    missingok
    create 0644 tomcat tomcat
}

ログローテーション(Tomcatの機能)

Tomcatの機能でローテートするlogの場合は、ログローテート自体は毎日実行してくれるが、削除する機能がない。
そのため削除するシェルスクリプトが必要となる。

$ sudo vim shell/TomcatLogDel.sh
#!/bin/bash
LOG_DIR=/opt/tomcat/apache-tomcat-8.5.29/logs/
delfiles=`find ${LOG_DIR}*.log -mtime +7`
for a in $delfiles
do
    echo -e "delete file: ${a}" > /dev/null 2>&1
    rm -f ${a}
done

これで7日以上経過したログは削除され、Tomcatのログでリソースがひっ迫することはない。
シェルスクリプトは暫定で後日編集予定。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away