中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
django日志logging 的配置以及處理
日志在程序開發(fā)中是少不了的,通過日志我們可以分析到錯(cuò)誤在什么地方,有什么異常。在生產(chǎn)環(huán)境下有很大的用處。在java 開發(fā)中通常用 log4j,logback 等三方組件。那么在 django中是怎么處理日志的呢。django 利用的就是python 提供的 logging模塊,但django中要用logging ,還得有一定的配置規(guī)律,需要在setting 中配置:
程序代碼
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(levelname)s]- %(message)s'
},
},
'filters': {
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
'include_html': True,
},
'default': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': os.path.join(STATIC_ROOT+'/logs/','all.log'), #或者直接寫路徑:'c:\logs\all.log',
'maxBytes': 1024*1024*5, # 5 MB
'backupCount': 5,
'formatter':'standard',
},
'console':{
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'standard'
},
'request_handler': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': os.path.join(STATIC_ROOT+'/logs/','script.log'), #或者直接寫路徑:'filename':'c:\logs\request.log''
'maxBytes': 1024*1024*5, # 5 MB
'backupCount': 5,
'formatter':'standard',
},
'scprits_handler': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': os.path.join(STATIC_ROOT+'/logs/','script.log'), #或者直接寫路徑:'filename':'c:\logs\script.log'
'maxBytes': 1024*1024*5, # 5 MB
'backupCount': 5,
'formatter':'standard',
},
},
'loggers': {
'django': {
'handlers': ['default','console'],
'level': 'DEBUG',
'propagate': False
},
'XieYin.app':{
'handlers': ['default','console'],
'level': 'DEBUG',
'propagate': True
},
'django.request': {
'handlers': ['request_handler'],
'level': 'DEBUG',
'propagate': False
},
'scripts': { # 腳本專用日志
'handlers': ['scprits_handler'],
'level': 'INFO',
'propagate': False
},
}
}
下面專門講解一下: 其實(shí)這個(gè)配置與python 傳統(tǒng)的logging 很類似.
formatters 用來配置 日志打印的格式
handlers ,用來定義具體處理日志的方式,可以定義很多種,"default" 就是默認(rèn)方式,"console" 就是打印到控制臺(tái)方式.
loggers 是用來配置用哪幾種 handlers 來處理日志,比如你同時(shí)需要輸出日志到文件,和到控制臺(tái),那就必須配置  兩種handlers. 在上面的例子中 'XieYin.app" 是典型的例子.
有一點(diǎn)必須注意的是 loggers 類型 為"django" 這將處理所有類型的日志.
另外 為什么我配置了一個(gè)  'XieYin.app' 的logger,這是因?yàn)?django 會(huì)根據(jù)包的層次結(jié)構(gòu)去找 應(yīng)該用那個(gè) logger 來處理日志,如果找不到,就不輸出日志,而我的項(xiàng)目要輸出日志的views.py 都是是放在 XieYin.app  下面的。而且當(dāng)系統(tǒng)查找是否配置有相應(yīng)的logger的時(shí)候,如果本身這個(gè)module 沒有l(wèi)ogger ,就查找父類是否有l(wèi)ogger。比如有一個(gè)module:XieYin.app.comment.views.  如果在這里面用如下方式寫日志:
views.py 中
程序代碼
import logging
logger = logging.getLogger('XieYin.app')
logger.info('aaa')
logger.error('error occurs')
這個(gè)時(shí)候也會(huì)找到 XieYin.app 去處理,雖然沒有定義 "XieYin.app.comment.views" 這樣的logger,它會(huì)再他的父類找。
知道了原理,在view中就如同上面介紹的那樣,應(yīng)用就好了
程序代碼
import logging
logger = logging.getLogger(__name__) # 這里用__name__通用,自動(dòng)檢測(cè).
logger.info('aaa')
logger.error('error')
你如果既想看 自己在程序中輸出的日志,又想看django自己輸出的日志,特別是sql 語句,那么根據(jù)上面介紹的,你可以這樣做:
程序代碼
import logging
logger = logging.getLogger('django') # 這里用__name__通用,自動(dòng)檢測(cè).
logger.info('aaa')
logger.error('error')
這樣,所有的日志你都能看到,包括 django.db.backends 數(shù)據(jù)庫sql語句的日志
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
python按日志時(shí)間與按日志大小切分日志
python的logging模塊【zz】
python logging模塊:
python知識(shí)鞏固 | 自定義日志模塊封裝,將日志格式化打印到控制臺(tái)或是輸出到文件?
將不同級(jí)別的logging 日志信息寫入到不同文件
Python日志模塊
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服