国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Django日志模塊logging的配置詳解

2020-02-23 04:22:49
字體:
來源:轉載
供稿:網友

前言

Django對于日志輸出的信息是很完善的,request的信息,setting配置,trackback的信息,一應俱全,足夠我們調試了。但是在線上環境,如果讓用戶看到這些信息,是很不安全的(暴露代碼)。所以在線上我們要關閉Debug,但是又不能扔掉這些調試信息,這就要用到logging模塊。

logging模塊其實是Python的模塊,在Django中有很多本地化的支持。

理解Logger

首先要理解logging的工作,這里面主要有四個東西:格式器formatter,過濾器filter,處理器handler,日志實例logger。

處理流程

   formatterlogger ----> handler ----------------> files, emails    filter

處理流程是這樣的。首先,在代碼中。我們拿到的是logger實例,通過這個實例來記錄信息。

# import the logging libraryimport logging # Get an instance of a loggerlogger = logging.getLogger('django') def my_view(request, arg1, arg): ... if bad_mojo: # Log an error message logger.error('Something went wrong!')

然后,名字是django的這個logger就會把信息交給相應的handler,handler把信息用formater和filter處理一下,提交log(保存到文件,數據庫,或者發送郵件)。

一般來說,handler可以是send_email,error_file等負責處理的方式,在logger中可以重復使用handler。例如我們的django處理器使用了send_email, error_file 這兩個處理器,request處理器使用error_file,info_file兩個處理器,logger和handler可以理解成多對多的關系,嘻嘻。

配置方式

Python中可以使用多種格式配置logging,比如.conf, .ini等。

在Django中,我們是把有關logging的配置寫到settings里面。相應的配置及解釋如下(僅供參考)。

#管理員郵箱ADMINS = ( ('laixintao','*******@163.com'),) #非空鏈接,卻發生404錯誤,發送通知MANAGERSSEND_BROKEN_LINK_EMAILS = TrueMANAGERS = ADMINS #Email設置EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'EMAIL_HOST= 'smtp.163.com'#QQ郵箱SMTP服務器(郵箱需要開通SMTP服務)EMAIL_PORT= 25 #QQ郵箱SMTP服務端口EMAIL_HOST_USER = '**********@163.com' #我的郵箱帳號EMAIL_HOST_PASSWORD = '**************' #授權碼EMAIL_SUBJECT_PREFIX = 'website' #為郵件標題的前綴,默認是'[django]'EMAIL_USE_TLS = True #開啟安全鏈接DEFAULT_FROM_EMAIL = SERVER_EMAIL = EMAIL_HOST_USER #設置發件人 #logging日志配置LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': {#日志格式  'standard': {  'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'}  }, 'filters': {#過濾器 'require_debug_false': {  '()': 'django.utils.log.RequireDebugFalse',  } }, 'handlers': {#處理器 'null': {  'level': 'DEBUG',  'class': 'logging.NullHandler', }, 'mail_admins': {#發送郵件通知管理員  'level': 'ERROR',  'class': 'django.utils.log.AdminEmailHandler',  'filters': ['require_debug_false'],# 僅當 DEBUG = False 時才發送郵件  'include_html': True, }, 'debug': {#記錄到日志文件(需要創建對應的目錄,否則會出錯)  'level':'DEBUG',  'class':'logging.handlers.RotatingFileHandler',  'filename': os.path.join(BASE_DIR, "log",'debug.log'),#日志輸出文件  'maxBytes':1024*1024*5,#文件大小   'backupCount': 5,#備份份數  'formatter':'standard',#使用哪種formatters日志格式 }, 'console':{#輸出到控制臺  'level': 'DEBUG',  'class': 'logging.StreamHandler',  'formatter': 'standard', }, }, 'loggers': {#logging管理器 'django': {  'handlers': ['console'],  'level': 'DEBUG',  'propagate': False  }, 'django.request': {  'handlers': ['debug','mail_admins'],  'level': 'ERROR',  'propagate': True, }, # 對于不在 ALLOWED_HOSTS 中的請求不發送報錯郵件 'django.security.DisallowedHost': {  'handlers': ['null'],  'propagate': False, }, } }            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高唐县| 渭源县| 宜君县| 张掖市| 延寿县| 隆回县| 光泽县| 嘉黎县| 定兴县| 南阳市| 安福县| 固始县| 石狮市| 湖州市| 孟连| 贵州省| 凭祥市| 抚远县| 肇州县| 赣州市| 峨山| 都昌县| 仁寿县| 阿克苏市| 乐陵市| 疏勒县| 贡觉县| 西畴县| 轮台县| 普定县| 玛沁县| 乐至县| 建水县| 玉山县| 苗栗市| 红安县| 蓝山县| 旬阳县| 新巴尔虎左旗| 章丘市| 上杭县|