常用的日志截取方法

1.通过关键词截取日志
适用场景:我想要的日志中要有关键词MessageHandler: get one TextMessage
命令:grep 'MessageHandler: get one TextMessage' server.out -A 100 -B 100 >~/server_part.log  
解释:截取batch_today.log中关键词的前100行和后100行的日志,并将截取的日志保存到当前登录用户的“家目录”下的batch_part.log文件中(以下雷同)

如何查家(home)目录在哪?
[weblogic@DCCKWZBS2-R440 life.ulic.com]$ cd ~
[weblogic@DCCKWZBS2-R440 ~]$ pwd
/home/weblogic

2.通过时间截取日志
适用场景:我的某个操作是在2021-01-21 10:00到2021-01-21 11:00之间产生的,我要取在此期间的日志
命令:sed -n '/2021-01-20 10:00/,/2021-01-21 11:00/p' server.out >~/server_part.log
解释:截取server.out中2021-01-20 10:00到2021-01-21 11:00之间产生的日志,并将截取的日志保存到当前登录用户的home目录下的server_part.log文件中

3.通过日志行数截取日志
适用场景:我发现页面中某个地方有报错,我想再操作一次,取这一次操作产生的日志
命令:
分两步
1.进入日志目录,获取日志文件当前的总行数(server.out 为日志文件)
wc -l server.out
获知server.out共有1465018行
2.页面操作后,截取第一步获取到的行数之后的日志
sed -n '1465018,$p' server.out > ~/server_part.log
 
 

[mispread@misptest ~]$ cat cut_out_log.sh
#!/usr/bin/ksh
date_time=`date +'%Y-%m-%d-%H%M'`
log_name='server.out'
num_log=`wc -l ${log_name} | awk '{print $1}'`
num_limit=10000

if [ ${num_log} -lt ${num_limit} ];
then
sed -n '1,$p' ${log_name} > ~/${log_name}.${date_time}
else
num_str=$((${num_log} - ${num_limit}))
# echo ${num_str}
sed -n $num_str,'$p' ${log_name} > ~/${log_name}.${date_time}
fi

posted @ 2022-02-18 10:11  小晓风  阅读(1398)  评论(0编辑  收藏  举报