日志规范
前言
xxx代码规范 比较多,但是xxx日志规范比较少,现在构思一下,打个草稿。
博客转发请注明来源![By Dengleileicn]
一、日志内容规范
我把日志内容分为业务和事件两大类,这两大类可以相互嵌套。
1.根据业务分类
- 运行环境日志。 比如机器型号,版本,驱动版本,期间类型等等。
- 运行系统监控日志。系统运行状态自检日志,电源状态,开关机事件,进程运行状态等等。
- 程序A功能日志
- 程序B功能日志
- …
2.根据事件分类
- 程序保活事件。让别人知道你这个进程或者线程活着的日志,一般都是定时输出的比较大的日志。
- 程序定时事件。与保活事件不同,定时事件的目的在于检测任务。
- 系统触发事件。系统在某个条件下自动运行的事件,比如检测到电源不足,自我降频等等,属于系统行为的事件。
- 用户触发事件。用户使用某个功能产生的事件,比如在网页中输入网址,主动下载了某文件等等。
二、日志性质分类
就是常见的error、warn、info、debug、trace等等。此处继续进一步划分,以规定关键字。
1. error等级
- 一般错误。不影响功能和可以继续运行的错误,不影响使用。关键字定义:Error。
- 功能错误。影响功能使用的错误,比如用户想使用上网,但是网络断开,connect错误。关键字定义:Fail。
- 致命错误。系统环境出问题,或者程序有bug的错误。比如用户想打开窗口,结果窗口打开返回错误。关键字定义:Fatal Fail。
2. trace等级
一般用户常规内容输出,用于程序员debug 进程运行到哪一步。
3.debug、trace、… 等级
一般用于内部测试debug版本,越往下,日志内容输出更加详细。
4.warn、info 等级
商用稳定版本输出日志有限,通过warn得知程序哪些重要的事情发生。而info则作为程序正常运行的过程输出。
三、汇总分析日志
为了方便快捷的找出问题所在,一般要输出汇总分析日志。
- report日志。快捷的看出当前使用报告,使用次数,fail次数,xx时间消耗等等。
- fail 日志。把所有出现的功能错误或者致命错误输出,让分析人员一言知道问题所在。
- csv日志。有的问题需要综合图形分析,比如某个参数的区间分别,时间分布等等。有了数据就可以大数据分析。CPK 是一个常用的指标,计算公式基于正态分布。
四、简单明了关键字
对变量和函数命名很重要,在此整理了一下:
1.带动作特性的
- Set/Get
- Request/Response/req/resp
- Event/Process/
- Dispatcher/Handler/Action
- add/remove/rm/del
- enable/disable
- read/write
- save/put/push/merge
- send/recv
- create/start/run/go/complete/finish/over/
- update/fresh/
- insert/break/interrupt
- init/initial/load/
- open/close/new/free
- loop/cycle
- watch/listen
- by/for/from
- format/pattern/filter/check
- hold/wait/sleep/suspend/silent/
- lock/block
- access/enter
2.参数属性的
- result/res/ret
- num/count/size/i/index
- ready/flag
- info/buf/data
- value/status/tmp
- env/environment/conf/config/cfg
- pre/next/last
- content/body/head
- level/step
- active/live/work/fine
- ok/pass/normal
- fail/error/NG
3 模块的
- module/struct/
- object/chain
4 带层级属性的
- master/root/node/element
- father/parent/child
- stream/member/group/page/
5 其他
- expect/but/
- try/again