簡體   English   中英

如何從 getLogger 實例設置日志記錄級別

[英]How to set Logging Level from getLogger instance

python 3.6

如何設置日志記錄級別

我想用以下代碼實例化一個日志記錄 class

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'有沒有更好的方法來設置自定義日志記錄級別?

提前致謝!

log_levels = {
 'DEBUG': DEBUG,
 'INFO' : INFO,
 'WARNING':WARNING,
 'ERROR': ERROR,
 'CRITICAL':CRITICAL
}

然后你可以這樣做

logger.setLevel(log_levels.get(logging_level))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM