跳转到主要内容

Click的日志级别参数类型

项目描述

Project Status: Active — The project has reached a stable, usable state and is being actively developed. CI Status https://codecov.io/gh/jwodder/click-loglevel/branch/master/graph/badge.svg https://img.shields.io/pypi/pyversions/click-loglevel.svg Conda Version MIT License

GitHub | PyPI | 问题 | 变更日志

click-loglevel 提供了一个用于在允许用户设置日志级别的 Click 程序中的 LogLevel 参数类型。它接受所有 logging 日志级别的名称(CRITICALERRORWARNINGINFODEBUGNOTSET,不区分大小写),并将它们转换为相应的数值。它也接受整数值,并保留原值。还支持自定义日志级别。

从版本 0.4.0 开始,也支持对日志级别名称(内置和自定义)的shell自动完成。

安装

click-loglevel 需要 Python 3.7 或更高版本。只需使用 Python 3 的 pip 就可以安装它。

python3 -m pip install click-loglevel

示例

myscript.py:

import logging
import click
from click_loglevel import LogLevel


@click.command()
@click.option(
    "-l",
    "--log-level",
    type=LogLevel(),
    default="INFO",
    help="Set logging level",
    show_default=True,
)
def main(log_level: int) -> None:
    logging.basicConfig(
        format="[%(levelname)-8s] %(message)s",
        level=log_level,
    )
    logging.log(log_level, "Log level set to %r", log_level)


if __name__ == "__main__":
    main()

运行 myscript.py

$ python3 myscript.py
[INFO    ] Log level set to 20
$ python3 myscript.py --log-level DEBUG
[DEBUG   ] Log level set to 10
$ python3 myscript.py --log-level error
[ERROR   ] Log level set to 40
$ python3 myscript.py --log-level 15
[Level 15] Log level set to 15

具有自定义日志级别的脚本

import logging
import click
from click_loglevel import LogLevel


logging.addLevelName(15, "VERBOSE")
logging.addLevelName(25, "NOTICE")


@click.command()
@click.option(
    "-l",
    "--log-level",
    type=LogLevel(extra=["VERBOSE", "NOTICE"]),
    default="INFO",
    help="Set logging level",
    show_default=True,
)
def main(log_level: int) -> None:
    logging.basicConfig(
        format="[%(levelname)-8s] %(message)s",
        level=log_level,
    )
    logging.log(log_level, "Log level set to %r", log_level)


if __name__ == "__main__":
    main()

API

click_loglevel 模块包含一个类

LogLevel

这是 click.ParamType 的一个子类,它接受标准的日志级别名称(不区分大小写)并将它们转换为相应的数值。它也接受整数值并保留原值。

可以通过将它们作为构造函数的 extra 参数传递来添加自定义日志级别。 extra 可以是一个包含级别名称的可迭代对象(在这种情况下,级别必须已经通过调用 logging.addLevelName() 在模块级别定义),或者是一个从级别名称到其对应值的映射。所有自定义日志级别都将不区分大小写地识别;如果两个不同的级别名称只在大小写上不同,则结果未定义。

项目详情


下载文件

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

源分布

click-loglevel-0.5.0.tar.gz (7.6 kB 查看哈希)

上传时间

构建分布

click_loglevel-0.5.0-py3-none-any.whl (5.5 kB 查看哈希)

上传时间 Python 3

由以下支持