当前位置: 首页 > 面试题库 >

如何在Python中临时更改记录消息的格式?

马冯浩
2023-03-14
问题内容

在Python中(通过日志记录模块)临时更改日志记录消息格式的最简单方法是什么?

目标是具有某种标准的消息格式,同时能够临时添加有关正在读取的某些文件的信息(如文件名);当不再读取文件时,消息格式应恢复为其默认值。产生该消息的程序
知道正在读取哪个文件,因此,如果其消息自动包含相关的文件名(错误消息将是:“ 读取文件 ***时出错:…”,而不是该消息),将是很好的选择。
“错误:…”)。


问题答案:

这是一个简单的解决方案,可以从Vinay Sajip自己的HOWTO中推论得出;它基本上使用以下命令更新日志记录格式化程序setFormatter()

import logging

logger = logging.getLogger()  # Logger
logger_handler = logging.StreamHandler()  # Handler for the logger
logger.addHandler(logger_handler)

# First, generic formatter:
logger_handler.setFormatter(logging.Formatter('%(message)s'))
logger.error('error message')  # Test

# New formatter for the handler:
logger_handler.setFormatter(logging.Formatter('PROCESSING FILE xxx - %(message)s'))
logger.error('error message')  # Test

正确地产生:

error message
PROCESSING FILE xxx - error message

xxx可以根据问题的要求动态地将其设置为正在处理的文件)。



 类似资料:
  • 在阅读了上的留档后,我知道我可以使用这样的代码来执行简单的日志记录: 然而,我意识到我不知道如何在每个记录器的基础上更改日志消息的格式,因为是一个模块级函数。此代码用于创建具有不同级别、名称等的不同记录器。但是有没有一种方法可以在每个记录器的基础上以类似于的方式更改这些日志消息的格式?

  • 问题内容: 我正在按照以下内容进行编写,其中在比较两个Unicode文本的多行块时,我试图产生一个不错的错误消息。进行比较的内部方法会引发一个断言,但是默认的解释对我没有用 我需要在代码中添加如下内容: 我无法弄清楚如何在我捕获的assertionerror中更改打印的错误消息。我总是得到,它仅显示输出的第一行。 如何更改断言消息以打印出我想要的任何内容? 如果相关的话,我正在运行测试。 问题答案

  • 问题内容: 在我的Python测试脚本中,我多次使用此模式: 有没有更简洁的方法来临时修改搜索路径? 问题答案: 您可以使用一个简单的上下文管理器: 然后要导入模块,您可以执行以下操作: 从语句主体退出时,将恢复到原始状态。如果仅使用该块中的模块,则可能还希望从以下位置删除其引用:

  • 我正在使用FluentD(v.12最后一个稳定版本)向Kafka发送消息。但是FluentD正在使用一个旧的KafkaProducer,所以记录时间戳总是设置为-1。因此,我必须使用WallclockTimestampExtrator将记录的时间戳设置为消息到达kafka时的时间点。 是否有特定于Kafka Streams的解决方案? 我真的感兴趣的时间戳,是由Fluentd在消息中发送的: “时

  • 这是我的超文本标记语言PHP表页面的完整代码...

  • 我使用的是Camel 2.9.2,完成路线定义如下: 中提供https://stackoverflow.com/questions/18877562/how-can-i-log-a-header-value-in-camel-using-spring-dsl解决方案由于某种原因对我不起作用。 我可以看到一些与路由定义相关的驼峰跟踪