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


Python logging.debug用法及代码示例


用法:

logging.debug(msg, *args, **kwargs)

在根记录器上记录级别为 DEBUG 的消息。 msg 是消息格式字符串,args 是使用字符串格式化运算符合并到msg 中的参数。 (请注意,这意味着您可以在格式字符串中使用关键字以及单个字典参数。)

kwargs 中有三个关键字参数被检查: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):

第三个可选关键字参数是extra可用于传递用于使用用户定义的属性为日志记录事件创建的LogRecord的__dict__的字典。然后可以根据您喜欢使用这些自定义属性。例如,它们可以合并到记录的消息中。例如:

FORMAT = '%(asctime)s %(clientip)-15s %(user)-8s %(message)s'
logging.basicConfig(format=FORMAT)
d = {'clientip': '192.168.0.1', 'user': 'fbloggs'}
logging.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添加了参数。

相关用法


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