如何切分和截取服务器上的大日志文件
一、Tomcat 日志切分配置,(logrotate)详细介绍
新建一个文件
在/etc/logrotate.d/ 目录下新建一个文件,命名随意:
$ mkdir tomcat
$ vi /etc/logrotate.d/tomcat
复制下面的语句至新建的文件中:
//需要切割的日志绝对路径
/data/tomcat-8.0.38/logs/catalina.out {
copytruncate
daily
rotate 30
compress
delaycompress
missingok
dateext
notifempty
size 100M
}
$:wq
3. 添加定时任务
$ crontab -e
00 00 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat &>/dev/null
$:wq
备注:
重要的 logrotate 选项:
compress --> 压缩日志文件的所有非当前版本
daily,weekly,monthly --> 按指定计划轮换日志文件
delaycompress --> 压缩所有版本,除了当前和下一个最近的
endscript --> 标记 prerotate 或 postrotate 脚本的结束
errors “emailid” --> 给指定邮箱发送错误通知
missingok --> 如果日志文件丢失,不要显示错误
notifempty --> 如果日志文件为空,则不轮换日志文件
olddir “dir” --> 指定日志文件的旧版本放在 “dir” 中
postrotate --> 引入一个在日志被轮换后执行的脚本
prerotate --> 引入一个在日志被轮换前执行的脚本
rotate ‘n’ --> 在轮换方案中包含日志的 n 个版本
sharedscripts --> 对于整个日志组只运行一次脚本
size=‘logsize’ --> 在日志大小大于 logsize(例如 100K,4M)时轮换
二、截取日志文件中的部分日志
在日常维护中,需要根据日志来排查故障,但由于日志文件过大,整个下载又很耗时间,我们可以通过以下两种方式输出部分日志
第一种:tail 打印方式
tail -输出行数 日志绝对路径名 > 输出文件绝对路径名
备注:
tail -20 date.log 输出最后20行的内容
tail -n -20 date.log 输出倒数第20行到文件末尾的内容
tail -n +20 date.log 输出第20行到文件末尾的内容
tail -f date.log 实时监控文件内容增加,默认10行。
第二种:sed 打印方式(指定行输出)
sed -n “开始行,结束行p” 日志绝对路径名 > 输出文件绝对路径名
备注:
sed -n '70,75p' date.log 输出第70行到第75行的内容
sed -n '6p;260,400p; ' 文件名 输出第6行 和 260到400行
sed -n 5p 文件名 输出第5行
上一篇: 开始学习Vue.js
下一篇: ETL学习笔记之二 实现篇(转)
推荐阅读