国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

Django項(xiàng)目如何正確配置日志(logging)

瀏覽:4日期:2024-09-09 08:55:51

當(dāng)Django項(xiàng)目正式部署上線后,我們需要設(shè)置DEBUG = False。這時(shí)開發(fā)者應(yīng)怎樣檢查Django程序在生產(chǎn)環(huán)境運(yùn)行時(shí)有什么異常或錯(cuò)誤呢?答案就是日志(logging)。在生產(chǎn)環(huán)境中,Django默認(rèn)是不會(huì)在服務(wù)器上自動(dòng)生成log文件的,即使程序出現(xiàn)error級別的故障也不會(huì)通知管理員。本文將教你如何在Django項(xiàng)目中正確配置日志(logging),讓Django生成log日志文件,并在程序運(yùn)行發(fā)生error級別故障時(shí)通知管理員。

日志基礎(chǔ)知識(shí)

日志與我們的軟件程序密不可分。它記錄了程序的運(yùn)行情況,可以給我們調(diào)試程序和故障排查提供非常有用的信息。每一條日志信息記錄了一個(gè)事件的發(fā)生。具體而言,它包括了:

事件發(fā)生時(shí)間 事件發(fā)生位置 事件的嚴(yán)重程度--日志級別 事件內(nèi)容

日志的級別又分為:

DEBUG:用于調(diào)試目的的低級系統(tǒng)信息 INFO:一般系統(tǒng)信息 WARNING:描述已發(fā)生的小問題的信息。 ERROR:描述已發(fā)生的主要問題的信息。 CRITICAL:描述已發(fā)生的嚴(yán)重問題的信息。

在Django項(xiàng)目中,我們可以針對日志的不同級別設(shè)置不同的處理方式。比如INFO級別及以上的日志我們寫入到log文件里保存,Error級別及以上的日志我們直接通過郵件發(fā)送給系統(tǒng)管理員。

Django的日志模塊

Django的日志模塊其實(shí)就是python的logging模塊。它由4部分組成:

Logger 記錄儀:生成和記錄每條日志信息及級別 Handler處理程序: 根據(jù)日志信息級別交由相應(yīng)處理程序處理(比如生成文件或發(fā)送郵件) Filters 過濾器:日志交由處理程序處理前需要滿足的過濾條件(比如Debug=True或False) Formaters 格式化程序:決定每條日志的打印輸出格式,可以有完整版的,也有簡單版的

一個(gè)logger記錄儀的例子如下所示。當(dāng)程序運(yùn)行出現(xiàn)錯(cuò)誤時(shí),它生成了一條級別為error的日志信息。這條記錄產(chǎn)生后就會(huì)交由Handler處理。

# import the logging libraryimport logging# 獲得logger實(shí)例logger = logging.getLogger(__name__)def my_view(request, arg1, arg): ... if error_happens:# Log an error messagelogger.error(’Something went wrong!’)

當(dāng)Debug=True時(shí),日志信息默認(rèn)在console輸出。現(xiàn)在我們還需要在django配置文件里配置日志(logging)相關(guān)內(nèi)容,使得當(dāng)Debug=False時(shí),日志信息會(huì)輸出到日志文件里或發(fā)送給系統(tǒng)管理員。

settings.py推薦日志配置信息

以下基本配置信息在django cookiecutter推薦使用的logging配置信息上做了修改,可適合大部分項(xiàng)目使用。如果真的希望發(fā)送和接收到郵件還需在settings.py正確配置電子郵箱Email。

# 給ADMINS發(fā)送郵件需要配置ADMINS = ( (’admin_name’,’[email protected]’),)MANAGERS = ADMINS# 創(chuàng)建log文件的文件夾LOG_DIR = os.path.join(BASE_DIR, 'logs')# 基本配置,可以復(fù)用的LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}, 'formatters': { # 定義了兩種日志格式'verbose': { # 標(biāo)準(zhǔn) 'format': '%(levelname)s %(asctime)s %(module)s ' '%(process)d %(thread)d %(message)s'},’simple’: { # 簡單 ’format’: ’[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s’}, }, 'handlers': { # 定義了三種日志處理方式'mail_admins': { # 只有debug=False且Error級別以上發(fā)郵件給admin 'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler',},’file’: { # Info級別以上保存到日志文件 ’level’: ’INFO’, ’class’: ’logging.handlers.RotatingFileHandler’, # 保存到文件,根據(jù)文件大小自動(dòng)切 ’filename’: os.path.join(LOG_DIR,'info.log'), # 日志文件 ’maxBytes’: 1024 * 1024 * 10, # 日志大小 10M ’backupCount’: 2, # 備份數(shù)為 2 ’formatter’: ’simple’, # 簡單格式 ’encoding’: ’utf-8’,},'console': { # 打印到終端console 'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'verbose',}, }, 'root': {'level': 'INFO', 'handlers': ['console']}, 'loggers': {'django.request': { # Django的request發(fā)生error會(huì)自動(dòng)記錄 'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': True, # 向不向更高級別的logger傳遞},'django.security.DisallowedHost': { # 對于不在 ALLOWED_HOSTS 中的請求不發(fā)送報(bào)錯(cuò)郵件 'level': 'ERROR', 'handlers': ['console', 'mail_admins'], 'propagate': True,}, },}

以上就是Django項(xiàng)目如何正確配置日志(logging)的詳細(xì)內(nèi)容,更多關(guān)于Django 正確配置日志的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Django
相關(guān)文章:
主站蜘蛛池模板: 日韩国产毛片 | 欧美一级毛片欧美大尺度一级毛片 | 亚洲一区二区三区成人 | 一区二区三区欧美视频 | 免费一级欧美性大片 | 亚洲欧美日韩在线线精品 | 久久精品视频16 | 欧美亚洲一区二区三区在线 | 欧美极品video粗暴 | 亚洲免费在线 | 欧美一级视屏 | 久久免费看视频 | 国产亚洲欧美在线视频 | 看久久 | 人碰人操 | 欧美综合在线视频 | 成年女人永久免费观看片 | 99re在线精品视频 | 成人免费影院 | 国产美女在线精品观看 | 精品久久久久久久九九九精品 | 国产成人亚洲综合91精品555 | 精品一久久香蕉国产二月 | 欧美亚洲国产成人高清在线 | 国产高清一区二区三区免费视频 | 国产成人精品免费视频大全五级 | 一区二区三区国产 | 一级毛片免费在线观看网站 | 亚洲高清一区二区三区久久 | 日本三级香港三级三级人!妇久 | 日韩在线黄色 | 久久99精品久久久久久三级 | 波多野结衣在线观看3人 | 一个人看的免费观看日本视频www | 久草a在线| 一区二区三区四区视频 | 久操视频免费在线观看 | 日本色网址 | 男女视频免费在线观看 | 91精品成人免费国产 | 国产毛片一区二区三区精品 |