一、前言
二、cronolog 簡介
三、cronolog 特點
四、cronolog 安裝
五、cronolog 使用
六、cronolog 總結
注,操作系統 CentOS 6.4 x86_64,軟件版本 cronolog 1.6.2,軟件下載http://cronolog.org/download/index.html。
一、前言
大家都知道apache服務器,默認日志文件是不分割的,一個整文件既不易於管理,也不易於分析統計。本博文主要講解Web服務器日志切割工具cronolog,下面我們就來詳細的講解一下。
二、cronolog 簡介
Welcome to cronolog.org, the home of the cronolog web log rotation program.cronolog is a simple filter program that reads log file entries from standard input and writes each entry to the output file specified by a filename template and the current date and time. When the expanded filename changes, the current file is closed and a new one opened. cronolog is intended to be used in conjunction with a Web server, such asApache, to split the access log into daily or monthly logs.
cronolog 是一個簡單的過濾程序,讀取日志文件條目從標准輸入和輸出的每個條目並寫入指定的日志文件的文件名模板和當前的日期和時間。當擴展文件名的變化,目前的文件是關閉,新開辟的。cronolog 旨在和一個Web服務器一起使用,如Apache,分割訪問日志為每天或每月的日志。
三、cronolog 特點
cronolog主要和Web服務器配置使用,特別是Apache服務器,Apache 默認日志文件是不分割的,一個整文件既不易於管理,也不易於分析統計。安裝cronolog后,可以將日志文件按時間分割,易於管理和分析。下面是與Apache配置的一些指令:
|
1
2
|
TransferLog
"|/usr/sbin/cronolog /web/logs/%Y/%m/%d/access.log"
ErrorLog
"|/usr/sbin/cronolog /web/logs/%Y/%m/%d/errors.log"
|
下面是具體案例,
|
1
2
|
/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源
|
1
2
3
4
5
6
|
[root@node6 src]
# yum install -y wget vim
[root@node6 src]
# wget http://ftp.sjtu.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
[root@node6 src]
# rpm -ivh epel-release-6-8.noarch.rpm
warning: epel-release-6-8.noarch.rpm: Header V3 RSA
/SHA256
Signature, key ID 0608b895: NOKEY
Preparing...
########################################### [100%]
1:epel-release
########################################### [100%]
|
2.安裝ntp
|
1
|
[root@node6 src]
# yum install -y ntp
|
3.時間同步
|
1
2
|
[root@node6 src]
# ntpdate 202.120.2.101
28 Dec 17:59:17 ntpdate[1413]: step
time
server 202.120.2.101 offset -25666.776448 sec
|
4.安裝cronolog
(1).直接用yum安裝
|
1
|
[root@node6 src]
# yum install -y cronolog httpd
|
(2).源碼安裝
|
1
2
3
4
5
6
7
|
[root@node6 src]
# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
[root@node6 src]
# tar xf cronolog-1.6.2.tar.gz
[root@node6 src]
# cd cronolog-1.6.2
[root@node6 cronolog-1.6.2]
# ./configure
[root@node6 cronolog-1.6.2]
# make && make install
[root@localhost ~]
# which cronolog
/usr/local/sbin/cronolog
|
好了,到這里我們的cronolog就安裝完成了,下面我們來說一下cronolog如何使用。
五、cronolog 使用
(1).基本使用
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[root@node6 ~]
# 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 一般是采取管道的方式來工作的,采用如下的形式:
|
1
|
[root@node6 ~]
# loggenerator | cronolog log_file_pattern
|
其中,loggenerator為產生log的程序,而log_file_pattern是日志文件的路徑,可以在其中加入cronolog所支持的時間相關的pattern字符,如/www/log/%y/%m/%d/access.log。其pattern為%字符后跟一特殊字符,簡述如下:
轉義符:
|
1
2
3
|
% %字符
n 換行
t 水平制表符
|
時間域:
|
1
2
3
4
5
6
7
|
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 時區。若時區不能確定,則無意義
|
日期域:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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文件,將其中的
|
1
2
3
4
|
[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).下面是效果
|
1
2
3
4
5
6
7
|
[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來做日志切割。最后,希望大家有所收獲^_^……
本文出自 “Share your knowledge …” 博客,請務必保留此出處http://freeloda.blog.51cto.com/2033581/1346076
