您的位置:首页 > 运维架构 > Apache

Apache日志切割

2016-01-01 00:04 591 查看
root@zhangmengjunlinux ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf



common代表访问日志的类型名字,我们看一配置文件,在主配置文件我们能看到日志的格式,名字 查找/common


最好用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日这是按天切割的,那改一下期





本文出自 “田埂上的梦” 博客,请务必保留此出处http://mengjunlinux.blog.51cto.com/10772888/1730589
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: