title: 日志 category: page slug: logging sortorder: 0714 toc: False sidebartitle: 日志 meta: 日志可将错误、警告以及事件输出保存到存储器中,方便后期调试。快来 Full Stack Python 学习更多有关日志的知识吧。 translators: blog.chriscabin.com updated: 2016-07-23 08:00

日志

日志将诸如错误、警告以及事件信息保存到永久存储器中,以便后期调试。

日志为何很重要?

将中断代码运行的异常信息通过日志输出是非常重要的,它可以用来观察并修复源码问题。 此外,信息日志和调试日志也可以帮助理解应用程序是如何执行的,即使代码能够正常工作。

日志等级

日志通常分为四类:

  1. 信息
  2. 调试
  3. 警告
  4. 错误

当 web 框架在运行时通过日志输出出错信息,对于理解你的应用是如何执行的是至关重要的。

日志聚合器

当你的应用运行在多个服务器上时,拥有一款叫做“日志聚合器”的工具是非常有帮助的。你可以配置你的应用程序将系统和应用日志重定向到一个地点,在那儿有很多工具用于查看、搜索以及监控你的集群服务器上的日志事件。

使用日志聚合器工具的另外一个优势是,它们允许你自定义设置警报,这样当错误率超出某个阈值时就能获得警报通知。

开源日志聚合器

  • Sentry 起初只提供 Django 异常处理服务,但现在拥有几乎所有主要编程语言和框架的对应日志客户端。它仍然可以和 Python 驱动的 web 应用工作的很好,并且通常用于和其它监控工具连接。Raven 是用于 Sentry 的开源 Python 客户端。

  • Graylog2 提供了一个用于日志聚合的中央服务器,以及一个用于浏览和搜索日志事件的图形化工具。它拥有针对大多数主要语言的库,包括 Python。它把数据保存在 Elasticache。

  • Logstash 与 Graylog2 类似,它提供一些通过编程控制日志数据流的特性。

  • Scribe 是一个由 Facebook 实现的日志聚合器项目。它旨在运行于多个服务器上,并能够根据你剩余的集群进行扩展。它使用 Thrift 消息格式,所以可以用于任何语言。

托管的日志服务

  • Loggly 是一个第三方基于云的日志聚合器应用。它们提供了针对每种主要语言的说明,包括 Python。它还在自定义搜索中提供了邮件警报的功能。

  • Splunk 用于事件聚集,提供了第三方云以及自定义托管的方案。它擅长于搜索以及对任何基于文本数据的数据挖掘。

  • Papertrail 和 Loggly 和 Splunk 都很像,它提供了集成到 S3 的功能,用于长期存储日志。

  • Raygun 用于输出错误日志,并且当问题发生时会及时报告。

  • Scalyr 在标准日志层面上添加了用户界面,提供了日志聚集、面板操作、警报以及搜索等功能。

  • 若是你没时间设置开源版本的 Sentry 的话,这儿有一个 托管版本的 Sentry

日志相关资源

日志学习清单

  1. 阅读材料学习如何在你的 web 应用框架中集成日志输出的功能。

  2. 确保错误和异常都被日志输出了。虽说这些日志可以采用 监视器 方案存储,但最好还是能拥有你自己的日志存储位置,这样便于在问题发生时调试,并且也能作为其它监视器系统的补充。

  3. 为你可能需要使用的系统事件集成日志输出功能以便后期调试。例如,当函数超出某个阈值时,你可能想知道它们的返回值。