为什么要有日志

我们不可能实时的24小时对系统进行人工监控,那么该如何定位功能丧失的原因呢?这时,对于系统日志来说就“是时候表演真正的技术了”。日志对于运行环境中系统的监控和问题定位是至关重要的,在系统设计、开发和实现的过程中必须时刻注意着log的输出,这将会对于日后的系统监控和异常分析起至关重要的作用!

  那么,在系统日志实现上应该注意哪些问题呢?如何做到不滥用日志、减少大量无用信息,让日志记录足够精简明了?

  第一:系统的哪些运行信息需要进行日志记录?

    1、功能模块的启动和结束完整的系统由多个功能模块组成,每个模块负责不同的功能,因此需要对模块的启动和结束进行监控。是否在需要的时机正常加载该模块?又是否在退出结束的时候正常完成结束操作,正常退出?

    2、用户的登录和退出哪位用户在什么时间通过什么IP登录或退出了系统

   3、系统的关键性操作数据库链接信息、网络通信的成功与失败等

   4、系统运行期间的异常信息NPE、OOM以及其他的超时、转换异常等)

    5、关键性方法的进入和退出(一些重要业务处理的方法,在进入和结束的时候需要有日志信息进行输出)

    ……

      ……

  第二:什么样的日志格式有助于开发者进行明确的分析?

       日志信息要求必须精简,过多的无用信息不但对系统分析起不到什么作用,反而会增加系统的运行压力、消耗系统的运行资源。这里有个日志模板,可供参考。

       时间-[线程名][日志等级]-日志输出位置(全类名,可以精确到方法名):日志信息

      2013-09-04 10:49:20.296-[Thread-initRedis21504][INFO]-com.shanghai.LoginController.initLogInfo:LingMing[User] is logining

       日志信息的内容可以根据不同的情况进行设计,但是前面的时间到日志输出位置必须要保证完整性,这样才有利于日志的分析。

  第三:如何对不同的日志信息进行等级划分?

      日志等级通常分为四种:DEBUG、INFO、WARN、ERROR

      DEBUG:系统调试信息,通常用于开发过程中对系统运行情况的监控,在实际运行环境中不进行输出。

      INFO:系统运行的关键性信息,通常用于对系统运行情况的监控。

      WARN:告警信息,系统存在潜在的问题,有可能引起运行异常,但此时并未产生异常。

      ERROR:系统错误信息,需要进行及时处理和优化。

   这里列出来了各种等级的日志信息,在开发过程中哪些信息需要设置为哪种等级有赖于开发者的自己判断,这里只是给个建议。

  日志的管理是系统很重要的一部分,千万不可忽略其重要性。完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能达到事半功倍的效果。开发者必须要明白日志的价值和意义,万万不可忽略和轻视,并且在系统设计之初就建议制定一份关于日志管理的说明规范,明确哪些方法、操作必须进行日志输出,在进行开发过程中也要严格遵守。

转载于:https://www.cnblogs.com/nju-lfk/p/8690877.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、查日志最实用排行榜 N0.1 推荐:vi命令中的查找 步骤: 1、进入vi 2、输入:?关键词 3、n键向上查找,N向下查找 适合场景:适合成熟的软件,根据关键词查找想要的信息 N0.2 推荐:查最后10000行匹配关键词的上下10行 eg:tail -n 行数 文件 |grep 关键词 -C 关键词上下行数 tail -n 10000 XXX.log|grep 客户号 -C 10 适合场景:相对灵活,可以调整行数 N0.3 推荐:查实时日志 eg: tail -200f XXX.log 适用场景:比如点击页面,有明显的异常,适合实时定位缺陷 2、关键词的选择 开发给的关键词>流水号>案件号>客户号>ERROR 开发给的关键词 开发在写接口时,通常会捕获异常打印日志。在测某个特定的接口时,我们可以根据开发写的日志来查。 模块id(案件号) 比如我们要测订单模块,那么肯定有订单id,我们可以根据订单id这个关键词去搜索 客户号 大部分表都通过该客户号进行关联,我们可以根据客户号查出大部分异常情况 ERROR 为什么最后才推荐ERROR? 首先一个测试环境通常有多人在操作,测试环境又相当不稳定,ERROR的情况可能比较多,但是大多ERROR并不影响你测的模块。其次,并不是一定要报ERROR才是bug,wanning和info也可能会是bug的。 3、怎么看日志 关键词>中文>ERROR>具体信息 关键词 首先看关键词,因为关键词相关的错误信息,才会与你负责的模块相关。否则你可能分析了半天,结果和你负责的模块没有任何关系。 中文 为什么看中文?首先中文很显眼,其次中文日志是开发捕获异常写的,简单明了,往往开发的一句中文你就能定位到原因 ERROR ERROR已经是高级别的错误,出现ERROR又与你负责的模块相关,那基本八九不离十了 具体信息 定位大概方向,我们还需要看看具体里面的逻辑,一方面确定原因,另一方面养成看日志的好习惯

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值