日志应该怎么做
来源:互联网 发布:淘宝大学免费课程 编辑:程序博客网 时间:2024/06/10 01:15
程序中记录日志一般有两个目的:Troubleshooting和显示程序运行状态。好的日志记录方式可以提供我们足够多定位问题的依据。日志记录大家都会认为简单,但如何通过日志可以高效定位问题并不是简单的事情。这里列举下面三个方面的内容,辅以代码示例,总结如何写好日志,希望对他人有所启发和帮助:
- 怎样记日志可以方便Troubleshooting
- 程序运行状态可以记哪些
- 应该避免怎样的日志方式
怎样记日志可以方便Troubleshooting?
1. 对外部的调用封装
程序中对外部系统与模块的依赖调用前后都记下日志,方便接口调试。出问题时也可以很快理清是哪块的问题
2.状态变化
程序中重要的状态信息的变化应该记录下来,方便查问题时还原现场,推断程序运行过程
3.系统入口与出口:
这个粒度可以是重要方法级或模块级。记录它的输入与输出,方便定位
4.业务异常:
任何业务异常都应该记下来:
5.非预期执行:
为程序在“有可能”执行到的地方打印日志。如果我想删除一个文件,结果返回成功。但事实上,那个文件在你想删除之前就不存在了。最终结果是一致的,但程序得让我们知道这种情况,要查清为什么文件在删除之前就已经不存在
6.很少出现的else情况:
else可能吞掉你的请求,或是赋予难以理解的最终结果
程序运行状态可以记哪些?
程序在运行时就像一个机器人,我们可以从它的日志看出它正在做什么,是不是按预期的设计在做,所以这些正常的运行状态是要有的。
1. 程序运行时间:
2. 大批量数据的执行进度:
3.关键变量及正在做哪些重要的事情:
执行关键的逻辑,做IO操作等等
应该避免怎样的日志方式?
1. 混淆信息的Log
日志应该是清晰准确的: 当看到日志的时候,你知道是因为连接池取不到连接导致的问题么?
2. 记错位置
产品代码中,使用console记录日志,导致没有找到日志。
3. 记错级别
记错级别常常发生,常见的如:混淆代码错误和用户错误,如登录系统中,如果恶意登录,那系统内部会出现太多WARN,从而让管理员误以为是代码错误。可以反馈用户以错误,但是不要记录用户错误的行为,除非想达到控制的目的。
4. 遗漏信息
这里可能包含两种情况:(1)用户自己少写了信息,导致毫无参考价值;(2)用户调用log的方式导致丢失信息,如下例,没有stack trace.
- 日志应该怎么做
- 我们应该怎么做?
- 你应该怎么做
- 产品经理应该怎么做??
- 项目应该怎么来做?
- 大学应该怎么做cs
- SEO新手应该怎么做
- 游戏应该怎么做-美术
- 进入前二十应该怎么做?
- 性能测试应该怎么做?
- 新手入门SEO应该怎么做?
- 性能测试应该怎么做?
- 性能测试应该怎么做?
- 性能测试应该怎么做?
- 站外SEO应该怎么做?
- 站外SEO应该怎么做?
- 忘记root密码应该怎么做
- 男人应该怎么样,怎么做?才象个男人
- 日期增加一天之 Calendar的使用
- 使用Putty远程连接Linux系统遇到的问题及解决方式
- jzoj2574 统计方案
- 回谭嗣同诗
- 一、选择符的使用:
- 日志应该怎么做
- 堆排序详解
- JQ对象中的延迟对象deferred的详解
- 后缀数组以及利用后缀数组求取最长公共字串
- 浪淘沙
- C++中this指针的用法详解
- Java Socket是什么?
- 英才网编程
- poj 2251 Dungeon Master