2010-04-10 104 views

回答

43

您只需使用logging module方法,並且DjDT將攔截並將其顯示在「記錄面板」中。

import logging 

logging.debug('Debug Message') 

if some_error: 
    logging.error('Error Message') 
8

通常不推薦直接記錄到根記錄器,如@ jonwd7所述。一般來說,我遵循以下模式:

import logging 
logger = logging.getLogger(__name__) 
del logging # To prevent accidentally using it 

... 

logger.debug("Some message") 

這使您可以更好地控制哪些日誌消息執行和不顯示。不幸的是,以這種方式使用它會阻止django調試工具欄捕獲任何日誌消息,除非您指定特定的日誌記錄配置。這裏有一個最簡單的我能想出:所以你不會禁用處理程序連接到根記錄器工具欄

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'incremental': True, 
    'root': { 
     'level': 'DEBUG', 
    }, 
} 

設置「增量」和「disable_existing_loggers」都是重要的。你想要做的就是將根記錄器的日誌級別設置爲「DEBUG」。您還可以使用「記錄器」條目爲特定記錄器設置級別。只需省略「處理程序」部分,並設置「傳播」:True,以便它們被DjDT處理程序捕獲。

+1

感謝您對根記錄器進行詳細說明。這是其他答案缺乏的信息。 – jnns 2016-08-15 09:13:59

+1

設置部分幫助我,謝謝! 2016年仍然很好的建議 – Jeff 2016-08-26 23:15:24

0

如果您有一個現有的LOGGING配置字典,並且您不想通過切換到「增量」來搞亂它,那麼您需要重新添加DjDT日誌作爲處理程序,然後將其添加到根記錄器的處理程序列表。

from debug_toolbar.panels.logging import collector # needed for handler constructor below 
LOGGING = { 
    # existing options, formatters, loggers, etc 
    handlers = { 
     # existing handlers 
     'djdt_log': { 
      'level': 'DEBUG', 
      'class': 'debug_toolbar.panels.logging.ThreadTrackingHandler', 
      'collector': collector, 
     }, 
    }, 
    'root': { 
     'level': 'DEBUG', 
     'handlers': ['djdt_log'], 
    }, 
} 

如果有更乾淨的方法可以做到這一點,我很樂意看到它。