欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 宝鼎售后问题提交 | 后台管理


新闻资讯

MENU

软件开发知识

我的编程习 昆山软件定制开发 惯 日志发起

点击: 次  来源:宝鼎软件 时间:2017-09-23

原文出处: 晓风轻

开拓中日志这个问题,每个公司都强调,也拟定了一大堆类型,但按照实际环境看,结果不是很明明,软件开发,主要是这个对象欠好测试和查核,没有日志成果一样跑啊。

但编程活久见,开拓久了,总会碰着“这个问题出产情况上能重现,可是没有日志,业务很巨大,不知道哪一步堕落了?” 这个时候,怎么办? 还能怎么办,发个版本,劳务派遣管理系统,就是把所有处所加上日志,没有任何新成果,然后在让用户重现一遍,拿下日志来看,哦,本来是这个问题。

有没有很熟悉的感受?

我的编程习 昆山软件定制开拓 惯 日志提倡

尚有一种环境,我们系统有3*5=15个节点,出了问题找日志真是疾苦,一个一个呆板翻,N分钟后终于找到了,找到了后发明许多几何相似日志,一个一个排查;日志有了,发明逻辑很巨大,不知道走到谁人分支,只能按照逻辑阐明,半天已往了,终于找到了原因。。。一个问题定位就已往了2个小时,改观时间已往了一半。。。

我的编程习 昆山软件定制开拓 惯 日志提倡

所以我对日志的最少有以下2点要求:

1 能找到谁人呆板

2 能找到用户做了什么

针对第一点,软件开发,我修改了一下nginx的设置文件,让返转头内里返回是谁人呆板处理惩罚的。

nginx的根基设置,各人查阅一下资料就知道。简朴设置如下(出产情况比这个完善) 

我的编程习 昆山软件定制开拓 惯 日志提倡

结果如图,返回了处理惩罚的节点:

我的编程习 昆山软件定制开拓 惯 日志提倡

第二点,要知道用户做了什么。用户信息是很重要的一个信息,能辅佐海量日志内里能快速找到方针日志。一开始要求开拓人员打印的时候带上用户,可是发明这个落地不容易,开拓人员打印日志都常常健忘,越发不消说日志上加上用户信息,我也不行能每天看代码。所以找了一下log4j的设置,公然log4j有个叫MDC(Mapped Diagnostic Context)的类(技能上利用了ThreadLocal实现,重点技能)。详细利用要领请自行查询。详细利用如下:

filter中获得用户信息,并放入MDC,记着filter后要清理掉(因为tomcat线程池线程重用的原因)。

我的编程习 昆山软件定制开拓 惯 日志提倡

用户信息放入MDC:

我的编程习 昆山软件定制开拓 惯 日志提倡

log4j设置,增加用户信息变量:

我的编程习 昆山软件定制开拓 惯 日志提倡

我做好上面2步后,对开拓人员的日志只有3点要求:

1. 修改(包罗新增)操纵必需打印日志

大部门问题都是修改导致的。数据修改必需有据可查。

2. 条件分支必需打印条件值,重要参数必需打印

尤其是分支条件的参数,打印后就不消阐明和揣摩走谁人分支了,很重要!如下面代码内里的userType,必然要打印值,因为他抉择了代码走谁人分支。

我的编程习 昆山软件定制开拓 惯 日志提倡

3. 数据量大的时候需要打印数据量

前后打印日志和最后的数据量,主要用于阐明机能,能从日志中知道查询了几多数据用了多久。这点是发起。本身视环境而抉择是否打印,我一般发起打印。

加上 我的编码习惯 – Controller类型 这篇文章的AOP,最后的日志如下:

我的编程习 昆山软件定制开拓 惯 日志提倡

其实日志的级别我到不是很存眷,还没有到存眷这步到时候。开拓组长需要做好后勤事情(前面2步),然后拟定简朴法则,法则太多太能落实了。

日志这个对象,更多是靠自觉,项目组这么多人,我也不行能一个一个给各人看代码,然后叫你加日志。我阐明白一下,为什么有些人没有打印日志的习惯,说了多次都改不外来。我发起各人养成下面的习惯,这样你的日志就会改进多了!

1.不要依赖debug,多依赖日志。