picologging
警告 本项目处于测试阶段。 有一些功能尚未完成(参见局限性)。
Picologging是一个高性能的Python日志库。它比标准库中的logging
模块快4-17倍。
Picologging旨在作为已使用logging的应用程序的即插即用替代品,并支持与logging
模块相同的API。
查看文档了解更多信息。
安装
可以使用pip从PyPi安装Picologging:
pip install picologging
或使用conda从conda forge安装:
conda install -c conda-forge picologging
使用方法
导入picologging as logging
以使用picologging替代标准库的logging模块。
这会将所有注册的日志记录器修改为使用picologging的日志记录器和格式化器。
import picologging as logging
logging.basicConfig()
logger = logging.getLogger()
logger.info("一条日志消息!")
logger.warning("带有%s的日志消息", "参数")
基准测试
使用richbench CLI运行richbench benchmarks/ --markdown
查看基准测试结果,以下是macOS 11上的示例:
基准测试 | 最小值 | 最大值 | 平均值 | 最小值 (+) | 最大值 (+) | 平均值 (+) |
---|---|---|---|---|---|---|
Logger(level=DEBUG).debug() | 0.569 | 0.600 | 0.578 | 0.031 (18.3x) | 0.035 (17.0x) | 0.033 (17.7x) |
Logger(level=DEBUG).debug() with args | 0.591 | 0.607 | 0.601 | 0.047 (12.5x) | 0.050 (12.2x) | 0.048 (12.4x) |
Logger(level=INFO).debug() | 0.013 | 0.014 | 0.013 | 0.003 (5.0x) | 0.003 (4.4x) | 0.003 (4.8x) |
Logger(level=INFO).debug() with args | 0.013 | 0.014 | 0.013 | 0.003 (4.6x) | 0.003 (4.2x) | 0.003 (4.4x) |
局限性
参见局限性
贡献
本项目欢迎贡献和建议。大多数贡献都要求您同意贡献者许可协议(CLA),声明您有权并确实授予我们使用您贡献的权利。有关详细信息,请访问cla.opensource.microsoft.com。
当您提交拉取请求时,CLA机器人会自动确定您是否需要提供CLA,并适当地修饰PR(例如,状态检查、评论)。只需按照机器人提供的说明操作即可。您只需在所有使用我们CLA的仓库中执行一次此操作。
本项目已采用Microsoft开源行为准则。 有关更多信息,请参阅行为准则常见问题解答或联系opencode@microsoft.com获取任何其他问题或意见。
本地开发
本项目附带了一个开发容器,可以设置适当的环境。如果您安装了VS Code的Dev Containers扩展,那么在VS Code中打开此项目时应提示在开发容器中打开它。
在开发容器中打开后,运行:
pip install -e ".[dev]"
pre-commit install
python setup.py build_ext --inplace --build-type Debug
每当您对文件进行更改时,都要运行构建命令。
创建一个如下所示的.vscode/launch.json
文件也很有帮助:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch pytest",
"type": "cppdbg",
"request": "launch",
"program": "/usr/local/bin/python",
"args": ["-m", "pytest", "tests"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
},
]
}
}
现在您可以按"运行和调试"按钮从gdb
调试器运行pytest
,并在C代码中使用断点调试。
如果您希望在调试时能够深入研究CPython代码,那么:
-
将开发容器Python版本的标记分支git checkout到开发容器的
/workspaces/
目录。您可能需要使用sudo
。 -
按照CPython README中的说明编译代码。
-
将以下键添加到
launch.json
中的配置:"sourceFileMap": { "/usr/src/python": "/workspaces/cpython" },
-
将以下命令添加到
launch.json
中的setupCommands
:{ "description": "Find CPython source code", "text": "-gdb-set auto-load safe-path /workspaces/cpython" },
商标
出于兼容性原因,此Python包的某些组件来自CPython 3.11日志库。
CPython 3.11根据PSF许可证授权。 logging模块的版权所有(C)2001-2019 Vinay Sajip。保留所有权利。
本项目可能包含项目、产品或服务的商标或标志。Microsoft商标或标志的授权使用必须遵循Microsoft的商标和品牌指南。 在本项目的修改版本中使用Microsoft商标或标志不得引起混淆或暗示Microsoft赞助。 任何第三方商标或标志的使用都受限于这些第三方的政策。