网站首页 > 技术文章 正文
系统环境:Centos 7.4.1708
JDK:1.8.0_181
Tomcat:tomcat-8.5.13
cronolog工具
cronolog 简介:
cronolog 是一个简单的过滤程序,读取日志文件条目从标准输入和输出的每个条目并写入指定的日志文件的文件名模板和当前的日期和时间。当扩展文件名的变化,目前的文件是关闭,新开辟的。cronolog 旨在和一个Web服务器一起使用,如Apache、tomcat,分割访问日志为每天或每月的日志。
cronolog 安装(这里采用yum安装,也可以选择源码安装)
[root@localhost ~]# yum -y install epel-release
[root@localhost ~]# yum -y install cronolog
cronolog 使用
[root@localhost ~]# 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 一般是采取管道的方式来工作的,采用如下的形式:
[root@localhost ~]# 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)
用cronolog分割tomcat的catalina.out文件
1)查看cronolog安装后所在目录(验证安装是否成功)
[root@localhost ~]# which cronolog
/sbin/cronolog
2)编辑tomcat目录bin下的catalina.sh文件
找到下面这行,类似这样的行有2处:
org.apache.catalina.startup.Bootstrap "$@" start \ >> "$CATALINA_OUT" 2>&1 &
第一处:tomcat是带"-security"参数的启动,
第二处:默认tomcat启动方式,也就是else下面的那部分,我们只修改这里。
另外还要把touch "$CATALINA_OUT"这行注释掉。
if [ -z "$CATALINA_OUT" ] ; then CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out fi
修改为
if [ -z "$CATALINA_OUT" ] ; then CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out.`date +%Y-%m-%d` fi
找到446行,修改如下
#touch "$CATALINA_OUT" if [ "$1" = "-security" ] ; then if [ $have_tty -eq 1 ]; then echo "Using Security Manager" fi shift eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \ -D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \ -classpath "\"$CLASSPATH\"" \ -Djava.security.manager \ -Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \ -Dcatalina.base="\"$CATALINA_BASE\"" \ -Dcatalina.home="\"$CATALINA_HOME\"" \ -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \ org.apache.catalina.startup.Bootstrap "$@" start 2>&1 | /sbin/cronolog "$CATALINA_OUT" >> /dev/null & #>> "$CATALINA_OUT" 2>&1 "&" else eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \ -D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \ -classpath "\"$CLASSPATH\"" \ -Dcatalina.base="\"$CATALINA_BASE\"" \ -Dcatalina.home="\"$CATALINA_HOME\"" \ -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \ org.apache.catalina.startup.Bootstrap "$@" start 2>&1 | /sbin/cronolog "$CATALINA_OUT" >> /dev/null & #>> "$CATALINA_OUT" 2>&1 "&" fi
保存退出~~
3)重启tomcat服务
[root@localhost bin]# pwd
/usr/local/tomcat/bin
[root@localhost bin]# ./shutdown.sh
[root@localhost bin]# ./startup.sh
[root@localhost bin]# cd ../logs/
[root@localhost logs]# ll
查看日志目录是否生成catalina.out.yymmdd的日志文件
配置cronolog完成了,观察每天是否有一个新的catalina.out.yymmdd的日志文件生成,定期删除日期较旧的日志文件
分享完成,谢谢支持,多评多转
对Linux感兴趣的小伙伴私信“Linux资料”,免费获取视频文档资料。
猜你喜欢
- 2024-09-15 linux实战题(linux实验题目)
- 2024-09-15 解决Tomcat catalina.out不断膨胀,导致磁盘占用过大的问题
- 2024-09-15 运维服务篇:Nginx常用配置实例(虚拟主机/防盗链/日志分割)
- 2024-09-15 Apache2.4进阶:优化配置(优化配置的原则)
- 2024-09-15 Tomcat的catalina.out日志分割(二)
- 2024-09-15 如何处理生产环境Tomcat的catalina.out日志?
- 2024-09-15 Tomcat的catalina.out日志分割(一)
- 2024-09-15 Apache服务优化(apache调优和优化)
- 2024-09-15 实用 | 10分钟教你搭建一个嵌入式web服务器
- 2024-09-15 Apache配置文件详解(简述apache配置文件的结构及其关系)
- 1512℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 556℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 504℃MySQL service启动脚本浅析(r12笔记第59天)
- 482℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 481℃启用MySQL查询缓存(mysql8.0查询缓存)
- 461℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 441℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 438℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)