规范日志来提升系统可维护性
来源:互联网 发布:miss外设店淘宝网 编辑:程序博客网 时间:2024/05/17 17:46
在系统中日志大体可以分为两类,一类是流水日志,另一类是错误日志,对于前一类由于在业务上会有需求,所以设计系统时一般都会考虑,但关于错误记录内容很多情况下都不会纳入设计范围,这样导致我们开发出来的系统可维护性很差,错误日志几乎没有参考价格,甚至误导维护人员。怎样才能输出良好的日志信息呢?我想可以从下面几点入手。
1.分清错误日志的级别
大家都知道错误日志是分级别的,下面是一些常见的分级与定义。
emerg
Emergencies - system is unusable."Child cannot open lock file. Exiting"alert
Action must be taken immediately."getpwuid: couldn't determine user name from uid"crit
Critical Conditions."socket: Failed to get a socket, exiting child"error
Error conditions."Premature end of script headers"warn
Warning conditions."child process 1234 did not exit, sending another SIGHUP"notice
Normal but significant condition."httpd: caught SIGBUS, attempting to dump core in ..."info
Informational."Server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers)..."debug
Debug-level messages"Opening config file ..."
设计这些日志级别是为了方便的对日志进行过滤,如在系统正常运转状态下一般会将日志级别设置为warn,这样当有错误日志时,维护人员会要去关注并分析原因,在查找具体问题时,可能要将日志级别调到debug,希望通过更多的输出信息来定位问题。基本上从debug到emerg日志量应该是递减的。我见过有个系统的日志只输出在debug级别,这样导致在系统运行时只能关闭日志,由于日志量输出太大,无法根据日志迅速判断问题,另一方面频繁的写磁盘也带来性能问题。
2.规范错误日志输出内容
在错误发生时,我们需要考虑输出什么内容,其实这个有个很简单的原则,那就是根据查看日志者的需求,查看日志主要是维护与开发人员,emerg,alert,crit,error,warn这些级别的主要查看者是维护人员,信息的内容要简明扼要,方便运维人员迅速判断并采取措施;notice,info,debug这些级别的主要查看者是开发人员,要提供足够详细且与系统实现逻辑相关的信息,开发人员可以依据来定位代码及数据问题。如果你将堆栈信息输出在crit级别就很不合适,因为这个是给开发人员看的。如果发生了一个warn级别的错误,建议在warn,notice,info,debug级各输出一条相应的信息。
- 规范日志来提升系统可维护性
- Android 命名规范 (提高代码可维护性)
- log4j日志异步化大幅提升系统
- 提高代码可维护性(2)---日志打印
- 提高代码可维护性(2)---日志打印
- 抽象提高可维护性,实例来证明(delphi)
- paip.提升效率--调试--日志系统日志参数含义---python
- 分布式系统的监控和可维护性
- 分布式系统的监控和可维护性
- 代码质量,代码规范,可维护性,可拓展性,高性能
- 通过log4j日志异步化大幅提升系统性能
- log4j日志异步化大幅提升系统性能
- log4j日志异步化大幅提升系统性能
- 使用log4net 来记录系统日志
- 日志规范
- 日志规范
- 日志规范
- 日志规范
- 开心每一天
- com.opensymphony.module.sitemesh.filter.pagefilter作用?
- 开心每一天
- Windows中Drag&Drop初探(一)
- thread agnostic I/O
- 规范日志来提升系统可维护性
- Windows中Drag&Drop初探(二)
- Python中使用Struct数据格式转换
- Flex 中嵌入整个网页 (以IFrame形式)
- D-Link DWL-G122 USB无线网卡驱动安装配置
- java 命名规范
- iconboy
- 视线语音鼠标 5 C#图像缩放
- 取得SD卡所有名称关键代码