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

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
```