LoginSignup
8
4

More than 5 years have passed since last update.

FreeBSD の newsyslog で楽々ログローテーション

Last updated at Posted at 2018-12-05

FreeBSDではデフォルトでnewsyslogというプログラムがログのローテーションを行なっています
/etc/crontabに下記のような記述があるので1時間に1回動作しているようです

0   *   *   *   *   root    newsyslog

いつからか忘れましたが/etc/newsyslog.confで下記のようにファイルが
includeされるようになったのでどちらかのディレクトリにファイルを置くだけで設定が追加できます

<include> /etc/newsyslog.conf.d/*
<include> /usr/local/etc/newsyslog.conf.d/*

※少なくともFreeBSD11.2ではinclude対応済

FreeBSDではNginxやApacheだけをインストールしてもログローテーションされないので
/etc/newsyslog.conf.d/nginx_apache を追加してみましょう

# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
/var/log/nginx/*.log   root:wheel       644  7     *    $D05  BGX   /var/run/nginx.pid 30
/var/log/httpd/*.log   root:wheel       644  7     *    $D05  BGX   /var/run/httpd.pid 1

count=7でバックアップファイルは7個まで
when の $D05 で毎日5時に実行
flags の BGX の意味は下記の通り

  • B: ローテート時にログファイルにメッセージを残さない
  • G: logfilenameで指定したパスがシェルパターンであることを示す(*を使っているため)
  • X: ログファイルの圧縮にxzを使用

sig_numはログローテート時にプロセスに投げるシグナル番号を指定30はSIGUSR1、1はSIGHUP
上記のファイルを設置すると数日後下記のようになります

$ ls -l /var/log/nginx/access.log* /var/log/nginx/error.log* /var/log/httpd/access.log* /var/log/httpd/error.log*
-rw-r--r--  1 root    wheel   6958 Dec  4 15:06 /var/log/httpd/access.log
-rw-r--r--  1 root    wheel   3336 Dec  4 05:00 /var/log/httpd/access.log.0.xz
-rw-r--r--  1 root    wheel   5452 Dec  3 05:00 /var/log/httpd/access.log.1.xz
-rw-r--r--  1 root    wheel   5116 Dec  2 05:00 /var/log/httpd/access.log.2.xz
-rw-r--r--  1 root    wheel   1564 Dec  1 05:00 /var/log/httpd/access.log.3.xz
-rw-r--r--  1 root    wheel   6328 Nov 30 05:00 /var/log/httpd/access.log.4.xz
-rw-r--r--  1 root    wheel   7432 Nov 29 05:00 /var/log/httpd/access.log.5.xz
-rw-r--r--  1 root    wheel   3624 Nov 28 05:00 /var/log/httpd/access.log.6.xz
-rw-r--r--  1 root    wheel    706 Dec  4 11:39 /var/log/httpd/error.log
-rw-r--r--  1 root    wheel   1744 Dec  4 05:00 /var/log/httpd/error.log.0.xz
-rw-r--r--  1 root    wheel   4156 Dec  3 05:00 /var/log/httpd/error.log.1.xz
-rw-r--r--  1 root    wheel   3180 Dec  2 05:00 /var/log/httpd/error.log.2.xz
-rw-r--r--  1 root    wheel    352 Dec  1 05:00 /var/log/httpd/error.log.3.xz
-rw-r--r--  1 root    wheel   4392 Nov 30 05:00 /var/log/httpd/error.log.4.xz
-rw-r--r--  1 root    wheel   4688 Nov 29 05:00 /var/log/httpd/error.log.5.xz
-rw-r--r--  1 root    wheel   2148 Nov 28 05:00 /var/log/httpd/error.log.6.xz
-rw-r--r--  1 nobody  wheel  84079 Dec  4 15:05 /var/log/nginx/access.log
-rw-r--r--  1 root    wheel   5580 Dec  4 05:00 /var/log/nginx/access.log.0.xz
-rw-r--r--  1 root    wheel   4140 Dec  3 05:00 /var/log/nginx/access.log.1.xz
-rw-r--r--  1 root    wheel   4500 Dec  2 05:00 /var/log/nginx/access.log.2.xz
-rw-r--r--  1 root    wheel   7664 Dec  1 05:00 /var/log/nginx/access.log.3.xz
-rw-r--r--  1 root    wheel   3812 Nov 30 05:00 /var/log/nginx/access.log.4.xz
-rw-r--r--  1 root    wheel   1172 Nov 29 05:00 /var/log/nginx/access.log.5.xz
-rw-r--r--  1 root    wheel   7436 Nov 28 05:00 /var/log/nginx/access.log.6.xz
-rw-r--r--  1 nobody  wheel  74138 Dec  4 13:48 /var/log/nginx/error.log
-rw-r--r--  1 root    wheel   6104 Dec  4 05:00 /var/log/nginx/error.log.0.xz
-rw-r--r--  1 root    wheel   3484 Dec  3 05:00 /var/log/nginx/error.log.1.xz
-rw-r--r--  1 root    wheel   4032 Dec  2 05:00 /var/log/nginx/error.log.2.xz
-rw-r--r--  1 root    wheel   8224 Dec  1 05:00 /var/log/nginx/error.log.3.xz
-rw-r--r--  1 root    wheel   3768 Nov 30 05:00 /var/log/nginx/error.log.4.xz
-rw-r--r--  1 root    wheel    416 Nov 29 05:00 /var/log/nginx/error.log.5.xz
-rw-r--r--  1 root    wheel   7208 Nov 28 05:00 /var/log/nginx/error.log.6.xz
8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4