定位生产问题,查看日志是基本技能,必须牢牢掌握 tail -f xxx.log grep -r 'traceID' *.log 不会这些命令的,可以考虑放弃JAVA。 当框架里代码层次特别深时,定位一个问题,相关日志显示的很凌乱,没有一个关联的关键词。 测试环境,感觉不出来。当上了生产环境,日志海量的打印。找一个数据的完整流程日志往往向大海捞针。 这时如果你把打印日志的方法定制,加上一个traceID 唯一的数据ID,可以UUID生成,也可以用日期加随机数,反正能保证唯一就行。 入参对象xxx【traceID20170708112233abc】 异常信息xxx【traceID20170708112233abc】 SQLxxxxxx【traceID20170708112233abc】 出参对象xxx【traceID20170708112233abc】 可能分布在不同 XXX.log文件中 通过20170708112233abc,grep -r '20170708112233abc' *.log 一下子就把数据相关的日志都搜索出来了。 是不是,很方便。 一般传统项目,traceID应该非常好设计。 对于微服务的架构,少者十多个maven工程,多者三四十个maven工程,工程之间怎么传递traceID,后续在分解 提示,利用一个上下文对象,贯穿整个服务。 |
|