编程相关:
日志到底需要几个级别呢?
首先为什么需要日志,日志用来做什么? 用户是不会关系日志的,所以日志是写给我们程序员来定位问题和故障的。从功能上简单的将日志也许只要一个级别就够了那就是出错的地方打上ERR的日志,但是很多时候也许没有预料到这个错误也许程序设计的流程有问题并不能显示这个错误日志我们就希望知道现在程序运行到哪里了既然没到我的错误分支那么是否到了我的正确分支呢,如果到了又到哪里了呢?这就需要我们再加一种日志这种日志我们叫做Trace,既在正常的函数入口出口或重要的分支流程打上日志。因为日志会影响程序的性能所以我们可以给日志加上开关,可以用111111这样的值来打开某个或某几个流程的Trace。Trace打开后因为要经常运行一般设计成内存日志,错误日志比较重要而且一般需要保存来定位所以一般做成文件日志。
如何一次性定位错误
做开发的朋友经常有这样一个体会,遇到错误或者故障时简单的查找下以为找到了原因或者事实上你已经找到了原因,很快的修改了一下就着急着编译运行验证结果很多时候的验证结果是没有该对或者没有改全或者自己的修改又引发了新的问题。为什么?我把这个归结与程序员的惰性或人的惰性大部分人在面对问题都想着尽快解决后者避免这个问题都不愿长时间面对问题的困扰或者压力尽快有时候这个困扰和压力不算很大但是正是这个心理会督促着你尽快的解决问题但也这个尽快往往也会让你草草了事不做深究。然而百千次的经验证明越是这样越是会浪费时间很少有人能随便看一眼就能一次性很好很根本的解决问题的。当然如果在编译成本和运行成本很低的情况下我们也许不会计较这个问题。但是如果你每修改一行代码需要编译半个小时乃至几个小时呢如果程序运行起来需要好几分钟呢 一次次的错误让你耽误了时间也造成你的低效更会养成这样随随便便的习惯性惰性。 所以当问题出现时应该分析多种可能性如果你不熟悉或不确定这样可能性的话就在多个可能运行到的地方重要的分支流程都加上定位信息或者在搞清楚问题的大概前不要随便加定位日志运行。否则就会陷入一次定位不了问题再加日志还是定位不了的泥潭中。你每次定位个问题都花大半天在领导眼中就是能力差的表现。个人发展说你的工作时间大部分都会让添加定位信息、编译、验证这些无聊的等待占据,那样你会厌倦而且你的学习时间也会变少,对个人提升更没有好处。
总之,不要把一切错误都归结到马虎和粗心上,因为这恰恰也从一个层面反映了你的能力。(这句话不是我说的,谁说的?总之是一个牛人说的)。
细心与坚持总是给迷茫无助中的你指向柳暗花明
有时候面对很多问题以自己当前的知识结构和经验确实很难解决,当你想到解决不了或者放弃的时候,如果你坚持下来或者你迫于某种压力坚持下来经验证明总能解决。你解决不了因为你缺乏经验你的知识结构有限或者你没有发现,对于前两者你不断探索尝试的话这个问题涉及的东西毕竟有限总会被你解决如果是后者那么细心会给你指引方向。比如在定位某此传输层无法收到IP上送的报文的时候开始时怀疑回调函数被覆盖反复查找找不到哪里覆盖,但是忽略了注册失败的情况,走查代码分配成功就真的注册成功了吗? 如果注册失败了会注册失败吗?后来证明不会,正是被自己忽略的地方。代码运行过去了不代表运行过的功能都正确了,也许是有错误但是没有返回。
另外请不会怀疑日志有问题,因为很少有这种情况,如果你认为该打的日志没打印出来,哪么 请不要怀疑日志有问题,你最先考虑的应该是代码没运行到这里。 这种情况下日志自身的问题不到1%,如果你因为这样重新做版本哪么时间就白白浪费了而且你也错过了发现问题所在的机会。