美文网首页IT@程序员猿媛
不写日志的程序员活该加班

不写日志的程序员活该加班

作者: 祥哥去哪里 | 来源:发表于2019-09-21 23:00 被阅读0次

    前言:

    程序员的加班我总结为三种:

    1. 公司压榨你,要求你加班。或者安排非得加班才能完成的工作.
    2. 重要业务,为了不影响用户使用,必须在深夜上线。
    3. 自己写的代码质量低,需要花时间找bug,改bug。然后改bug的时间又影响到了后面的开发任务。这样就进入的恶性循环

    今天我们就来讨论下第三种加班的解决之道。写日志

    如果没有日志

    这里指的日志是指,在代码中通过日志工具,将一些有用的信息打印到日志文件中。(当然存储的形式不局限于文件)

    我知道有很多使用脚本语言开发的同学,在开发中,没有写日志的习惯。因为脚本语言的特性,不用编译,不用打包。想调试某处代码,直接上可以打印输出出来看结果,非常的方便。有的甚至断点都不用,一样可以把代码写好。

    但是不写日志有几个坏处。这也是我亲身经历过的。(没错,我曾今也一个是不写日志的弟弟)

    1. 用户在操作中,遇到了报错。如果他不向你反馈的话。开发者根本就不知道这个错误的发生。更不会把这个问题排查出来修改。

    我们知道现实中的用户遇到这种情况,肯定是不会给你反馈的。很有可能因为一个错误而失去这个用户。这对公司和产品都是很大的损失

    1. 遇到偶发问题,无法定位原因。

    相信大家一定遇到过这样的情况。一个接口或者一个功能报错了。但是一刷新又不报了。反复测试都没有出这个问题。但是10次中又偶尔会有一次。这样的问题是最难定位的,也会浪费开发者很多时间。

    1. 第三方接口,无法控制。

    有时候我们不得不依赖第三方接口做一些事情。当我们某个依赖了第三方接口的功能异常时,我们也无法很迅速的定位问题是在第三方还是我们自己的业务代码。同时,如果是第三方的问题,我们也无法提供什么有用的信息给到第三方,来协助他们解决问题

    如何写日志

    我相信无论是做java开发还是php这样的脚本语言都是有非常多的优秀的日志工具来协助我们写日志的。下面我们以我们常用的thinkPHP框架和java的Slf4j为例子简单介绍下

    thinkPHP :
    tp为我们提供了非常好用的日志工具,封装到\think\Log类中。只需要调用一个方法就能很简单的写出一条日志

    Log::record('测试日志信息,这是警告级别','notice');
    

    Slf4j
    首先引入maven

    <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
    </dependency>
    

    在需要的日志的类上打上 @Slf4j注解这时候也只需要一行代码就能完成日志打印

    log.warn("测试日志信息,这是警告级别");
    

    如果ide报错说没有log这个类的时候。需要在ide中装一个lombok插件,就不会报这个错类

    日志分级

    上文其实已经提到了日志级别。日志级别其实是有一个比较通用的规范。php比较流行的日志规范是PSR-3。java的其实也差不多。大体上是通用的
    规范中,将日志分为 logdebuginfonoticewarningerrorcriticalalertemergency

    • emergency :系统不可用
      例如:服务器死机了
    • alert :必须 立刻采取行动
      例如:在整个网站都垮掉了、数据库不可用了或者其他的情况
    • critical :紧急情况
      例如:程序组件不可用或者出现非预期的异常。
    • error:运行时出现的错误,不需要立刻采取行动,但必须记录下来以备检测。
      例如:接口调用失败,sql执行失败等
    • warning:出现非错误性的异常。
      例如:使用了被弃用的API、错误地使用了API或者非预想的不必要错误。
    • notice:一般性重要的事件。例如:接口消耗的时间和内存信息等
    • info:重要事件
      例如:用户登录和SQL记录,接口的入参,出参
    • debug:开发阶段需要打印的一些信息。一般只输出到控制台,不会进入日志文件
    • log:通用的日志等级(不建议使用)

    开发者,可以根据需要去确定日志的级别。这样就能更轻松的检索日志。还可以通过不同的日志级别去找到bug或者优化的方向。

    结语

    今天的分享没有很难的知识点,都是一看就能懂的。只是介绍一个好的开发习惯。一个好的开发习惯真的能给你带来很高的效率提升,我就是这样踩着坑过来的。如果这篇文章对你有帮助的话,请点个赞。要是能加个关注就更好了。
    最后,愿天下没有加班~

    相关文章

      网友评论

        本文标题:不写日志的程序员活该加班

        本文链接:https://www.haomeiwen.com/subject/yifyuctx.html