Linux日志切割工具cronolog详解

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

cd /usr/local/src/
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
warning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                          ################################# [100%]

安装ntp

 yum install -y ntp

时间同步

ntpdate 202.120.2.101
27 May 01:40:44 ntpdate[5136]: no server suitable for synchronization found

#以下是国内常见的NTP服务器
ntp.sjtu.edu.cn 202.120.2.101 上海交通大学网络中心
s1a.time.edu.cn 北京邮电大学
s1b.time.edu.cn 清华大学
s1c.time.edu.cn 北京大学
s1d.time.edu.cn 东南大学
s1e.time.edu.cn 清华大学
s2a.time.edu.cn 清华大学
s2b.time.edu.cn 清华大学
s2c.time.edu.cn 北京邮电大学
s2d.time.edu.cn 西南地区网络中心
s2e.time.edu.cn 西北地区网络中心
s2f.time.edu.cn 东北地区网络中心
s2g.time.edu.cn 华东南地区网络中心
s2h.time.edu.cn 四川大学网络管理中心
s2j.time.edu.cn 大连理工大学网络中心
s2k.time.edu.cn CERNET桂林主节点
s2m.time.edu.cn 北京大学

#自动对时
#crontab –e
#30 3 * * * /usr/sbin/ntpdate -u 202.120.2.101 && hwclock -w //凌晨3点30同步时间并写入硬件

安装cronolog

yum install -y cronolog httpd
which cronolog
/usr/sbin/cronolog

源码安装

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
/usr/local/sbin/cronolog

cronolog 使用
基本使用

 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)

切割apache日志

#刚刚是用yum安装的
vim /etc/httpd/conf/httpd.conf
#修改前
CustomLog "logs/access_log" combined
#源码安装的
CustomLog "|/usr/local/sbin/cronolog /log/www/access_%Y%m%d.log" combined
#yum安装的 
CustomLog "|/usr/sbin/cronolog /log/www/access_%Y%m%d.log" combined
#将默认日志: CustomLog "logs/access_log" combined
#修改为:CustomLog "|/usr/local/sbin/cronolog /log/www/access_%Y%m%d.log" combined 即可。其中%Y%m%d为日志文件分割方式,即为“年月日”。

启动apache服务

systemctl start httpd
#tab不出来 去刷新web
cd /log/www/
ls
access_20200614.log

cronolog 总结
以上就是cronolog的安装方法 自取其一,有人会问为什么不用apache自带的日志分割工具,apache自带的日志分割工具rotatelogs,在进行日志切割时容易丢日志,所以我们就用cronolog来做日志的切割

你可能感兴趣的:(cronolog)