如何在python日志记录模块中获取当前日志级别

哇哇哇

我正在尝试创建一个基本的记录器,该记录器无需外部包装即可着色,

# these have to be the first functions so I can use it in the logger settings
def create_log_name(log_path="{}/log", filename="zeus-log-{}.log"):
    if not os.path.exists(log_path.format(os.getcwd())):
        os.mkdir(log_path.format(os.getcwd()))
    find_file_amount = len(os.listdir(log_path.format(os.getcwd())))
    full_log_path = "{}/{}".format(log_path.format(os.getcwd()), filename.format(find_file_amount + 1))
    return full_log_path


def set_color_value(levelname):
    log_set = {
        "INFO": "\033[92m{}\033[0m",
        "WARNING": "\033[93m{}\033[0m",
        "DEBUG": "\033[94m{}\033[0m",
        "ERROR": "\033[91m{}\033[0m",
        "CRITICAL": "\033[91m{}\033[0m"
    }
    return log_set[levelname].format(levelname)

logger = logging.getLogger("zeus-log")
logger.setLevel(logging.DEBUG)
file_handler = logging.FileHandler(
    filename=create_log_name(), mode="a+"
)
file_handler.setLevel(logging.DEBUG)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
file_format = logging.Formatter(
    '%(asctime)s;%(name)s;%(levelname)s;%(message)s'
)
console_format = logging.Formatter(
    "[%(asctime)s {}] %(message)s".format(set_color_value()), "%H:%M:%S"
)
file_handler.setFormatter(file_format)
console_handler.setFormatter(console_format)
logger.addHandler(console_handler)
logger.addHandler(file_handler)

因此,到目前为止,我需要做的就是获取将在中设置的当前日志级别,并将其logging.Formatter发送到我的小功能:

console_format = logging.Formatter(
    "[%(asctime)s {}] %(message)s".format(set_color_value()), "%H:%M:%S"
)

是否可以从日志记录包中获取当前日志级别?


例如,可以说我通过了,logger.INFO("test")我需要一种INFO从字符串中set_color_value("INFO")返回部分的方式来返回该部分

在此处输入图片说明

哇哇哇

我决定以其他方式执行此操作,并在字符串本身中添加带有级别编号的颜色:

def set_color(org_string, level=None):
    color_levels = {
        10: "\033[36m{}\033[0m",       # DEBUG
        20: "\033[32m{}\033[0m",       # INFO
        30: "\033[33m{}\033[0m",       # WARNING
        40: "\033[31m{}\033[0m",       # ERROR
        50: "\033[7;31;31m{}\033[0m"   # FATAL/CRITICAL/EXCEPTION
    }
    if level is None:
        return color_levels[20].format(org_string)
    else:
        return color_levels[int(level)].format(org_string)

因此,例如:

logger.info(set_color("test"))
logger.debug(set_color("test", level=10))
logger.warning(set_color("test", level=30))
logger.error(set_color("test", level=40))
logger.fatal(set_color("test", level=50))

将输出:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何打印python日志记录模块使用的当前日志记录配置?

检查plpgsql中的当前日志记录级别

如何在python日志记录模块中指定级别?

如何仅在Python中设置模块的日志记录级别?

如何在Sentry Python SDK中定义日志记录级别

如何在Python的日志记录工具中添加自定义日志级别

如何覆盖Python模块的默认日志记录级别?

如何在python中设置日志级别?

在python中获取日志级别

如何在golang中实现基于级别的日志记录?

如何在JHipster中更改休眠日志记录级别?

如何在Quarkus中设置日志记录级别?

如何在双绞线中设置日志记录级别?

如何在流明中配置日志记录级别

如何在Elasticsearch中设置日志记录级别?

如何在Python的单元测试中设置日志记录级别

即使设置了级别,Python日志记录模块也不记录信息

在python中配置日志记录级别

在Python中获取日志记录

Python日志-如何动态控制日志记录级别

如何从多个模块进行日志记录python日志记录

使用Python中的日志记录模块进行颜色日志记录

如何在Python中初始化模块时启用日志记录?

Python 中的日志记录模块如何管理保存文件

我如何在python中收集警告级别的日志?

如何在Rails中拆分日志记录?(某些级别为标准输出,某些级别为stderr)

跨模块以相同的日志记录级别进行日志记录

如何调试python日志记录模块?

如何从Python日志记录模块写入Kafka?