常用的日志截取方法
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)目录在哪?
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.通过日志行数截取日志
适用场景:我发现页面中某个地方有报错,我想再操作一次,取这一次操作产生的日志
命令:
[weblogic@DCCKWZBS2-R440 life.ulic.com]$ cd ~
[weblogic@DCCKWZBS2-R440 ~]$ pwd
/home/weblogic
[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 为日志文件)
1.进入日志目录,获取日志文件当前的总行数(server.out 为日志文件)
wc -l server.out
![]()
获知server.out共有1465018行
2.页面操作后,截取第一步获取到的行数之后的日志
sed -n '1465018,$p' server.out > ~/server_part.log
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步