我試圖建立一個記錄器將登錄到控制檯(我想這是因爲我使用的是Papertrails的Heroku(Heroku的日誌記錄插件)和東西寫到控制檯將在Papertrails顯示,使其過濾和一切好Papertrail功能)Django的登錄到控制檯
在設置我第一次嘗試以下操作:
LOGGING = {
'handlers' = {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'mysite.log',
'formatter': 'verbose'
},
'console':{
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
(...)
'loggers'={
(...)
'page_processors': {
'handlers': ['console','file'],
'level': 'DEBUG',
}
}
(...)
}
爲每Django的登錄頁面(對於那些誰不使用夾層,page_processors是當你打開一個頁面時,Mezzanine會運行什麼;你可以認爲它們就像Django的視圖一樣,但它們只能執行上下文,而不是渲染)。
在page_processors.py我
import logging
logger = logging.getLogger(__name__)
@process_for(MyPage):
def myfunc(request, Page):
logger.info('page_processor logging test')
print 'my page_processor print'
(...)
當我刷新頁面我沒有看到記錄器,但我看到了打印和日誌文件:
[02/Mar/2014 23:07:10] INFO [myApp.page_processors:13] page_progessor logging test
等我知道這個邏輯在起作用。在google搜索了一下之後,我發現了this和this page恰恰解決了這個問題。他說默認logging.StreamHandler記錄到STDERR。如果我們想登錄到STDOUT你應該關鍵字參數「流」添加到logging.StreamHandler結構,因此配置處理器爲這樣:
'handlers':{
(...)
'console':{
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'stream': sys.stdout
},
}
原來,這仍然無法正常工作,而且我不沒有任何錯誤或任何錯誤,我仍然可以看到打印和文件日誌。只是不是控制檯記錄器。
發生了什麼事?
編輯: 我試過this,沒有什麼區別。
感謝。 __ stdout __不起作用。是的,我可以相信這個代碼沒什麼問題(畢竟我是從其他地方拿來的),但奇怪的是,即使是登錄文件也可以。還有其他建議嗎? – oneloop