启用glog风格的vmodule以支持Python的日志记录
项目描述
vmodule
这是一个小巧的项目,无需依赖项即可向stdlib日志添加额外级别,并且您可以从主程序运行它以处理特定记录器的详细程度。
这受到glog的启发,将VLOG(1)视为LOG(INFO)的一个更严格的版本。为了简单起见,我们将其映射到数值严重性。
以下是您可能如何使用此库的综合演示 -- 我们不依赖click
,但您当然可以
from logging import getLogger
from typing import Optional
import click
from vmodule import VLOG_1, VLOG_2, vmodule_init
LOG = getLogger(__name__)
@click.command()
@click.option("-v", type=int)
@click.option("--vmodule")
def main(v: Optional[int], vmodule: Optional[str]) -> None:
vmodule_init(v, vmodule)
LOG.warning("Warn")
LOG.info("Starting up")
LOG.log(VLOG_1, "Verbose %d", 1)
LOG.log(VLOG_2, "Verbose %d", 2)
LOG.debug("foo")
if __name__ == "__main__":
main()
如果您正在编写库,这甚至更容易
from logging import getLogger
from vmodule import VLOG_1
LOG = getLogger(__name__)
def foo(...):
LOG.info("Starting up")
LOG.log(VLOG_1, "Verbose %d", 1)
命令行解析
如果您使用上面的示例,
(unset) -> WARNING
-v 0 -> INFO
-v 1 -> VLOG_1
-v 2 -> VLOG_2
-v 3 -> VLOG_3
-v 10 -> DEBUG (by accident)
您也可以使用相同的数字指定--vmodule
,尽管有两个问题
- 您CLI的记录器很可能是
"__main__"
。 - 这不支持通配符或使用层次结构。您需要指定实际的记录器名称。
--vmodule filelock=10,concurrent.futures=0
sets filelock to DEBUG
sets concurrent.futures to INFO
版本兼容性
使用此库应适用于3.7及更高版本,但开发(以及mypy兼容性)仅限于3.10-3.12。要实现完全一致性,则需要3.12进行代码审查。
许可证
vmodule版权所有Tim Hatch,并采用MIT许可证。我在此存储库中向您提供代码,属于开源许可证。这是我的个人存储库;您收到的代码许可证来自我,而不是我的雇主。有关详细信息,请参阅LICENSE
文件。
项目详情
下载文件
下载适合您平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
vmodule-0.5.0.tar.gz (7.0 kB 查看哈希值)
构建版本
vmodule-0.5.0-py3-none-any.whl (5.7 kB 查看哈希值)
关闭
vmodule-0.5.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1d3c34d20ccfef5525d2fde0b2b40d7e19027e761ba2bff48afa9f390e0856ce |
|
MD5 | 9fd81e2d15e8336d2186dc060427b07a |
|
BLAKE2b-256 | 7b8440325a220dd817b019362f3c5bf71975e4418599c688b76ee7102d13e2fc |
关闭
vmodule-0.5.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 34b4c1f4f53bb16b95c0986740949ec0caf0732e0d3ed16f8563867b0b3d3b47 |
|
MD5 | c00be9bde913c6135afce8f4ebcf7705 |
|
BLAKE2b-256 | 4e69e984f70400b31b642aa632737da544237230b238b81e5ad9c55b177faf38 |