如何写高效的日志文件[原创]

日志信息的作用是用于出错时候bug定位,以及监控程序执行状态
对于bug定位信息,应该至少提供以下信息:
1. 错误的提示信息:比如权限检查没有通过
2. 错误的来源:程序执行的文件和代码所在行
3. 错误的重现:将执行错误的script打印出来,因为如果只是提供了代码文件和出错行,如果要重现bug,还需要给变量赋予实际运行的值,而且很可能是因为变量的值比较特殊导致的bug,所以将整个出错的script打印到日志对于bug重现很有帮助,能够提供问题定位的效率。
4. 错误发生的时间
5. 如果使用了配置项,最好还能显示配置项信息,方便确认配置错误!
6. 建议日志中能够体现函数调用关系,例如mysql安装日志就很好的体现了函数调用关系
   实施方法:将函数调用层次关系通过格式化的方式体现出来,同时将函数名称放在中括号中,这样纪录函数的执行起始和结束
   [2008-12-02 12:23].............[init] start
   [2008-12-02 12:24]................[loadconf] start
   [2008-12-02 12:25]----------------[loadconf] end
   [2008-12-02 12:26]................[checkconf] start
   [2008-12-02 12:27]----------------[checkconf] end
   [2008-12-02 12:28]-------------[init] end
   [2008-12-02 12:28].............[exescript] start
   [2008-12-02 12:28]................[chmod 775 test.sh]
   [2008-12-02 12:28]-------------[exescript] end
7. 日志的纪录方式和纪录媒介最好可以定制,可使用Log4Net,Log4Perl,Log4Java等Log4日志组件
   可定制的日志纪录方式可以方便用户提取所关心的日志信息,如是否函数执行了init操作,init操作的执行时间多长,init操作是否正常结束等等。
   调用方式如下:
   WritteLog("error string");
   实现方式如下:
   function WritteLog($)
   {
       for func in $FuncHash{"WriteLog"}
       {
           eval(func(@_));
       }
   }
8. 日志可以很方便的查询和统计,辅助自动化测试的结果判定,这其实就是要求日志本身具有结构化,如apache日志等等;

posted on 2008-11-19 22:19  starspace  阅读(457)  评论(0编辑  收藏  举报

导航