我有Django日誌記錄的問題。順便說一下,這個問題的答案將幫助我澄清Django命名空間是如何工作的。Django日誌項目和應用程序名稱空間
這裏是我的項目的結構:
MyProject:
-App1:
....
views.py
-App2:
....
urls.py
settings.py
我喜歡將所有消息記錄在一個文件中。然後我設置在settings.py以下記錄:
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'verbose': {
#'format': '%(levelname)-8s %(remote_addr)-15s %(path_info)s %(asctime)s %(name)-20s %(funcName)-15s %(message)s'
'format': '%(levelname)-8s %(asctime)s %(name)-20s %(funcName)-15s %(message)s'
},
},
'handlers': {
'normal': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'formatter': 'verbose',
'filename': os.path.join('C:/dev/Instantaneus/Instantaneus/html/static', 'log', 'normal.log')
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose',
},
},
'loggers': {
'MyProject': {
'handlers': ['normal','console'],
'level': 'DEBUG',
#'filters': ['request'],
'propagate': True,
},
}
}
在urls.py:
from MyProject.App1.views import EvenementDetailView,
....
url(r'App1/(?P<pk>\d+)/$', login_required(EvenementDetailView.as_view(model=Evenement)), name='evenement_details'),
和應用1/views.py:
from django.views.generic import DetailView
import logging
logger = logging.getLogger(__name__)
....
class EvenementDetailView(DetailView):
print __name__
model=Evenement
....
logger.debug('blabla')
在瀏覽器,當我撥打http://localhost/App1/3
時,控制檯中出現以下內容:
DEBUG 2012-01-18 14:59:04,503 Myproject.evenements.views EvenementDetailView blabla
MyProject.evenements.views
evenements.views
那麼我的問題是爲什麼print __name__
代碼被執行兩次,最重要的是爲什麼輸出不一樣?
我假設DEBUG
日誌只出現一次,因爲evenement.views
不能傳播到MYPROJECT,因爲在這種情況下根本是evenements
任何想法?
解決方案,而不是與深入的解釋,但它的工作原理:
在我的urls.py,我有一個線url(r'App1/(?P<pk>\d+)/activate/$', 'app1.views.activate')
其中「激活」是應用1/views.py的函數。我已更換'App1.views.activate'
'MyProject.app1.views.activate'
,它工作正常。 print __name__
控制檯中只有一行。我想我只有一行,因爲'disable_existing_loggers':是的,但我無法解釋的是,這個解決方案使我的views.py只解析了一次而不是兩次。爲了確保我在文件的開頭添加了print "blabla"
。在第一種情況下,他打印了兩次,只有第二種情況下打印。
嗨,亞當。感謝您快速回答。正如你所建議的,我已經從Python路徑中刪除了父Directoy。他現在不在sys.path中,但結果是一樣的。關於長篇文章,我稍後會仔細看看,但對我的水平來說似乎有點複雜! – Youpsla 2012-01-18 18:13:03
類似的問題:http://stackoverflow.com/a/8917273/16361 – AdamKG 2012-01-18 20:57:11