2010-09-10 172 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