本文在博主http://freeloda.blog.51cto.com/2033581/1346076基础上增加了新的内容,方便大家学习和阅读。
cronolog 简介及特点
apache服务器,默认日志文件是不分割的,一个整文件既不易于管理,也不易于分析统计。cronolog 是一个简单的过滤程序,读取日志文件条目从标准输入和输出的每个条目并写入指定的日志文件的文件名模板和当前的日期和时间。分割访问日志为每天或每月的日志。
cronolog主要和Web服务器配置使用,Apache 默认日志文件是不分割的,一个整文件既不易于管理,也不易于分析统计。安装cronolog后,可以将日志文件按时间分割,易于管理和分析。下面是与Apache配置的一些指令:
1 2 | |
具体案例,
|
cronolog 安装
软件下载http://cronolog.org/download/index.html。
1.安装yum源
|
2.安装ntp
|
3.时间同步
|
4.安装cronolog
(1).用yum安装
|
(2).源码安装
3 4 5 6 7 | |
cronolog 使用
(1).基本使用
8 9 10 11 12 13 14 15 16 17 | |
cronolog 一般采取管道的方式来工作的,采用如下的形式:
|
其中,loggenerator为产生log的程序,而log_file_pattern是日志文件的路径,可以在其中加入cronolog所支持的时间相关的pattern字符,如/www/log/%y/%m/%d/access.log。其pattern为%字符后跟特殊字符,简述如下:
转义符:
|
时间域:
|
日期域:
|
(2).结合apache使用
编辑httpd.conf文件,将其中的
|
(3).下面是效果
|
apache自带的日志分割工具rotatelogs,据专家说在进行日志切割时容易丢日志,这里也进行一下讲解:
Linux系统配置方法:
将其改为
ErrorLog "| /usr/local/apache/bin/rotatelogs /usr/local/apache/logs/%Y_%m_%d_error_log 86400 480" CustomLog "| /usr/local/apache/bin/rotatelogs /usr/local/apache/logs/%Y_%m_%d_access_log 86400 480" common
Windows系统下配置方法:
#ErrorLog "|bin/rotatelogs.exe logs/error-%y%m%d.log 86400 480"
#CustomLog "|bin/rotatelogs.exe logs/access-%y%m%d.log 86400 480" common
结合apache进行日志切割
编辑Apache的主配置文件httpd.conf,更改内容如下:
注释掉如下两行
ErrorLog logs/error_log
CustomLog logs/access_log common
然后添加如下两行
ErrorLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/errorlog.%Y-%m-%d-%H_%M_%S 2M +480"
CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/accesslog.%Y-%m-%d-%H_%M_%S 2M +480" common
含义如下:
errorlog.%Y-%m-%d-%H_%M_%S为生成日志格式,类似这样:errorlog.2010-04-15-11_32_30 ,以年月日时分秒为单位的,
2M 为日志大小,即为日志达到多大后生成新的日志文件,支持的单位为K,M,G,本处为2M。
+480 为时差,文件的时间为美国时间,中国的时差要比美国多8个小时也就是480分钟,所以要加上480分钟。
rotatelogs相关说明:
filesizeM指日志多大之后自动切割,可接受的单位为K,M,G,上面的ErrorLog设置为400M之后自动切割日志。
其他的设置方法如下:
每天生成一个错误日志文件
ErrorLog "|bin/rotatelogs.exe -l logs/error-%Y-%m-%d.log 86400"
其中86400为轮转的时间单位为秒
rotatelogs - 滚动Apache日志的管道日志程序。
CustomLog "|bin/rotatelogs /var/logs/logfile 5M" common
此配置会在日志文件大小增长到5兆字节时滚动该日志。
ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M"
此配置会在错误日志大小增长到5兆字节时滚动该日志,日志文件名后缀会按照如下格式创建:errorlog.YYYY-mm-dd-HH_MM_SS 。
基本语法
rotatelogs [ -l ] logfile [ rotationtime [ offset ]] | [ filesizeM ]
选项
-l
使用本地时间代替GMT时间作为时间基准。注意:在一个改变GMT偏移量(比如夏令时)的环境中使用-l会导致不可预料的结果。
logfile
它加上基准名就是日志文件名。如果logfile中包含"%",则它会被视为用于strftime()的格式字符串;否则它会被自动加上以秒为单位的".nnnnnnnnnn"后缀。这两种格式都表示新的日志开始使用的时间。
rotationtime
日志文件滚动的以秒为单位的间隔时间。
offset
相对于UTC的时差的分钟数。如果省略,则假定为"0"并使用UTC时间。比如,要指定UTC时差为"-5小时"的地区的当地时间,则此参数应为"-300"。
filesizeM
指定以filesizeM文件大小滚动,而不是按照时间或时差滚动。