一,简介:cronolog 是一个简单的过滤程序,读取日志文件条目从标准输入和输出的每个条目并写入指定的日志文件的文件名模板和当前的日期和时间。当扩展文件名的变化,目前的文件是关闭,新开辟的。cronolog 旨在和一个Web服务器一起使用,如Apache,分割访问日志为每天或每月的日志。
二,特点:cronolog主要和Web服务器配置使用,特别是Apache服务器,Apache 默认日志文件是不分割的,一个整文件既不易于管理,也不易于分析统计。安装cronolog后,可以将日志文件按时间分割,易于管理和分析。下面是与Apache配置的一些指令。
三,下载并安装cronolog:
1,下载cronolog程序
[root@localhost ~]#wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
2,解压tar包
[root@localhost ~]#tar zxvf cronolog-1.6.2.tar.gz
3,进入该目录并安装
[root@localhost ~]#cd cronolog-1.6.2
[root@localhost ~]#./configure --prefix=/usr/local/cronolog-1.6.2/
[root@localhost ~]#make
[root@localhost ~]#make install
[root@localhost ~]#which cronolog
即可安装完成
四,cronolog的简单使用:
[root@localhost ~]# /usr/local/cronolog-1.6.2/sbin/cronolog -V
cronolog version 1.6.2
[root@localhost ~]# /usr/local/cronolog-1.6.2/sbin/cronolog -h
usage: /usr/local/cronolog-1.6.2/sbin/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
[root@localhost ~]# loggenerator | cronolog log_file_pattern
其中,loggenerator为产生log的程序,而log_file_pattern是日志文件的路径,可以在其中加入cronolog所支持的时间相关的pattern字符,如/www/log/%y/%m/%d/access.log。其pattern为%字符后跟一特殊字符,简述如下:
五,cronolog实战(一)----分割nginx日志
1,安装cronolog程序,前边有,省略。
2,创建一个命名管道
[root@localhost ~]#mkfifo /usr/local/nginx/logs/access_log_pipe
3.配置nginx.conf文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /usr/local/nginx/logs/access_log_pipe;#(生产的日志写到管道文件里)
4,测试写看是否有报错,无报错继续下一步。
[root@localhost ~]/usr/local/nginx/sbin/nginx -t
5,输入一下命令在nginx重启前,
[root@localhost logs]# nohup cat /usr/local/nginx/logs/access_log_pipe | nohup /usr/local/cronolog-1.6.2/sbin/cronolog /usr/local/nginx/logs/%Y%m%d/access_%Y%m%d%H.log &
[1] 15718
[root@localhost logs]# nohup: ignoring input and redirecting stderr to stdout
nohup: appending output to `nohup.out'
解析: /usr/local/nginx/logs/access_log_pipe(生产的日志文件写到管道里) | nohup /usr/local/cronolog-1.6.2/sbin/cronolog (cronolog程序的绝对路径) /usr/local/nginx/logs/%Y%m%d/access_%Y%m%d%H.log & (存放分割文件的路径以当时的时间点为文件夹)
6,查看是否有生产的其日志文件。
[root@localhost logs]# ll
total 38992
drwxr-xr-x. 2 root root 4096 Nov 19 16:19 20151119
六,cronolog实战(二)----分割Apache日志
1,安装省略
2,修改apache配置文件
CustomLog "|/usr/local/sbin/cronolog /usr/local/apache2/logs/access_log.%Y%m%d" combined
需要特别注意的是,这里的日志必须使用绝对路径,否则不会生成日志文件
3,将上面的 /usr/local/ /usr/local/apache2/logs/%m/access_log.%Y%m%d改为按月保存
/usr/local/apache2/logs/%m/access_log.%Y%m%d
4,重启下Apache,即可看见生成的日志。
七,cronolog实战(三)----分割tomcat的catalina.out日志
1,下载cronolog程序
[root@localhost ~]#wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
2,解压tar包
[root@localhost ~]#tar zxvf cronolog-1.6.2.tar.gz
3,进入该目录并安装
[root@localhost ~]#cd cronolog-1.6.2
[root@localhost ~]#./configure --prefix=/usr/local/cronolog-1.6.2/
[root@localhost ~]#make
[root@localhost ~]#make install
[root@localhost ~]#which cronolog
/usr/local/sbin/cronolog
4,cronolog的简单使用:
[root@localhost ~]# /usr/local/cronolog-1.6.2/sbin/cronolog -V
cronolog version 1.6.2
[root@localhost ~]# /usr/local/cronolog-1.6.2/sbin/cronolog -h
usage: /usr/local/cronolog-1.6.2/sbin/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
5,修改tomcat bin目录下的catalina.sh文件中的
-
org.apache.catalina.startup.Bootstrap “$@” start \
-
>> “$CATALINA_BASE”/logs/catalina.out 2>&1 &
为:
-
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
-
| /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &
touch “$CATALINA_BASE”/logs/catalina.out
这一行也可以注释掉
shift
touch "$CATALINA_OUT"
本文转自 lqbyz 51CTO博客,原文链接:http://blog.51cto.com/liqingbiao/1714777