Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
75
Help us understand the problem. What is going on with this article?
@yagi___

ログローテーションするためのlogrotate設定とちょっとしたtips

More than 5 years have passed since last update.

概要

Linuxの場合ログローテーションはlogrotateというrpmを用います
だいたいのディストリビューションには最初から入っているはずです。

設定もとても簡単で、ローテーションしたいファイルの指定と、
ローテーションする際の設定を数行書けば完了です。

準備

ログローテーションにはcronを用いてるため
crondが動いているかどうか確認

$ service crond status

ローテーション設定

/etc/logrotate.conf/etc/logrotate.d/配下のファイルによって設定します。
おそらく/etc/logrotate.d/配下に最初から幾つか設定ファイルがあるのでそれらも参考にすると良いでしょう。

例えばnginxの各種ログファイルのローテーション設定は

/var/log/nginx/*log {
    create 0644 nginx nginx
    daily
    rotate 10
    missingok
    notifempty
    compress
    postrotate
        [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

みたいな感じで設定できます。

使用できる主なコマンド

  • weekly ログローテーションを週毎に行う。
  • rotate 4 ログローテーションの世代数を4個に設定。
  • missingok 指定のログファイルが実在しなかったとしてもエラーを出さずに処理続行。
  • notifempty ログファイルが空ならローテーションしない。
  • copytruncate copy の動作を行った後、元のログファイルの内容を消去する。
  • create 0644 fuga fuga ローテーションを行った後、代わりに空の新規ログファイルを作る。権限・グループ・ユーザを指定可能
  • postrotate~endscript postrotateとendscriptの間に記述されたコマンドをログローテーション後に実行
  • size ファイルサイズ ログファイルが指定したファイルサイズ以上になったらローテーションする

その他設定項目は→@IT:logrotateの設定ファイルで指定できる主なコマンド

logrotateの動作確認

ShellScript - logrotateを手動実行 - Qiita

# デバッグ
/usr/sbin/logrotate -fd /etc/logrotate.d/nginx

# 実行
/usr/sbin/logrotate -f /etc/logrotate.d/nginx

TIPS

ログを扱うアプリケーション側でログファイルを再openできない・するのが面倒

logrotateの通常の動作としては

hoge.log

があった場合、これをローテーションさせるには
hoge.log.1にリネームし、新たにhoge.logを生成します。

ただしデーモンで動作しているアプリケーション等の場合、開いているファイルはhoge.log.1なので、
hoge.logを再openしてあげる必要があります。

例えばUnicornの場合USR1シグナルを送信するとログファイルを再度openしてくれますが、
こういった便利なシグナルやコマンドが用意されていない場合はcopytruncateを用います。

copytruncateを記述しておくと
hoge.logがあった場合に、これをコピーしたものをローテーションのファイルhoge.log.1とし、
オリジナル(hoge.log)の中身を削除します。
つまりhoge.logを開きっぱなしにしておけばokということです!

参考

Nginx - ログローテーション設定! - mk-mode BLOG
Ruby on Rails - Unicorn のログローテーション! - mk-mode BLOG

75
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  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
yagi___
webサービス作ってます 主な使用言語はruby

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
75
Help us understand the problem. What is going on with this article?