摘要
对于工程师而言懂得记录合理正确的日志是件很艰巨的任务。日志是记录必要的信 息和数据,方便问题定位和追踪,给我们足够的依据解释和发现问题,以及帮我们清晰 反映出应用的运行状况,这或许能够决定一个工程师是升职还是被开除。记录日志也是 有一定原则或是技巧的,并不是把所有内容有加以记录就可以了,一是可能收到运维工 程师的抗议;二是记录过多内容反而不容易查找关键信息,说来我们的日志记录的简单 可依赖即可,简单可以依赖的关键性数据。
一.日志要分级
日志一定要分级。多个级别的日志等级TRACE、DEBUG、INFO、NOTICE、 WARNING、ERROR、FATAL等,不同级别的日志应当分类处理,在大型应用的海量 日志面前不分级的日志处理起来非常麻烦,我们必须要对日志进行分级分类处理,清楚的明白哪些级别的日志需要时刻关注,影响到了应用的正常运行,有些日志只是帮我们在记录应用的运行状态。
二.日志记录必要的信息即可
日志记录必要的信息即可,无意义的信息必须要排除在日志之外,开发工程师作为对程序最了解的人如果在记录含糊不清的日志只会增加我们查询关键信息的困难,且过多的内容记录也会招致运维工程师的反感和增加应用运行的成本,我们要明白当应用出现问题的时候日志是你唯一可以依赖的,请让保存记录最关键的信息。
三.日志要让其他人也能看懂
为什么要记录日志,是因为有一天我们要去读他,而读他日志的不一定是谁,有一定加密属性的日志读起来总会给我们带来很大困惑,请善待日志的读者,因为每个人都会是日志的读者。
1.排版整洁有序,格式统一规范。随笔式的日志看起来会很麻烦,给日志读者增加很多困难。
2.采用关键字来突出显示如:时间、操作名称等,让读者能够轻松通过关键字来精确定位日志内容。
四.关于程序中加入日志的方法
千万不要自己写个记录日志的方法!千万不要自己写个记录日志的方法!千万不要自己写个记录日志的方法!重要的事情说三遍,绝对不要这么做,即便是用打印输入或者是自己 写入到日志文件中,第一个这么做的朋友也会影响其他同事——首先,这会让你的代码不那么美;其次也会给你的运维工程师带来很大麻烦。每个人都自己写个日志会很容易造成日志 个格式不统一,这会给日志的收集分类带来很大麻烦,PHP有不少第三方的log类库弥补了上述缺陷,如log4php、plog、Analog等还有内置error_log、syslog函数功能强大且性能 极好,用Java开发也有很多选择,例如Log4j、SLF4J、和Logback等其他语言如Python、ruby也有相应的日志类库或是组件,请调用标准类库来完成日志记录。
五.日志要做到方便解析
日志记录下来一定要做到可以方便解析,因为有些时候需要做到报警或是数据提取,这 些功能往往是需要自动化实现的,如果没有一个方便解析的日志实现起来就增加了很多成本。如下,日志记录了时间、日志级别、脚本、IP地址,以及数据:
2015-12-15 12:00:00ERRORlist.php127.0.0.1PAGE=1&NUM=500 解析以上日志是不是需要正则表达式或是更麻烦的程序逻辑来处理?答案是肯定的,如果换一种方式,很可能需要很少的工作就能达到我想要的效果。如下:
2015-12-15 12:00:00||ERROR||list.php||127.0.0.1||{'PAGE':1,'NUM':500} 这样解析起来awk -F‘||’就可以轻松解决了。
总结
希望这篇文章对您在开发过程中记录日志有所帮助,如果有什么遗漏之处还望见谅。看了这篇文章之后发掘没有任何帮助,抱歉我概不负责。