当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python logging.Logger.debug用法及代码示例


用法:

debug(msg, *args, **kwargs)

在此记录器上记录级别为 DEBUG 的消息。 msg 是消息格式字符串,args 是使用字符串格式化运算符合并到msg 中的参数。 (请注意,这意味着您可以在格式字符串中使用关键字以及单个字典参数。)当没有提供 args 时,不会对 msg 执行 % 格式化操作。

kwargs 中有四个关键字参数被检查:exc_infostack_infostacklevelextra

如果exc_info 未评估为假,则会将异常信息添加到日志消息中。如果提供了异常元组(以 sys.exc_info() 返回的格式)或异常实例,则使用它;否则,调用sys.exc_info() 获取异常信息。

第二个可选关键字参数是 stack_info ,默认为 False 。如果为 true,则将堆栈信息添加到日志消息中,包括实际的日志调用。请注意,这与通过指定 exc_info 显示的堆栈信息不同:前者是从堆栈底部到当前线程中的日志调用的堆栈帧,而后者是有关已被调用的堆栈帧的信息在搜索异常处理程序时,在异常之后展开。

您可以独立于 exc_info 指定 stack_info ,例如仅显示您如何在代码中到达某个点,即使没有引发异常。堆栈帧打印在标题行之后,标题行显示:

Stack (most recent call last):

这模仿了显示异常帧时使用的Traceback (most recent call last):

第三个可选关键字参数是 stacklevel ,默认为 1 。如果大于 1,则在计算为记录事件创建的 LogRecord 中设置的行号和函数名称时,会跳过相应的堆栈帧数。这可用于记录助手,以便记录的函数名、文件名和行号不是助手函数/方法的信息,而是其调用者的信息。此参数的名称反映了warnings 模块中的等效名称。

第四个关键字参数是extra,它可用于传递一个字典,该字典用于填充为具有用户定义属性的日志事件创建的LogRecord 的__dict__。然后可以随意使用这些自定义属性。例如,它们可以合并到记录的消息中。例如:

FORMAT = '%(asctime)s %(clientip)-15s %(user)-8s %(message)s'
logging.basicConfig(format=FORMAT)
d = {'clientip': '192.168.0.1', 'user': 'fbloggs'}
logger = logging.getLogger('tcpserver')
logger.warning('Protocol problem: %s', 'connection reset', extra=d)

会打印类似的东西

2006-02-08 22:20:02,165 192.168.0.1 fbloggs  Protocol problem: connection reset

extra 中传递的字典中的键不应与日志记录系统使用的键发生冲突。 (有关日志记录系统使用哪些 key 的更多信息,请参阅Formatter 文档。)

如果您选择在记录的消息中使用这些属性,则需要格外小心。例如,在上面的示例中,Formatter 已使用格式字符串设置,该格式字符串在 LogRecord 的属性字典中需要 ‘clientip’ and ‘user’。如果缺少这些,则不会记录该消息,因为会发生字符串格式异常。所以在这种情况下,您总是需要使用这些键传递extra 字典。

虽然这可能很烦人,但此函数旨在用于特殊情况,例如在许多上下文中执行相同代码的多线程服务器,并且出现的有趣条件取决于此上下文(例如远程客户端 IP 地址和经过身份验证的用户名,在上面的示例中)。在这种情况下,专门的 Formatter 可能会与特定的 Handler 一起使用。

在 3.2 版中更改: stack_info添加了参数。

在 3.5 版中更改: exc_info参数现在可以接受异常实例。

在 3.8 版中更改: stacklevel添加了参数。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 logging.Logger.debug。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。