2010-09-10 143 views
4

我试图根据它的类来重新设置发送到记录器的输出数据的格式。Python日志记录对象

例如:

    ,因为它们是
  • 字典
  • 串将被打印/列表会自动缩进/美化成html
  • 我的自定义类将在个人基础上进行处理,并转换为html

我的问题是发送到格式器的消息始终是一个字符串。该文档特别指出,您可以将对象作为消息发送,但它似乎将对象转换为字符串,然后才能格式化它们。

class MyFormatter(logging.Formatter): 

    def format(self, record): 
     #The problem is that record.message is already a string... 
     ... 

我在哪里可以处理作为消息发送的对象?

回答

0

也许在您记录的对象的__str__()方法中?

4

好吧,我已经想通了。

在官方文档的文档是有点不清楚,但基本上,有两个属性

LogRecord.message - >消息本身 - >消息 和 LogRecord.msg的字符串表示。

要获取实际的对象,必须引用.msg才能使其工作。

我希望这对其他人有用。

+0

LogRecord不应该包含.message,除非它已被默认格式化程序(或添加.message的costum格式化程序)格式化。也许你有一个多处理程序,或者你从你的派生函数调用Formatter.format(record),这应该是不必要的? – 2010-09-10 21:48:01

+0

你是对的。我没有明确地调用父类的格式(),但是,我没有覆盖默认的__init__,所以我怀疑这与它有关。 – 2010-09-11 08:58:53