目录

2638264600 的个人博客

记录精彩的程序人生

软件——cronolog日志分隔工具

Linux 日志切割工具cronolog详解

一、前言

二、cronolog 简介

三、cronolog 特点

四、cronolog 安装

五、cronolog 使用

六、cronolog 总结

注,操作系统 CentOS 6.4 x86_64,软件版本 cronolog 1.6.2,软件下载http://cronolog.org/download/index.html。

一、前言

大家都知道apache服务器,默认日志文件是不分割的,一个整文件既不易于管理,也不易于分析统计。本博文主要讲解Web服务器日志切割工具cronolog,下面我们就来详细的讲解一下。

二、cronolog 简介

cronolog是一个简单的过滤程序,读取日志文件条目从标准输入和输出的每个条目并写入指定的日志文件的文件名模板和当前的日期和时间。当扩展文件名的变化,目前的文件是关闭,新开辟的。cronolog 旨在和一个Web服务器一起使用,如Apache,分割访问日志为每天或每月的日志。

三、cronolog 特点

cronolog主要和Web服务器配置使用,特别是Apache服务器,Apache 默认日志文件是不分割的,一个整文件既不易于管理,也不易于分析统计。安装cronolog后,可以将日志文件按时间分割,易于管理和分析。下面是与Apache配置的一些指令:

TransferLog "|/usr/sbin/cronolog /web/logs/%Y/%m/%d/access.log"
ErrorLog "|/usr/sbin/cronolog /web/logs/%Y/%m/%d/errors.log"
下面是具体案例,
/web/logs/2002/12/31/access .log /web/logs/2002/12/31/errors .log
/web/logs/2003/01/01/access .log /web/logs/2003/01/01/errors .log

四、cronolog 安装

1.安装yum源
yum install -y wget vim
wget http://ftp.sjtu.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

2.安装ntp
yum install -y ntp

3.时间同步
ntpdate 202.120.2.101

4.安装cronolog

(1).直接用yum安装
yum install -y cronolog httpd
(2).源码安装
wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
tar xf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make && make install
which cronolog

好了,到这里我们的cronolog就安装完成了,下面我们来说一下cronolog如何使用。

五、cronolog 使用

(1).基本使用

cronolog -h
usage: cronolog [OPTIONS] logfile-spec
-H NAME, --hardlink=NAME maintain a hard link from NAME to current log
-S NAME, -- symlink =NAME maintain a symbolic link from NAME to current log
-P NAME, --prev- symlink =NAME maintain a symbolic link from NAME to previous log
-l NAME, --link=NAME same as -S /--symlink
-h, --help print this help, then exit
-p PERIOD, --period=PERIOD set the rotation period explicitly
-d DELAY, --delay=DELAY set the rotation period delay
-o, --once-only create single output log from template (not rotated)
-x FILE, --debug=FILE write debug messages to FILE
( or to standard error if FILE is "-" )
-a, --american American date formats
-e, --european European date formats (default)
-s, --start- time =TIME starting time
-z TZ, -- time -zone=TZ use TZ for timezone
-V, --version print version number, then exit

cronolog 一般是采取管道的方式来工作的,采用如下的形式:
loggenerator | cronolog log_file_pattern
其中,loggenerator为产生log的程序,而log_file_pattern是日志文件的路径,可以在其中加入cronolog所支持的时间相关的pattern字符,如/www/log/%y/%m/%d/access.log。其pattern为%字符后跟一特殊字符,简述如下:

转义符:

% %字符
n 换行
t 水平制表符
时间域:
H 小时(00..23)
I 小时(01..12)
p 该locale下的AM或PM标识
M 分钟(00..59)
S 秒 (00..61, which allows for leap seconds)
X 该locale下时间表示符(e.g.: "15:12:47" )
Z 时区。若时区不能确定,则无意义
日期域:
a 该locale下的工作日简名(e.g.: Sun..Sat)
A 该locale下的工作日全名(e.g.: Sunday .. Satur-ay)
b 该locale下的月份简称(e.g.: Jan .. Dec)
B 该locale下的月份全称(e.g.: January .. December)
c 该locale下的日期和时间(e.g.: "Sun Dec 15 14:12:47 GMT 1996" )
d 当月中的天数 (01 .. 31)
j 当年中的天数 (001 .. 366)
m 月数 (01 .. 12)
U 当年中的星期数,以周日作为一周开始,其中第一周为首个含星期天的星期(00..53)
W 当年中的星期数,以星期一作为一周的开始,其中第一周为首个含星期天的星期(00..53)
w 工作日数(0 .. 6, 0表示星期天)
x 该locale下的日期表示(e.g. "13/04/97" )
y 两位数的年份(00 .. 99)
Y 四位数的年份(1970 .. 2038)
(2).结合apache使用

编辑httpd.conf文件,将其中的

[root@localhost ~] # vim /usr/local/apache2/conf/httpd.conf
将默认日志: CustomLog "logs/access_log" combined
修改为:CustomLog "|/usr/local/sbin/cronolog /log/www/access_%Y%m%d.log" combined 即可。其中%Y%m%d为日志文件分割方式,即为“年月日”。
[root@localhost ~] # /usr/local/apache2/bin/apachectl restart
(3).下面是效果
[root@localhost ~] # cd /log/www/
[root@localhost www] # ll
total 15072
-rw-r--r-- 1 root root 16028 Dec 26 15:16 access_20131225.log
-rw-r--r-- 1 root root 2406307 Dec 26 23:59 access_20131226.log
-rw-r--r-- 1 root root 8292792 Dec 27 23:59 access_20131227.log
-rw-r--r-- 1 root root 4682211 Dec 28 18:56 access_20131228.log

六、cronolog 总结

好了,到这里我们的cronolog工具就讲解完成了。有博友会问为什么不用apache自带的日志分割工具?apache自带的日志分割工具rotatelogs,据专家说在进行日志切割时容易丢日志,所以这里我们就用cronolog来做日志切割。最后,希望大家有所收获^_^……

安装过程:
解压
unzip cronolog-1.6.2.zip
[root@localhost src]# cd cronolog-1.6.2
[root@localhost cronolog-1.6.2]# ls
aclocal.m4 AUTHORS ChangeLog configure configure.in COPYING cronolog.spec doc INSTALL install-sh lib Makefile.am Makefile.in missing mkinstalldirs NEWS README src testsuite TODO
[root@localhost cronolog-1.6.2]# ll
total 192
-rwxr-xr-x 1 root root 3539 May 4 2001 aclocal.m4
-rwxr-xr-x 1 root root 50 Mar 8 1998 AUTHORS
-rwxr-xr-x 1 root root 1685 Dec 20 1999 ChangeLog
-rwxr-xr-x 1 root root 71059 May 4 2001 configure
-rwxr-xr-x 1 root root 1810 May 4 2001 configure.in
-rwxr-xr-x 1 root root 18043 Apr 10 1997 COPYING
-rwxr-xr-x 1 root root 1685 May 4 2001 cronolog.spec
drwxr-xr-x 2 root root 4096 May 4 2001 doc
-rwxr-xr-x 1 root root 7463 Apr 12 1997 INSTALL
-rwxr-xr-x 1 root root 5585 Apr 10 1997 install-sh
drwxr-xr-x 2 root root 4096 May 4 2001 lib
-rwxr-xr-x 1 root root 167 May 4 2001 Makefile.am
-rwxr-xr-x 1 root root 10909 May 4 2001 Makefile.in
-rwxr-xr-x 1 root root 6283 Jul 12 2000 missing
-rwxr-xr-x 1 root root 729 Apr 10 1997 mkinstalldirs
-rwxr-xr-x 1 root root 2134 Dec 20 1999 NEWS
-rwxr-xr-x 1 root root 10108 Dec 20 1999 README
drwxr-xr-x 2 root root 4096 May 4 2001 src
drwxr-xr-x 2 root root 4096 May 4 2001 testsuite
-rwxr-xr-x 1 root root 755 Dec 20 1999 TODO
[root@localhost cronolog-1.6.2]# ./configure
[root@localhost cronolog-1.6.2]# make && make install

[root@localhost cronolog-1.6.2]# which cronolog
/usr/local/sbin/cronolog
[root@localhost cronolog-1.6.2]#


标题:软件——cronolog日志分隔工具
作者:2638264600
地址:http://bk.isseeker.com/articles/2025/02/17/1739763831843.html