在日常的程序运行中,难免会遇到一些客户使用上出现问题;这个时候就需要去翻看日志来查询异常问题;
方法一
如果在反馈信息中没有时间段和具体异常信息,可以整体搜索异常
cat -n catalina.out | grep Exception -A2 -B2
这会展示出所有exception的前后两行,如下图
--
12182976 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
12182977 at java.lang.Thread.run(Thread.java:745)
12182978 {ERROR} [2018-09-18 21:56:02,265] org.easycalc.base.controller.BaseAction(line-71) : java.lang.NullPointerException
12182979 at java.lang.String.<init>(String.java:554)
12182980 at org.easycalc.commons.utils.AESUtil.decrypt(AESUtil.java:83)
--
可以看到异常所在的日志行号,拿到行号之后,可以查询前后50条或者100条日志基本就能看出全部异常信息了
sed -n '12181978,12183978p' catalina.out
方法二
根据时间来定位日志信息
如果客户反馈在几点几分遇到了异常(时间比较精确),这个时候可以通过时间检索日志来定位异常信息
sed -n '/2018-09-18 21:55:00/,/2018-09-18 21:56:59/p' catalina.out
如上命令,可以查看21:55到21:56之间的日志,由此方法也可以定位日志信息;
如果时间段内日志过多xshell展示不全怎么办呢,这个时候可以将日志查询出来之后,放入某个文件内,下载下来之后逐条查看
sed -n '/2018-09-18 21:55:00/,/2018-09-18 21:56:59/p' catalina.out > abc.txt
通过两种方式都能很快找到异常日志,以上命令比较常用记录一下,也希望能帮助到需要的人