跳转到主要内容

为Python优化的、有观点的结构化日志记录库

项目描述

containerlog

containerlog是一个轻量级、优化且具有观点的结构化日志记录库,专为容器化应用程序设计。

containerlog诞生于希望为容器化应用程序(例如微服务)提供高质量的日志记录,而不必牺牲详细日志记录以换取应用程序/请求延迟。

structlog是一个优秀的Python通用结构化日志记录库,但通用性意味着在记录消息时会有额外的开销。

当我们更新一个微服务以使用结构化日志时,我们发现我们的请求延迟上升了,这似乎是因为过渡到了使用structlog

containerlog并非适合所有人。它高度具有主观性,配置最少,并且故意减少功能,以便能够比Python标准日志记录器实现更好的性能

并非每个应用程序都需要优化的日志记录,但在延迟和性能至关重要的地方,containerlog可能适合您。

timestamp='2020-07-23T13:11:28.009804Z' logger='my-logger' level='debug' event='loading configuration' path='./config.yaml'
timestamp='2020-07-23T13:11:28.010137Z' logger='my-logger' level='info' event='starting application'
timestamp='2020-07-23T13:11:28.010158Z' logger='my-logger' level='warn' event='having too much fun' countdown=[3, 2, 1]

安装

可以使用pip安装containerlog

pip install containerlog

它仅适用于Python 3.6+。

用法

请参阅https://containerlog.readthedocs.io/en/latest/上的文档

优化

在Python中有许多资源讨论了微优化。该项目可能并没有实现所有这些,因此还有改进的空间。当前的优化工作已经利用了以下内容:

  • dis:用于分析Python字节码
  • timeit:用于测量代码片段的执行时间

如果您希望贡献优化并使用其他库、工具或资源,请提交PR以将它们添加到此列表中。

基准测试

基准测试脚本可以在benchmarks目录中找到。要运行:

$ cd benchmarks
$ ./run.sh

这将运行Python标准日志记录器和containerlog的基准测试。最新结果如下。

结果

基准测试是在Python 3.8.0上,使用macOS 10.15.1,2.9 GHz 6核Intel Core i9处理器和16 GB 2400 MHz DDR4内存的情况下进行的。

containerlog 0.3.0

基准测试 std logger (ns) std proxy (ns) containerlog (ns)
基准线 0.68 +/- 0.02 0.69 +/- 0.01 0.7 +/- 0.02
静默 108.0 +/- 6.0 1140.0 +/- 50.0 51.7 +/- 1.7
基本 4750.0 +/- 160.0 1140.0 +/- 60.0 1070.0 +/- 50.0
短-简单 5370.0 +/- 160.0 1280.0 +/- 60.0 1330.0 +/- 60.0
长-简单 5280.0 +/- 180.0 1480.0 +/- 70.0 2120.0 +/- 60.0
短-复杂 5630.0 +/- 170.0 1500.0 +/- 150.0 1480.0 +/- 80.0
长-复杂 6900.0 +/- 190.0 2870.0 +/- 80.0 3260.0 +/- 80.0
异常 10400.0 +/- 300.0 4440.0 +/- 150.0 4370.0 +/- 500.0

贡献

虽然containerlog故意减少了功能,但我们欢迎功能请求。此外,如果您能找到其他微优化代码库的方法,非常欢迎提交PR。

项目详情


下载文件

下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

containerlog-0.4.2.tar.gz (24.3 kB 查看哈希值)

上传时间:

构建分布

containerlog-0.4.2-py3-none-any.whl (24.3 kB 查看哈希值)

上传时间: Python 3

由以下机构支持