最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django日志模塊logging的配置詳解

 更新時(shí)間:2017年02月14日 14:28:48   作者:laixintao  
日志在程序開發(fā)中是少不了的,通過日志我們可以分析到錯(cuò)誤在什么地方,有什么異常。在生產(chǎn)環(huán)境下有很大的用處。在java 開發(fā)中通常用 log4j,logback 等三方組件。下面這篇文章主要介紹了Django日志模塊logging的相關(guān)資料,需要的朋友可以參考下。

前言

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

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

理解Logger

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

處理流程

   formatter
logger ----> handler ----------------> files, emails
    filter

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

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

然后,名字是django的這個(gè)logger就會(huì)把信息交給相應(yīng)的handler,handler把信息用formater和filter處理一下,提交log(保存到文件,數(shù)據(jù)庫,或者發(fā)送郵件)。

一般來說,handler可以是send_email,error_file等負(fù)責(zé)處理的方式,在logger中可以重復(fù)使用handler。例如我們的django處理器使用了send_email, error_file 這兩個(gè)處理器,request處理器使用error_file,info_file兩個(gè)處理器,logger和handler可以理解成多對(duì)多的關(guān)系,嘻嘻。

配置方式

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

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

#管理員郵箱
ADMINS = (
 ('laixintao','*******@163.com'),
)
 
#非空鏈接,卻發(fā)生404錯(cuò)誤,發(fā)送通知MANAGERS
SEND_BROKEN_LINK_EMAILS = True
MANAGERS = ADMINS
 
#Email設(shè)置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST= 'smtp.163.com'#QQ郵箱SMTP服務(wù)器(郵箱需要開通SMTP服務(wù))
EMAIL_PORT= 25 #QQ郵箱SMTP服務(wù)端口
EMAIL_HOST_USER = '**********@163.com' #我的郵箱帳號(hào)
EMAIL_HOST_PASSWORD = '**************' #授權(quán)碼
EMAIL_SUBJECT_PREFIX = 'website' #為郵件標(biāo)題的前綴,默認(rèn)是'[django]'
EMAIL_USE_TLS = True #開啟安全鏈接
DEFAULT_FROM_EMAIL = SERVER_EMAIL = EMAIL_HOST_USER #設(shè)置發(fā)件人
 
#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': {#發(fā)送郵件通知管理員
  'level': 'ERROR',
  'class': 'django.utils.log.AdminEmailHandler',
  'filters': ['require_debug_false'],# 僅當(dāng) DEBUG = False 時(shí)才發(fā)送郵件
  'include_html': True,
 },
 'debug': {#記錄到日志文件(需要?jiǎng)?chuàng)建對(duì)應(yīng)的目錄,否則會(huì)出錯(cuò))
  'level':'DEBUG',
  'class':'logging.handlers.RotatingFileHandler',
  'filename': os.path.join(BASE_DIR, "log",'debug.log'),#日志輸出文件
  'maxBytes':1024*1024*5,#文件大小 
  'backupCount': 5,#備份份數(shù)
  'formatter':'standard',#使用哪種formatters日志格式
 },
 'console':{#輸出到控制臺(tái)
  '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,
 },
 # 對(duì)于不在 ALLOWED_HOSTS 中的請(qǐng)求不發(fā)送報(bào)錯(cuò)郵件
 'django.security.DisallowedHost': {
  'handlers': ['null'],
  'propagate': False,
 },
 } 
}

以上的配置文件中,有三個(gè)日志處理器。分別是:

  1. ‘django.request':django的request發(fā)生error會(huì)自動(dòng)記錄,然后使用debug將信息記錄到文件,還有mail_admins將信息通過郵件發(fā)送給管理員。這里郵件的功能非常棒!并不是一個(gè)純文本信息,而是一個(gè)html文件,和我們?cè)跒g覽器看到的錯(cuò)誤頁面一模一樣!要正常使用郵件功能需要像我一樣配置一下上面的郵件發(fā)件人信息。我是直接去網(wǎng)易申請(qǐng)了一個(gè)郵箱。要格外注意三點(diǎn):1.一定要去郵件服務(wù)商開啟SMTP服務(wù);2.不同的郵件服務(wù)商可能有一些特殊的設(shè)置,比如網(wǎng)易,會(huì)給你一個(gè)客戶端授權(quán)碼,這個(gè)才是密碼,而不是網(wǎng)頁的登錄密碼。3 注意服務(wù)商有沒有對(duì)發(fā)信頻率的限制。
  2. ‘django':使用console處理器,將信息輸出。在開發(fā)的時(shí)候就可以使用這個(gè)處理器(什么?print? 太low了?。?/li>
  3. 最后一個(gè)處理器見注釋。

最后,不要忘了給日志的路徑響應(yīng)的權(quán)限。比如Apache2服務(wù)器,就需要給www-data寫權(quán)限:

sudo chown -R [yourname]:www-data [log]
sudo chmod -R g+s [log]

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • Python跨文件全局變量的實(shí)現(xiàn)方法示例

    Python跨文件全局變量的實(shí)現(xiàn)方法示例

    我們?cè)谑褂肞ython編寫應(yīng)用的時(shí)候,有時(shí)候會(huì)遇到多個(gè)文件之間傳遞同一個(gè)全局變量的情況。所以下面這篇文章主要給大家介紹了關(guān)于Python跨文件全局變量的實(shí)現(xiàn)方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-12-12
  • python中的django是做什么的

    python中的django是做什么的

    在本篇文章里小編給大家整理了關(guān)于python中的django作用以及相關(guān)基礎(chǔ)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2020-07-07
  • 簡(jiǎn)單談?wù)凱ython中的json與pickle

    簡(jiǎn)單談?wù)凱ython中的json與pickle

    下面小編就為大家?guī)硪黄?jiǎn)單談?wù)凱ython中的json與pickle。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 由Python運(yùn)算π的值深入Python中科學(xué)計(jì)算的實(shí)現(xiàn)

    由Python運(yùn)算π的值深入Python中科學(xué)計(jì)算的實(shí)現(xiàn)

    這篇文章主要介紹了由Python運(yùn)算π的值深入Python中科學(xué)計(jì)算的實(shí)現(xiàn),由簡(jiǎn)單的計(jì)算發(fā)散出各種算法的講解,需要的朋友可以參考下
    2015-04-04
  • Python爬取動(dòng)態(tài)網(wǎng)頁中圖片的完整實(shí)例

    Python爬取動(dòng)態(tài)網(wǎng)頁中圖片的完整實(shí)例

    這篇文章主要給大家介紹了關(guān)于Python爬取動(dòng)態(tài)網(wǎng)頁中圖片的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python3.5內(nèi)置模塊之random模塊用法實(shí)例分析

    Python3.5內(nèi)置模塊之random模塊用法實(shí)例分析

    這篇文章主要介紹了Python3.5內(nèi)置模塊之random模塊用法,結(jié)合實(shí)例形式分析了Python3.5 random模塊生成隨機(jī)數(shù)與隨機(jī)字符串相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04
  • Pycharm中的下載安裝、配置與測(cè)試方式

    Pycharm中的下載安裝、配置與測(cè)試方式

    這篇文章主要介紹了Pycharm中的下載安裝、配置與測(cè)試方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 利用Python讀取微信朋友圈的多種方法總結(jié)

    利用Python讀取微信朋友圈的多種方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于如何利用Python讀取微信朋友圈的多種方法,對(duì)于一個(gè)新手來說如果單獨(dú)的去爬取朋友圈的話,難度會(huì)非常大,可以借鑒這篇文章的內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 如何利用python獲取鼠標(biāo)點(diǎn)擊的實(shí)時(shí)位置案例

    如何利用python獲取鼠標(biāo)點(diǎn)擊的實(shí)時(shí)位置案例

    這篇文章主要給大家介紹了關(guān)于如何利用python獲取鼠標(biāo)點(diǎn)擊的實(shí)時(shí)位置,并展示了如何安裝和使用該庫,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • python selenium firefox使用詳解

    python selenium firefox使用詳解

    這篇文章主要介紹了python selenium firefox使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02

最新評(píng)論

荆州市| 兴宁市| 河源市| 林芝县| 沂源县| 吴旗县| 惠水县| 萨迦县| 中江县| 丽水市| 五家渠市| 通山县| 绥滨县| 白河县| 日土县| 台东县| 鲁山县| 库尔勒市| 大足县| 铁岭市| 福海县| 兰溪市| 广宁县| 通道| 长汀县| 洛隆县| 繁峙县| 洛宁县| 特克斯县| 琼中| 晋城| 阳信县| 岳池县| 收藏| 长岭县| 泰和县| 嘉禾县| 仪陇县| 濮阳县| 枞阳县| 老河口市|