Django log日誌設定

2021-09-09 07:08:33 字數 3478 閱讀 2824

參考文獻:

loggers

loggers中的logger是整個日誌機制的入口,乙個logger對應一種型別的日誌。logger通過設定日誌級別(level屬性),來配置logger的觸發條件。python中定義了5種日誌級別:

由低到高分別為:debug->info->warning->error->critical

settings中的配置

logging = ,

"******": ,

},"filters": ,

'require_debug_true': ,

},"handlers": ,

"default": ,

"mail_admins": ,

},"loggers": ,

"django.request": ,

"""』django』是』django.request』的上級。這種層級關係的設計,使得低層次logger接收到的日誌資訊,也可以被上級logger收到。

實踐中,我們可以定義乙個頂級的logger,用來接收所有下級logger的日誌資訊。這種傳播可以在每個logger基礎上進行控制.

如果你不想讓特定的logger傳播到它的上級,可以關閉這個行為。通過設定'propagate': false,來實現。"""

"xiangmu": ,

"handlers": ["console", "default"],

"level": "info",

"filters": ,

"propagate": true,

},"handlers": ["console"],

"level": "info",

"filters": ,

},"handlers": ["console"],

"level": "info",

"filters": ,}}

}

列印需要列印的日誌:

# coding=utf-8

# -*- coding: utf-8 -*-

import logging

logger = logging.getlogger(__name__)

# 列印日誌

logger.exception("unknown message type: %s", msg_type)

logger.exception("|---------異常觸發的日誌")

logger.error("sid error", exc_info=true)

logger.warning("***不存在")

logger.info("|------日誌內容")

# 記錄日誌有5個對應的方法。

logger.debug()

logger.info()

logger.warning()

logger.error()

logger.critical()

# 此外,還有兩種日誌方法

logger.log() # 手動記錄乙個日誌,隨便你想記錄什麼都行

logger.exception() # 為了捕獲某些異常,建立乙個error級別的日誌

所有與日誌有關的配置預設在logging ={}中,distconfig格式。如果我們沒有進行特別配置,django會執行預設的日誌配置。

預設配置

『django』這個logger以及其(除了django.server之外的)所有下級的info以上的日誌,都會被streamhandler處理(輸出到console)

『django』這個logger以及其(除了django.server之外的)所有下級的error和critical的日誌,都會被adminemailhandler處理(傳送至指定郵件)

如果我們不想使用預設的配置,可以將logging中的'disable_existing_loggers'設定為true(預設也是true),這樣一來,預設的配置就會被禁用。但是設定'disable_existing_loggers': true,必須要非常小心,因為可能產生一些令人意外的結果(官網這麼說的,還沒試過),所以比較建議的方法是'disable_existing_loggers': false,然後重寫部分或者全部的預設logger。

這種方式在本地開發環境進行除錯時比較有幫助,很直觀,需要的時候馬上就能看到輸出,不必切換到檔案或者查收郵件。不過在生產環境下最好不要輸出到控制台。預設情況下,只有在debug = true的時候才會將日誌輸出到控制台,而且只處理info以上級別的日誌。預設情況下,這種日誌並不會輸出很多資訊,如果你想看到運算元據庫的細節,可以在logger的level中設定'level': os.getenv('django_log_level', 'debug'),這樣就可以了。不過這樣產生的日誌也有點太多了。

import os 

logging = ,

},'loggers': ,

},}

handlers中定義了兩個handler:'console'和'mail_admins'。'console'配置'class': 'logging.streamhandler',這個我們不用過多去說。重點看看'mail_admins',配置'class': 'django.utils.log.adminemailhandler',那麼既然要配置為通過郵件傳送日誌,那麼是不是有必要設定一下傳送和接收的郵件呢?

郵箱的配置也在settings.py中:

# 郵件配置

email_host = 'smtp.maildomain.com' # smtp位址

email_port = 25 # smtp埠

email_host_user = '[email protected]' # 傳送郵件的郵箱

email_host_password = '******' # 我的郵箱密碼

email_subject_prefix = u'[prefix]' # 為郵件subject-line字首,預設是'[django]'

email_use_tls = true # 與smtp伺服器通訊時,是否啟動tls鏈結(安全鏈結)。預設是false

# 管理員站點

server_email = '[email protected]' # the email address that error messages come from, such as those sent to admins and managers.

admins = (('receiver', '[email protected]'),) # 接收郵件的郵箱(或郵件組)

mysql 日誌設定

general日誌 設定路徑 mysql set global general log file tmp general.lg 在配置檔案加 general log on slow日誌 查詢 mysql show variables like log slow queries 在配置檔案加 log ...

springboot 設定日誌

logging.level root info logging.level org springframework web debug 設定包的日誌級別 logging.level org hibernate error或者可以在命令列引數後加 logging.level org springfra...

tomcat日誌設定

tomcat 日誌資訊分 為 兩 類 一是執行中的日誌,它主要 記錄 執行的一些資訊,尤其是一些異常 錯誤 日誌資訊 二是 訪問 日誌資訊,它 記錄 的 訪問 的 時間 ip 訪問 的 資 料等相 關 資訊。2 tomcat 日誌配置 2.1 訪問日誌的配置 預設 tomcat 不記錄訪問日誌,如下...