Django專案如何正確配置日誌 logging

2022-09-28 04:00:12 字數 1459 閱讀 8432

當django專案正式部署上線後,我們需要設定debug = false。這時開發者應怎樣檢查django程式在生產環境執行時有什麼異常或錯誤呢?答案就是日誌(logging)。在生產環境中,django預設是不會在伺服器上自動生成log檔案的,即使程式出現error級別的故障也不會通知管理員。本文將教你如何在django專案中正確配置日誌(logging),讓django生成log日誌檔案,並在程式執行發生error級別故障時通知管理員。

日誌與我們的軟體程式密不可分。它記錄了程式的運**況,可以給我們除錯程式和故障排查提供非常有用的資訊。每一條日誌資訊記錄了乙個事件的發生。具體而言,它包括了:

日誌的級別又分為:

在django專案中,我們可以針對日誌的不同級別設定不同的處理方式。比如info級別及以上的日誌我們寫入到log檔案裡儲存,error級別及以上的日誌我們直接通過郵件傳送給系統管理員。

django的日誌模組其實就是python的logging模組。它由4部分組成:

乙個logger記錄儀的例子如下所示。當程式執行出現錯誤時,它生成了一條級別為error的日誌資訊。這條記錄產生後就會交由handler處理。

# import the logging library

import logging

# 獲得logger例項

logger = logging.getlogger(__name__)

def my_view(request, arg1, arg):

...if error_happens:

# log an error message

logger.error('something went wrong!')

當debug=true時,日誌資訊預設在console輸出。現在我們還需要在django配置檔案裡配置日誌(logging)相關內容,使得當debug=false時,日誌資訊會輸出到日誌檔案裡或傳送給系統管理員。

以下基本配置資訊在django cookiecutter推薦使用的logging配置資訊上做了修改,可適合大部分專案使用。如果真的希望傳送和接收到郵件還需在settings.py正確配置電子郵箱email。

# 給admins傳送郵件需要配置

admins = (

('admin_name','[email protected]'),

)managers = admins

# 建立log檔案的資料夾

log_dir = os.path.join(base_dir, "logs")

# 基本配置,可以復用的

logging = },

"formatters": ,

'******': ,

},"handlers": ,

'file': ,

"co程式設計客棧nsole": ,

},"root": ,

"loggers": ,

"django.security.disallowedhost": ,},}

django專案配置

建立好django專案後對其進行配置 django.contrib.admin django.contrib.auth django.contrib.contenttypes django.contrib.sessions django.contrib.messages django.contrib...

如何正確配置Nginx PHP

對很多人而言,配置nginx php無外乎就是搜尋一篇教程,然後拷貝貼上。聽上去似乎也沒什麼問題,可惜實際上網路上很多資料本身年久失修,漏洞百出,如果大家不求甚解,一味的拷貝貼上,早晚有一天會為此付出代價。假設我們用php實現了乙個前端控制器,或者直白點說就是統一入口 把php請求都傳送到同乙個檔案...

如何正確配置Nginx PHP

對很多人而言,配置nginx php無外乎就是搜尋一篇教程,然後拷貝貼上。聽上去似乎也沒什麼問題,可惜實際上網路上很多資料本身年久失修,漏洞百出,如果大家不求甚解,一味的拷貝貼上,早晚有一天會為此付出代價。假設我們用php實現了乙個前端控制器,或者直白點說就是統一入口 把php請求都傳送到同乙個檔案...