1. 日志

1.1. 打印日志的目的

为什么要打印日志,或什么时候应该打印日志,这取决于打印目的。

不同的打印目的决定了日志输出的格式,输出的位置,输出的频率。

1. 调试开发 目的是开发调试程序时使用,只应出现在开发周期内,不应在线上系统输出。

2. 用户行为日志 记录用户操作行为,多用于大数据分析,如监控,风控,推荐等。

3. 程序运行日志 记录程序运行情况,特别是非预期的行为,异常情况。主要给开发,维护人员使用。

4. 记录系统或机器状态 如网络请求,系统CPU,内存,IO使用等,供运维人员使用。

1.2. 日志应包含什么

1.2.1. when

打印日志的时间戳,此时的时间应该是日志记录的事情发生的时间,而非日志最后被输出的时间。 具体的时间可以帮助我们分析事件发生的时间点,是否有固定的规律,以及事件顺序。

1.2.2. where

日志在哪里被记录的,具体哪个模块,哪个文件,哪个函数,哪一行代码。

1.2.3. how

事件的重要性。一般按CRITICAL > ERROR > WARNNING > INFO > DEBUG > TRACE来划分重要程度。

1.2.4. what

“是什么”是日志的主体,应简明扼要的描述发生了什么事情。例如:

logger.warn('Invalid request parameter')

1.2.5. who

事件生产者的唯一标识(identity), 可以是某个人,也可以是某个固定的动作的声明。

1.2.6. context: environment when event happens

日志记录的事件发生时上下文环境,遵循的原则:哪些信息能够快速定位问题

1.3. 常见错误情况与日志等级

服务器状态 状态码 日志级别 推送系统
请求成功 200、201、204 INFO ELK
请求参数错误 400 WARNING ELK
用户未登录 401 WARNING ELK
用户无权限 403 WARNING ELK
资源未找到 404 WARNING ELK
请求方法错误 405 WARNING ELK
资源冲突 409 WARNING ELK
请求参数解析错误 422 WARNING ELK
服务器内部错误 500 CRITICAL ELK\SENTRY
数据库操作错误 500 CRITICAL ELK\SENTRY
调用接口错误 500 ERROR ELK\SENTRY
CELERY内部错误 ERROR\CRITICAL ELK\SENTRY

results matching ""

    No results matching ""

    results matching ""

      No results matching ""