ログローテートの設定ミスでした。。。
いつの頃からか apache httpd のログファイルが access_log-yyyymmdd という形式のファイル名で書き込まれるようになりました。
デフォルトでは1週間ごとにログファイルが切り替わるようになっていますので、下記のようなファイルが作成されていきます。
access_log-20190602 access_log-20190609
ファイル名に年月日が含まれるようになったので、調べたい日付のログが含まれるファイルをすぐに特定することができるようになり、便利といえば便利です。
ところが、あるサーバで、スクリプトを動かしてログの内容を読み取るので access_log という名前で書き込まれるようにしたい、という要望がありましたので、設定を調べました。
まずは /etc/httpd/conf/httpd.conf ファイルを調べましたが、下記のようになっており、年月日が含まれるような設定ではなさそうでした。
CustomLog logs/access_log combined
実は、access_log-yyyymmdd となる設定は logrotate によるものです。/etc/logrotate.conf ファイルを開いてみると、下記のような行があります。
# use date as a suffix of the rotated file
dateext
dateext は、ログファイルをローテートするときファイル名の後ろに「-yyyymmdd」をつけるというものです。(この設定が access_log のファイル名に影響しているかもしれないと思ったのですが、早とちりでした。)
とはいえ、元締めとなる /etc/logrotate.conf を直接編集してしまうと、他のログにも影響がでてしまうので、/etc/logrotate.d/httpd を修正し、nodateext を追加しました。
/var/log/httpd/*log { nodateext missingok notifempty sharedscripts delaycompress postrotate /sbin/service httpd reload > /dev/null 2>/dev/null || true endscript }
これで、日付でなく番号でファイル名がローテートされるようになります。
(追記)
httpd が access_log-yyyymmdd のファイルにログを書き込んでいたように見えたのは、実は logrotate の設定の中で apache を再起動する部分に間違いがあり、ファイル名がリネームされたのに再起動がうまくかからなかったため、同じファイルに継続して書き込んでいたことがわかりました。それで、apache を再起動したら access_log に書き込まれるようになったのだと思われます。
0件のコメント