
OpenRestyサーバーログでlogrotateを操作しようとしています。私のlogrotateプロファイルは/etc/logrotate.d/openresty
毎日実行する必要があり、これが私が使用したいデフォルトの動作ですsudo logrotate -vfd /etc/logrotate.d/openresty
。
私が設定した方法は次のとおりです。
/home/appname/logs/openresty/*.log /var/log/openresty/*.log {
su root root
size 100M
missingok
rotate 14
compress
delaycompress
notifempty
create 0660 root root
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
}
しかし、私のログディレクトリ(~/logs/openresty
)は次のようになります。
total 1.3G
-rw-r----- 1 root root 1.2G Jul 23 09:41 access.log.1
-rw-r----- 1 www-data adm 154K Jul 13 11:43 access.log.2.gz
-rw-r----- 1 www-data adm 159M Jul 13 11:18 access.log.3.gz
-rw-r----- 1 root root 572K Oct 5 04:24 error.log
-rw-r----- 1 root root 62K Jul 23 02:52 error.log.1
-rw-r----- 1 www-data adm 12K Jul 13 10:55 error.log.2.gz
ご覧のとおり、デフォルトのログファイルは100 MBの制限をはるかに超えており、元に分割されません。また、名前がなぜaccess.log.1
代わりに指定されたのかよくわかりませんaccess.log
(サーバーで構成される方法です)。
実行すると、sudo logrotate -v /etc/logrotate.d/openresty
次の結果が表示されます。
reading config file /etc/logrotate.d/openresty
Handling 1 logs
rotating pattern: /home/appname/logs/openresty/*.log /var/log/openresty/*.log 104857600 bytes (14 rotations)
empty log files are not rotated, old logs are removed
considering log /home/appname/logs/openresty/error.log
log does not need rotating
considering log /var/log/openresty/access.log
log needs rotating
considering log /var/log/openresty/error.log
log does not need rotating
rotating log /var/log/openresty/access.log, log->rotateCount is 14
dateext suffix '-20201005'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
compressing log with: /bin/gzip
renaming /var/log/openresty/access.log.14.gz to /var/log/openresty/access.log.15.gz (rotatecount 14, logstart 1, i 14),
old log /var/log/openresty/access.log.14.gz does not exist
renaming /var/log/openresty/access.log.13.gz to /var/log/openresty/access.log.14.gz (rotatecount 14, logstart 1, i 13),
old log /var/log/openresty/access.log.13.gz does not exist
renaming /var/log/openresty/access.log.12.gz to /var/log/openresty/access.log.13.gz (rotatecount 14, logstart 1, i 12),
old log /var/log/openresty/access.log.12.gz does not exist
renaming /var/log/openresty/access.log.11.gz to /var/log/openresty/access.log.12.gz (rotatecount 14, logstart 1, i 11),
old log /var/log/openresty/access.log.11.gz does not exist
renaming /var/log/openresty/access.log.10.gz to /var/log/openresty/access.log.11.gz (rotatecount 14, logstart 1, i 10),
old log /var/log/openresty/access.log.10.gz does not exist
renaming /var/log/openresty/access.log.9.gz to /var/log/openresty/access.log.10.gz (rotatecount 14, logstart 1, i 9),
old log /var/log/openresty/access.log.9.gz does not exist
renaming /var/log/openresty/access.log.8.gz to /var/log/openresty/access.log.9.gz (rotatecount 14, logstart 1, i 8),
old log /var/log/openresty/access.log.8.gz does not exist
renaming /var/log/openresty/access.log.7.gz to /var/log/openresty/access.log.8.gz (rotatecount 14, logstart 1, i 7),
old log /var/log/openresty/access.log.7.gz does not exist
renaming /var/log/openresty/access.log.6.gz to /var/log/openresty/access.log.7.gz (rotatecount 14, logstart 1, i 6),
old log /var/log/openresty/access.log.6.gz does not exist
renaming /var/log/openresty/access.log.5.gz to /var/log/openresty/access.log.6.gz (rotatecount 14, logstart 1, i 5),
old log /var/log/openresty/access.log.5.gz does not exist
renaming /var/log/openresty/access.log.4.gz to /var/log/openresty/access.log.5.gz (rotatecount 14, logstart 1, i 4),
old log /var/log/openresty/access.log.4.gz does not exist
renaming /var/log/openresty/access.log.3.gz to /var/log/openresty/access.log.4.gz (rotatecount 14, logstart 1, i 3),
renaming /var/log/openresty/access.log.2.gz to /var/log/openresty/access.log.3.gz (rotatecount 14, logstart 1, i 2),
renaming /var/log/openresty/access.log.1.gz to /var/log/openresty/access.log.2.gz (rotatecount 14, logstart 1, i 1),
renaming /var/log/openresty/access.log.0.gz to /var/log/openresty/access.log.1.gz (rotatecount 14, logstart 1, i 0),
old log /var/log/openresty/access.log.0.gz does not exist
log /var/log/openresty/access.log.15.gz doesn't exist -- won't try to dispose of it
running prerotate script
renaming /var/log/openresty/access.log to /var/log/openresty/access.log.1
creating new /var/log/openresty/access.log mode = 0660 uid = 0 gid = 0
しかし、回転することはまったくありません~/logs/openresty
。それはすべてを無視します。
/var/log/openresty
新しい空のログが生成されますが、古いaccess.log
ログは分割されず、まだ100 MBを超えています。
total 379M
-rw-rw---- 1 root root 0 Oct 5 08:51 access.log
-rw-r----- 1 root root 366M Oct 5 08:53 access.log.1
-rw-r----- 1 root root 5.1M Jul 23 09:41 access.log.2.gz
-rw-r----- 1 www-data adm 8.0K Jul 13 11:42 access.log.3.gz
-rw-r----- 1 root root 8.2M Jul 13 11:18 access.log.4.gz
-rw-r----- 1 www-data adm 70K Oct 4 14:17 error.log
-rw-r----- 1 root root 948 Jun 26 10:24 error.log.1
また、何らかの理由でサーバーaccess.log.1
がaccess.log
。
答え1
Logrotateはうまくいきますが、openrestyは新しいログファイルに書き込む必要があることを知りません(それで書き込みを続けていますaccess.log.1
)。
postrotate
設定にスクリプトを追加する必要があります。
postrotate
/usr/local/bin/openresty -s reload
endscript
(私はopenrestyに慣れていないので、これはopenresty -s reload
推測にすぎません。ドキュメントで探すべきです。)