日志是软件开发中一项非常重要的内容,它的作用是非常大的。我们会经常听到,‘出错了,怎么办呀?--看日志 看日志’,日志包含的运行中的蛛丝马迹,好的日志输出可以在出现问题的时候,快速帮助到我们。在软件开发过程中,我们要习惯搭建一个默认的日志子系统,开发调试过程中,我们或许有ide可以帮助我们,但是也有许多语言没有ide,只能靠print,在这个时候日志会更方便。日志的好处很多,但是怎样规划日志,怎样设定日志的level,在不同的语言开发中,有不同规则,但是总起来有下面几种:
Error
错误就是程序出错,需要特别的关注处理,错误也可能是外部的,大多数的异常都可以为错误。
Style:可以标记为红色
举例:
配置文件找不到 ×××.xml
异常 连接不到数据库
异常 处理数据时出错
Warning
警告它可能表示潜在的当前或未来问题(响应缓慢、连接中断、内存不足等),警告要引起注意。
Style:警告要引起关注,但是也可以忽略。一般可以用黄色字体来显示。
举例:
数据库连接关闭,会在2秒之后重新连接
找不到日志配置文件,使用默认配置文件
数据库连接超时
Info
信息是通知用户操作的变更或者状态,也可以是其它的运行数据,它是用户接触到的程序运行最详细的内容。也可以是只包含用户感兴趣的内容。
Style: 一般标记为白色
举例:
初始化信息
加载数据信息
连接建立信息
Debug
调试一般是开发人员能看到的信息输出
调试一般是程序中需要跟踪的数据,它是开发者所关心的,有助于观测程序运行的状态和数据,一般在部署之后就会关闭。
Style:终端默认的颜色
举例:
读出的配置文件信息
发送的信息
测试的数据等
Fatal
发生致命的错误,程序退出。
致命的错误,顾名思义,表明一种情况下,它是不可能继续运行程序。正是因为这个原因,他们拥有自己的级别没有多大意义,你每次调用只能看到一个级别。
Style:可以使用跟Error类似的红色,强调错误的严重性。
举例:
内存溢出
硬盘已满
License过期等。
我们现在经常用的logging api有很多,他们也都有自己的日志内建的level,大家可以参考
- Linux'sprintk
- Python'slogging
- Java'sjava.util.logging.Levelor log4j'sorg.apache.log4j.Level
- Javascript's various console.levelcalls (WHATWG'sorNode.js'Console API specs)
- NLog'slog levels