Apache 預設的 Log 檔是存成: access.log、error.log, 再經過 Log rotation 的話, 會變成如下:
access.log.1
access.log.2.gz
access.log.3.gz
...
如果想要依照日期來產生 log 檔(ex: access-2014-08-01.log), 要如何做呢?
Apache Log檔 使用日期格式 當 檔名設定
於 Apache 可以找到設定的方法, 官方建議可以用 rotatelogs, 但是有另外一個改良版 cronolog 可以用, 再此會兩種範例都寫一寫, 可以混著使用, 再依照自己習慣挑喜歡的用.
註: rotatelogs、cronolog 要混用, 需要 VirtualHost 分開不同 domain 使用, 分開記錄.
Apache 預設寫法
- CustomLog /var/log/apache2/access.log combined
- 詳見: Log Files - Apache HTTP Server Version 2.2
使用 rotatelogs
- rotatelogs - Piped logging program to rotate Apache logs
- 設定方式 (二者挑其一)
- CustomLog "||/usr/local/apache/bin/rotatelogs /var/log/access_log 86400"
- CustomLog "|bin/rotatelogs -l /var/logs/logfile.%Y.%m.%d 86400" common
- 我是用: CustomLog "|/usr/bin/rotatelogs /var/log/apache2/cropv-access-%Y-%m-%d.log 86400" combined
使用 cronolog
- apt-get install cronolog # 需要另外安裝
- cronolog - write log messages to log files named according to a template
- cronolog is based on a program called rotatelogs by Ben Laurie, which is packaged with the Apache web server.
- 設定方式
- CustomLog "|/usr/bin/cronolog /var/log/apache2/access-%Y-%m-%d.log" combined
註: 上述設定完後, 會造成 Log rotate 那邊都不會自動壓縮、刪除, 需要另外設定, 再此就先不多做說明.