Linux 日志切割工具cronolog详解

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

一、前言

二、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 as Apache, 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来做日志切割。最后,希望大家有所收获^_^……













本文转自陈明乾51CTO博客,原文链接: http://blog.51cto.com/freeloda/1346076 ,如需转载请自行联系原作者
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
3月前
|
安全 Linux Shell
四、Linux核心工具:Vim, 文件链接与SSH
要想在Linux世界里游刃有余,光会“走路”还不够,还得配上几样“高级装备”。首先是Vim编辑器,它像一把瑞士军刀,让你能在命令行里高效地修改文件。然后要懂“软硬链接”,软链接像个快捷方式,硬链接则是给文件起了个别名。最后,SSH是你的“传送门”,不仅能让你安全地远程登录服务器,还能用scp轻松传输文件,设置好密钥更能实现免-密登录,极大提升效率。
|
3月前
|
安全 Linux iOS开发
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
191 0
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
|
3月前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
282 16
|
5月前
|
缓存 监控 Linux
Linux系统性能调优技巧和相关工具
Linux 作为一种应用应展和系统服务的优选操作系统,在处理性能和端到端点评估上持有出色表现。但是,在处理进程或系统处于低效状态时,性能调优就显得十分重要。本文将探讨一些 Linux 系统性能调优的常用技巧,并介绍相关工具
155 1
Linux系统性能调优技巧和相关工具
|
5月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
548 16
|
4月前
|
数据采集 编解码 运维
一文讲完说懂 WowKey -- WowKey 是一款 Linux 类设备的命令行(CLT)运维工具
WowKey 是一款面向 Linux 类设备的命令行运维工具,支持自动登录、批量执行及标准化维护,适用于企业、团队或个人管理多台设备,显著提升运维效率与质量。
|
5月前
|
监控 Linux 应用服务中间件
linux查看日志文件tail -f用法
在 Linux 中,查看和监控日志文件是系统管理员和开发者常用的操作之一。tail 命令就是用来查看文件内容的,它默认显示文件的最后部分。tail -f 是 tail 命令的一个非常有用的选项,用于实时查看和跟踪日志文件的更新,尤其是在监控运行中的服务时非常有用。
682 0
|
存储 监控 Ubuntu
Linux系统之GoAccess实时Web日志分析工具的基本使用
【5月更文挑战第22天】Linux系统之GoAccess实时Web日志分析工具的基本使用
634 1
|
存储 监控 数据可视化
linux日志分析工具与命令
在Linux中,日志分析常用命令行工具如`tail`(实时追踪日志)、`head`(显示日志开头)、`grep`(搜索关键词)、`awk`(复杂文本处理)、`sed`(文本替换)、`less`(分页查看)和`cat`(输出内容)。此外,还有日志分析工具如Logwatch(自动分析邮件摘要)、rsyslog/syslog-ng(日志收集)、Graylog(集中式管理)、ELK Stack(日志收集、解析、存储和可视化)和Splunk(企业级日志管理)。这些工具帮助管理员监控系统、排查问题、进行安全审计并获取业务洞察。
884 1