跳转到主要内容

启用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,尽管有两个问题

  1. 您CLI的记录器很可能是"__main__"
  2. 这不支持通配符或使用层次结构。您需要指定实际的记录器名称。
--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 查看哈希值)

上传时间: Python 3

支持