过程日志定位疑难问题
1.为什么要有过程日志:
配置过程日志主要对log4j的熟悉程度. 当线上的数据库不能调试的时候,一种办法是在测试库上建立到线上库的dblink, 使用insert into table select * from t1@dblink ...导入线上的数据到测试库,通过跟踪问题数据来定位程序问题. 另一种办法就是通过详细的过程日志,看看问题数据是如何产生的, 打印详细的过程日志非常非常重要
2.添加过程日志
加过程日志小心空指针,最好把日志加到方法的参数检验之后。
3.定位日志的常用命令:
grep -# 将匹配行前后#行内容一同打印
-C # 等价于 -#选项
-B # 匹配行前#行
-A # 匹配行后#行
比如:
grep 'UPDATE CPCOPERATION a SET A.STEP =-1' -A 10 debug.log | more
如果想看最后匹配到的内容:
grep 'GET /Registration-a_action.SIGNIN' access_log | tail -n 100
另一个有用的参数:-a或--text grep原本是搜寻文字文件,若拿二进制的档案作为搜寻的目标, 则会显示如下的讯息: Binary file 二进制文件名 matches 然后结束。 若加上-a参数则可将二进制档案视为文本文件搜寻, 相当于--binary-files=text这个参数。