栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python3添加日志记录级别

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python3添加日志记录级别

从日志记录文档(添加了重点):

定义自己的级别 是可能的,但不是必须的 ,因为现有级别是根据实践经验选择的。但是,如果您确信需要自定义级别,则在执行此操作时应 格外
小心, 如果要开发库,定义自定义级别可能是一个非常糟糕的主意
。这是因为,如果多个库作者都定义了自己的自定义级别,则使用这样的多个库的日志输出可能对使用开发人员难以控制和/或解释,因为给定的数值可能意味着不同的含义用于不同的库。

默认日志记录级别概述:

但是,如果您仍然愿意,可以设置自己的日志级别:

logging
-module中,
_levelToName
并且
_nameToLevel
是日志记录名称和级别之间的映射。该
addLevelName()
函数无需手动添加到它们,而是为您执行此操作。

在这里,在日志级别 25中 添加了一个称为 MESSAGE 的新日志级别: __

import logging# Define MESSAGE log levelMESSAGE = 25# "Register" new loggin levellogging.addLevelName(MESSAGE, 'MESSAGE')  # addLevelName(25, 'MESSAGE')# Verifyassert logging.getLevelName(MESSAGE) == 'MESSAGE'

如果您不想创建自己的记录器类,但仍然希望记录其他日志级别,则可以

Logger.log(level, msg)
在传统记录器上使用-method:

logging.log(MESSAGE, 'This is a message')

编辑:直接添加消息

 def message(self, msg, *args, **kwargs):    if self.isEnabledFor(MESSAGE):        self._log(MESSAGE, msg, args, **kwargs)

使

message()
-function在
logging
以下位置可用:

 logging.message = message # or setattr(logging, 'message', message)

使

message()
-function在记录器中可用:

 logging.Logger.message = message # or setattr(logging.Logger, 'message', message)

制作自定义Logger类

你可以让自己的Logger类作

message(msg)
-方法,被用来相若方式的其他人(例如
info(msg)
warning(msg)
等)

在以下示例中,使用

message(msg)
-method制作了一个新的记录器来记录 MESSAGE

class MyLogger(logging.Logger):    def message(self, msg, *args, **kwargs):        if self.isEnabledFor(MESSAGE): self._log(MESSAGE, msg, args, **kwargs)

获取记录器

我不确定什么是使其最佳使用的最佳方法

logging.getLogger(name)
,但是下面是两种方法。参考 评论,我相信第一种方法更好:

要么 使新的记录器默认的日志记录类,这意味着新的记录情况将是的

MyLogger
类而不是默认的
logging.Logger
类:

logging.setLoggerClass(MyLogger)logger = logging.getLogger('A new logger name')logger.message('This seems to work')assert isInstance(logger, MyLogger)

或者 只是创建记录器的一个实例并将其添加到

loggerDict
活动
logging.Manager
实例中( EDIT
:不推荐,请参见注释):

my_logger = MyLogger('Foo')logging.Logger.manager.loggerDict['Foo'] = my_loggerlogger = logging.getLogger('Foo')logger.message('This is the same instance as my_logger')assert logger is my_logger

使用新的日志级别

# Use the new logger classlogger.warning('Custom log levels might be a bad idea')logger.message('Here is a message')# Log with custom log level:logger.log(MESSAGE, 'This is a message')

假定已将

MESSAGE
其预定义为代表对数级别的整数。(例如前面提到的 25



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626007.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号