为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中有许多资源讨论了微优化。该项目可能并没有实现所有这些,因此还有改进的空间。当前的优化工作已经利用了以下内容:
如果您希望贡献优化并使用其他库、工具或资源,请提交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内存的情况下进行的。
基准测试 | 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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bb18dbb6b7dd4dad6a51c307071d881f5dfc2470f1742e79fb18d749a325d671 |
|
MD5 | ce893fc357256aed0577c37ea8e20c19 |
|
BLAKE2b-256 | 6bad988d88e54ecb903e4e4e7fbc1c1a2b4eb5766ab08f61c0a4adec95185609 |
containerlog-0.4.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 71f3b29aff051bbf290aba10e1d19e08587b659ebef6581a709a66cc4322aa9a |
|
MD5 | 42be00b47a7ec96f00c2819b204d42a5 |
|
BLAKE2b-256 | 03906444eeb84930b76f7fb92425d80c27dc49ba325907345e7d34824e7a7787 |