在配置了日誌的狀況下,咱們每訪問一次網站,就會記錄若干條日誌。日誌若是不去管理,時間長了日誌文件會愈來愈大,大到不可能用 cat、less 以及 vim 打開的,head 和 tail 還能夠。爲了不產生這麼大的日誌文件,apache有相關的配置,使日誌按照咱們的需求進行歸檔,好比天天或每小時一個新日誌。php
[root@localhost ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
打開apache的虛擬主機配置文件,能夠看到示例配置文件:
web
#<VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com # DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com" # ServerName dummy-host.example.com # ServerAlias www.dummy-host.example.com # ErrorLog "logs/dummy-host.example.com-error_log" # CustomLog "logs/dummy-host.example.com-access_log" common #</VirtualHost>
其中的 ErrorLog 是錯誤日誌,CustomLog 是訪問日誌。雙引號裏的路徑是 針對 /usr/local/apache2/ 目錄的相對路徑,能夠經過這段配置設定日誌名稱,common是日誌的格式。這種方式是固定生成日誌的,會形成上面說的日誌文件過大,那麼咱們須要對現有的主機配置作以下操做。
apache
在對應的虛擬主機配置文件中加入ErrorLog和CustomLog兩行:vim
<VirtualHost *:80> DocumentRoot "/data/www" ServerName www.123.com ServerAlias www.test.com ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/123.com-error_%Y%m%d_log 86400" CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/123.com-access_%Y%m%d_log 86400" combined <Directory /data/www/admin.php> AllowOverride AuthConfig AuthName "Please input the passwd"
雙引號中,最前面的豎線就是管道符,意思是把產生的日誌傳給 rotatelogs ,這個工具是 apache 自帶的切割日誌的工具。 -l 的做用是校準時區爲 UTC,北京時間。最後面的 86400 ,單位是秒,意思是一天。雙引號外的 combined 爲日誌格式,關於日誌格式在 /usr/local/apache2/conf/httpd.conf 裏面定義。
瀏覽器
[root@localhost ~]# grep LogFormat /usr/local/apache2/conf/httpd.conf LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
設定好切割配置後,重啓apache
bash
[root@localhost ~]# /usr/local/apache2/bin/apachectl -t Syntax OK [root@localhost ~]# /usr/local/apache2/bin/apachectl restart
用瀏覽器訪問對應網站後,查看日誌文件
less
[root@localhost ~]# ls /usr/local/apache2/logs/ 123.com-access_20160518_log dummy-host.example.com-access_log access_log dummy-host.example.com-error_log dummy-host2.example.com-access_log error_log dummy-host2.example.com-error_log httpd.pid
已經出現對應日誌,更改下時間,再瀏覽測試一下
ide
[root@localhost ~]# date -s "2016-05-19 09:00:00" 2016年 05月 19日 星期四 09:00:00 CST [root@localhost ~]# ls /usr/local/apache2/logs/ 123.com-access_20160518_log dummy-host.example.com-access_log 123.com-access_20160519_log dummy-host.example.com-error_log access_log error_log dummy-host2.example.com-access_log httpd.pid dummy-host2.example.com-error_log
又生成了新的日誌文件,切割配置成功。
工具