日志级别WARN,ERROR和FATAL非常清楚.但什么时候是DEBUG,什么时候是INFO?
我已经看到一些在INFO级别上令人烦恼的项目,但我也看到了过多地支持DEBUG级别的代码.在这两种情况下,有用的信息都隐藏在噪音中.
确定日志级别的标准是什么?
我认为没有任何硬性规则; 使用log4j类型级别,我的"经验法则"类似于:
致命:应用程序(或至少是一个线程)即将死亡.这是解释为什么会发生这种情况的信息.
错误:应用程序正在做的事情,它不应该.这不是用户错误('无效的搜索查询'); 这是一个断言失败,网络问题等等,可能是一个将中止当前操作
警告:有关但不会导致操作中止的事情; 数据库池中的连接数变低,操作中出现异常但预期的超时等.我经常将"WARN"视为聚合中有用的东西; 例如grep,group,并计算它们以获得影响系统健康状况的图片
信息:正常日志记录,它是应用程序正常运行的一部分; 诊断的东西,所以你可以回去说'这种广泛的操作发生的频率是多少?',或'用户的数据是如何进入这种状态的?'
DEBUG:默认情况下关闭,可以打开以调试特定的意外问题.您可以在此处记录有关关键方法参数的详细信息或其他有助于在代码的特定"有问题"区域中查找可能问题的信息.
TRACE:"说真的,WTF正在这里?!?!我需要记录我执行的每一个语句,以便在我疯狂之前找到这个@#$ @ ing内存损坏错误"
不是一成不变的,而是对我如何看待它的粗略想法.
非正式地,我使用这种层次结构,
DEBUG - 实际跟踪值
信息 - 刚刚发生的事情 - 没什么重要的,只是一面旗帜
警告 - 一切正常,但事情并不像预期的那样
错误 - 发生了一些需要修复的事情,但我们可以继续进行其他(独立)活动
致命 - 一个严重的问题,我们甚至不应该继续
我通常会在INFO被记录的情况下发布,但前提是我知道日志文件实际已被审查(并且大小不是问题),否则就是WARN.
想想谁需要使用每个级别.在我的代码中,我保留DEBUG保留给开发人员输出,例如只能帮助开发人员的输出. 当需要大量信息时,VERBOSE用于普通用户. 信息我用来正常显示重大事件(例如发送网页,检查重要事项).
而且FAIL和WARN非常自我解释.