看晓风轻大大的程序员你为什么这么累专栏,发现对日志规范提出的要求如下

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,多依赖日志。

别人面对对象编程,你面对debug编程。有些人无论什么语言,最后都变成了面对debug编程。哈哈。这个习惯非常非常不好!debug会让你写代码的时候偷懒不打日志,而且很浪费时间。改掉这个恶习。

2. 代码开发测试完成之后不要急着提交,先跑一遍看看日志是否看得懂。

日志是给人看的,只要热爱编程的人才能成为合格程序员,不要匆匆忙忙写完功能测试ok就提交代码,日志也是功能的一部分。要有精益求精的工匠精神!

日志规范——转自晓风轻专栏相关推荐

  1. Controller规范,摘自晓风轻专栏

    先说说Controller规范,主要的内容是就是接口定义里面的内容,你只要遵循里面的规范,controller就问题不大,除了这些,还有另外的几点: 1 所有函数返回统一的ResultBean/Pag ...

  2. Java约定俗成怎么定义_Java接口定义规范,摘自晓风轻专栏

    1. 返回格式不统一 同一个接口,有时候返回数组,有时候返回单个:成功的时候返回对象,失败的时候返回错误信息字符串.工作中有个系统集成就是这样定义的接口,真是辣眼睛.这个对应代码上,返回的类型是map ...

  3. 读书笔记之《程序员你为什么这么累-晓风轻编码规范》

    <程序员你为什么这么累-晓风轻编码规范> 讲述关于编码规范的示例,怎么样定义接口和代码模板,怎么样把业务代码写简单清晰. 使用场景:日常项目开发中可以时长查看,符合条件可以应用到. 一.目 ...

  4. nodejs 日志规范

    nodejs 日志规范 一般前端开发同学,对日志其实不太敏感,毕竟前端大多数情况下,不太关心日志.即使有,也可能调用一些第三方的统计,比如百度统计或者别的等.在 Node.js(下文中简称node) ...

  5. 日志规范之为什么要使用SLF4J

    日志规范 日志对项目而言,其重要性不言而喻,如果没有日志,生成环境的问题就无法定位,面对多种日志框架,如:JDK14.simple.Log4j.Logback等,视乎我们有开始纠结了,到底使用哪个呢? ...

  6. 需要规范日志格式_Node开发的日志规范

    一般前端开发同学,对日志其实不太敏感,毕竟前端大多数情况下,不太关心日志.即使有,也可能调用一些第三方的统计,比如百度统计或者别的等.在 Node.js推进过程中,也发现我们平常打日志太随意,该打的日 ...

  7. 别再乱打日志了,这份 Java 日志规范,应有尽有,建议收藏!

    1 简介 在程序中写日志是一件非常重要,但是很容易被开发人员忽视的地方.写好程序的日志可以帮助我们大大减轻后期维护压力.在实际的工作中,开发人员往往迫于巨大时间压力,而写日志又是一个非常繁琐的事情,往 ...

  8. 别再乱打日志了,这份 Java 日志规范,应有尽有,建议收藏!!

    1.简介 在程序中写日志是一件非常重要,但是很容易被开发人员忽视的地方.写好程序的日志可以帮助我们大大减轻后期维护压力.在实际的工作中,开发人员往往迫于巨大时间压力,而写日志又是一个非常繁琐的事情,往 ...

  9. potainer 日志_日志系统落地:制定日志规范

    我们的系统,已经接入阿里云的日志服务很长一段时间了,存了数以TB级别的日志,突然有一天,领导说,我们需要所有订单的ip信息用于审计订单的真实性,突然发现日志系统无法一次性查找到我所有需要的信息,让我很 ...

最新文章

  1. 陌生人社会_陌生人之旅
  2. mysql和ORTHOMCL_Orthomcl的详细使用
  3. IOC的原理及手动实现
  4. 使用Ajax时常用的转码方法encodeURI,escape,encodeURI
  5. Atitit 数据类型体系图 目录 1. 系统常用的数据类型 1 2. H5 form表单新数据类型 2 2.1. TML5 新的 Input 类型 2 2.2. HTML5 的新的表单元素: 2
  6. 23种Python设计模式之工厂方法模式详解
  7. SPSS中介效应与调节效应插件Process简介(1)
  8. VC法则:互联网行业仅前三名可成功
  9. 选择排序 简单选择排序 直接选择排序的区别
  10. 如何删除2345浏览器网络导航主页
  11. MATLAB高斯平顶化,一种高斯光束变换为平顶光束整形透镜的粒子群设计方法与流程...
  12. 8、ESP32-S - 控制 SPI 液晶屏显示动态图片
  13. 对接斑马打印机 usb模式+打印机共享模式
  14. 简单的CSV文件读取,C语言实现
  15. loadrunner入门篇 - Vuser发生器
  16. Pandas+Pyecharts | 2022年世界500强数据分析可视化
  17. 银行营业网点安全用电产品需求与方案
  18. 中文医疗NLP榜单-CBLUE介绍
  19. 传统的机器学习目标检测和深度学习的目标检测
  20. IBM待遇完全揭密--工资 级别等(完整版)(2010-09-06 22:14 )

热门文章

  1. Axapta program, involve MenuItem:程序定义MenuItem
  2. 漫画丨CTO不得不面对的9大困境
  3. mt2503 在MMI版本实现AT+CPBF
  4. Vue简明实用教程(13)——Vue的生命周期
  5. 轻量级网络模型MobileNet发展脉络(V1-V2-V3)
  6. 清华博士导师整理:Tensorflow 和 Pytorch 的笔记(包含经典项目实战)
  7. Python实现AI图像识别-身份证识别
  8. WEKA进行Apriori、FP-Tree、K-means算法测试
  9. 中职教资证计算机应用,中职计算机教师资格证只能教中职学校的吗
  10. 亚马逊婴儿围栏CPC认证标准要求