Apache log 里面包含有很多有用资讯, 包括侦测攻击行为及正常存取量等, 但如果一直不理会记录档的话, 会占用很多硬盘空间, 所以设定 log rotate 是必须的, Apache 内建 rotatelogs 工具可以做 log rotate, 实现方法如下:
1. 开启 httpd.conf, 找到 CustomLog 及 ErrorLog 的设定行.
2. 例如原来 CustomLog 及 ErrorLog 写成:
ErrorLog /var/log/httpd/error.log
以我的设定为例, 将这两行改成这样:
ErrorLog “|/usr/sbin/rotatelogs -l /var/log/httpd/error-%Y%m%d.log 604800”
以上是用 Apache 默认的 rotatelogs 工具进行 log rotate, 会产生类似这样的 log:
access-20150423.log
error-20150423.log
里面的 “%Y%m%d” 是指定 “年月日” 格式, 例如 20150423, 而 604800 是轮替的时间, 单位是秒, 这里 604800 秒即一星期。
而 “-l” 是设定根据系统时间做轮替, 如果没有加入这个选项也可以, 只是轮替时间会根据 GMT 时间, 例如香港 GMT+8 时区为例, 会在早上 8:00 才做轮替。
如果不想根据时间做轮替, 而是根据档案体积轮替的话, 格式是这样写:
上面 log 后面的数字最后加入了 “M”, 即不是以时间轮替, 而且以 100MB 为体积上限轮替。
其他设定参数:
%a – 3-character weekday name (localized)
%B – full month name (localized)
%b – 3-character month name (localized)
%c – date and time (localized)
%d – 2-digit day of month
%H – 2-digit hour (24 hour clock)
%I – 2-digit hour (12 hour clock)
%j – 3-digit day of year
%M – 2-digit minute
%m – 2-digit month
%p – am/pm of 12 hour clock (localized)
%S – 2-digit second
%U – 2-digit week of year (Sunday first day of week)
%W – 2-digit week of year (Monday first day of week)
%w – 1-digit weekday (Sunday first day of week)
%X – time (localized)
%x – date (localized)
%Y – 4-digit year
%y – 2-digit year
%Z – time zone name
%% – literal
%s – 1970/01/01 00 开始时间