root@zhangmengjunlinux ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf


Apache日志切割_第1张图片common代表访问日志的类型名字,我们看一配置文件,在主配置文件我们能看到日志的格式,名字 查找/commonApache日志切割_第2张图片

最好用combined格式,我们也可以自定义一个,就像是

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

我们现在用combined格式访问日志:customlog "Logs/test.com-access_log"combined

日志写在什么地方呢,你可以放在Logs下,这个logs是相对路径,相对于apache目录来说的

[root@zhangmengjunlinux logs]# cd /usr/local/apache2/logs/ 

access_log  error_log  httpd.pid

如果把那两个日志打开就会在这个目录生成,生成这两个文件

[root@zhangmengjunlinux logs]# ls

access_log  error_log  httpd.pid      test.com-access_log test.com-error_log

[root@zhangmengjunlinux logs]# cat test.com-access_log

192.168.140.2 - - [30/Dec/2015:23:16:12 +0800] "GET / HTTP/1.1" 301 - "http://www.test.com/forum.php" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36"

192.168.140.2就是它的来源IP,对照着我们的格式%h 这就是来源IP

- -只不过%L %U 这两个都是不存在的所以用“_"去替代了 %u是用户,就比如说我们去访问abc的时候,我们是不是要访问usr1用户,然后输入密码 abc/12.txt,可以tail看一下

[root@zhangmengjunlinux logs]#tail test.com-access_log

92.168.140.2 - user1 [30/Dec/2015:23:17:01 +0800] "GET /abc/12.txt HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36"

- user1是不是这里有user1啊,这就是我们的user %U用户,那这些是具体东西我们都可以在apache的官方网站文档里找到它对应的含义

%t:时间[30/Dec/2015:23:17:01 +0800]

%r:就是动作 “GET”或者“POST" 

这个就是referer,什么叫做referer呢,就是你访问这个地址的时候它从哪里来的:"http://www.test.com/forum.php" referer后面是他的user agent也就是浏览器的表识"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36",那比如行我们的谷歌浏览器 chrome IE浏览器 或者说我们的curl

192.168.140.100 - - [30/Dec/2015:22:53:33 +0800] "HEAD http://www.test.com/ HTTP/1.1" 301 - "-" "curl/7.19.7 (i386-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2"

浏览器不一样,访问的标识是不一样的,那就是说这个user agent是很有用的,我们可以根据它去限制一些IP,只要是curl的这些user agent我就可以让它403,

这么多的访问记录。我们应该去做一个归档,每天去做一个切割,今天以今天的日期重命名,明天可以用明天的日期重命名,然后一个日志一个日志的把它做好切割,然后过了一个月以后我们的老日志没用了,我们要把它删除掉,为了防止我们的磁盘去无限的增长,怎么做切割呢

[root@zhangmengjunlinux logs]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

方法很简单,用一个工具,首先是”|“管道符的意思,我们用这个工具

 CustomLog "|/usr/local/apache2/bin/rotatelogs -l  /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400" combined

我们存放日志的地方要用绝对路径 /usr/local/apache2/logs

用绝对路径的目的是防止这个日志找不到,那么它的日志格式需要加一个时间戳,这个就跟date那个命令类似,这个日志是按天分割的86400秒也就是一天 ErrorLog也以这样的格式做切割,但毕竟Errorlog是少的,所以不用去做切割,我们只切割访问日志

#apchectl -t 

#syntax ok

#apachectl restart

[root@zhangmengjunlinux logs]# ls

access_log  error_log  httpd.pid  test.com-access_20151230_log  test.com-access_20151231_log  test.com-access_log  test.com-error_log

2015年12月30日这是按天切割的,那改一下期

wKioL1aFUhWibmBgAAA1FHcJXm4519.png