【问题标题】:How to set Logging Level from getLogger instance如何从 getLogger 实例设置日志记录级别
【发布时间】:2022-08-16 22:24:27
【问题描述】:

蟒蛇3.6

如何设置日志记录级别

我想使用以下代码运行实例化日志类

import logging
from sys import stdout
from logging import DEBUG, INFO, WARNING, ERROR, CRITICAL, StreamHandler

logger = logging.getLogger(__name__)
logging_level = \"DEBUG\"
valid_logging_levels = [\"DEBUG\", \"INFO\", \"WARNING\", \"ERROR\", \"CRITICAL\"]
if logging_level not in valid_logging_levels:
    raise ValueError(f\"Logging level must be one of the following: {valid_logging_levels}\")

目前我正在使用这种语法来设置日志记录级别,但它真的很长

sys_out = StreamHandler(stdout)
if not [isinstance(handler, StreamHandler) for handler in logger.handlers]:
    logger.addHandler(sys_out)
if logging_level == \"DEBUG\":
    logger.setLevel(DEBUG)
elif logging_level == \"INFO\":
     logger.setLevel(INFO)
elif logging_level == \"WARNING\":
    logger.setLevel(WARNING)
elif logging_level == \"ERROR\":
    logger.setLevel(ERROR)
elif logging_level == \"CRITICAL\":
    logger.setLevel(CRITICAL)

然而,这真的很长。我想我可以像下面这样缩短它

log_level = logger.getLevelName(logging_level) 
logger.setLevel(log_level)

但是,当我运行它时,我收到错误消息\'Logger\' object has no attribute \'getLevelName\' 是否有更好的方法来设置自定义日志记录级别?

提前致谢!

  • 您也可以使用dict

标签: python python-logging


【解决方案1】:
log_levels = {
 'DEBUG': DEBUG,
 'INFO' : INFO,
 'WARNING':WARNING,
 'ERROR': ERROR,
 'CRITICAL':CRITICAL
}

然后你可以这样做

logger.setLevel(log_levels.get(logging_level))

【讨论】:

    猜你喜欢
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多