亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

django開發(fā)-log日志的配置

Barry_Ng / 1349人閱讀

摘要:下面介紹一下開發(fā)中如何將日志輸出到文件中。錯(cuò)誤,表示出現(xiàn)了某種錯(cuò)誤。崩潰,出現(xiàn)了嚴(yán)重級別的錯(cuò)誤。如果日志的信息級別比的低,那么就會忽略這條日志。還運(yùn)行咱們在處理之前修改日志,例如降低或者提高日志的級別。

在生產(chǎn)環(huán)境中,將程序的運(yùn)行日志輸出保存到文件中是很必要的操作;當(dāng)應(yīng)用崩潰時(shí),很容易通過查找日志來定位問題。下面介紹一下django開發(fā)中如何將日志輸出到文件中。

首先看一下日志級別有哪些:

DEBUG:所有等級中最低,其信息一般用來作為調(diào)試的輔助信息
INFO:程序的一般信息
WARNING:警告,通常用來對某些可能出現(xiàn)的錯(cuò)誤且不會影響程序正常運(yùn)行的信息進(jìn)行警告。
ERROR:錯(cuò)誤,表示出現(xiàn)了某種錯(cuò)誤。
CRITICAL:崩潰,出現(xiàn)了嚴(yán)重級別的錯(cuò)誤。

在django項(xiàng)目中使用logging模塊打印日志的步驟如下:

1.導(dǎo)入模塊 import logging
2.設(shè)置日志等級 logging.basicConfig(level=logging.DEBUG)
3.獲取logger對象 logger = logging.getLogger(__name__)
4.打印日志 logger.debug("logger日志"),還有l(wèi)ogger.info(),logger.warning()等方法

下面介紹一下logging中的四個(gè)組件,如下:

1.Loggers
2.Handlers
3.Filters
4.Formatters

Loggers(日志記錄器),系統(tǒng)中的每一條日志都是由該組件進(jìn)行記錄的,每一個(gè)記錄器都應(yīng)該有其自己的名稱并標(biāo)記其最低記錄的等級;當(dāng)一條日志給到logger時(shí),logger會對該條信息的級別與自身的級別進(jìn)行比較,如果該日志級別不低于本身級別,logger就會進(jìn)行下一步操作。如果日志的信息級別比logger的低,那么就會忽略這條日志。
當(dāng)logger經(jīng)過級別的比較之后決定要對某條日志進(jìn)行處理時(shí),就將該條日志交給了Handlers

Handlers(處理器),用來處理具體每條信息,例如是將日志打印到屏幕還是記錄到文件或者發(fā)送至某個(gè)網(wǎng)絡(luò)連接;它自己的記錄級別,如果日志級別低于handler的級別,handler同樣會忽略掉該條日志。

Filter(過濾器):提供了傳遞給handler之前的附加功能。在通常情況下,一條日志信息只要達(dá)到logger的級別之后就會傳遞給handler處理,但是我們可以通過使用filter來對日志進(jìn)行額外的過濾。
例如我們可以使用某個(gè)filter來控制只允許某個(gè)特定的源的ERROR級別的日志。
Filter還運(yùn)行咱們在處理之前修改日志,例如降低或者提高日志的級別。
Filter可以在logger和handler中同時(shí)使用,而且多個(gè)filter會同時(shí)工作。

Formatter(格式化):定義了怎么顯示內(nèi)容,因?yàn)樽罱K的日志都會是以文本的形式展現(xiàn),formatter就是描述怎么來做這件事。formatter通常都是使用python格式化字符串的方法來對日志進(jìn)行格式化

最后看一個(gè)日志配置的例子:

logger.py:

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_LOG_DIR = os.path.join(BASE_DIR, "logs")


LOGGING = {
    "version": 1,  # 保留的參數(shù),默認(rèn)是1
    "disable_existing_loggers": False,  # 是否禁用已經(jīng)存在的logger實(shí)例
    # 日志輸出格式的定義
    "formatters": {
        "standard": {  # 標(biāo)準(zhǔn)的日志格式化
            "format": "%(levelname)s %(asctime)s %(module)s %(message)s"
        },
        "error": {     # 錯(cuò)誤日志輸出格式
            "format": "%(levelname)s %(asctime)s %(pathname)s %(module)s %(message)s"
        },
        "simple": {
            "format": "%(levelname)s %(asctime)s %(message)s"
        },
        "collect": {
            "format": "%(message)s"
        }
    },
    # 處理器:需要處理什么級別的日志及如何處理
    "handlers": {
        # 將日志打印到終端
        "console": {
            "level": "DEBUG",                  # 日志級別
            "class": "logging.StreamHandler",  # 使用什么類去處理日志流
            "formatter": "simple"              # 指定上面定義過的一種日志輸出格式
        },
        # 默認(rèn)日志處理器
        "default": {
            "level": "DEBUG",
            "class": "logging.handlers.RotatingFileHandler",  # 保存到文件,自動切
            "filename": os.path.join(BASE_LOG_DIR, "xx.log"),  # 日志文件路徑
            "maxBytes": 1024 * 1024 * 100,  # 日志大小 100M
            "backupCount": 5,  # 日志文件備份的數(shù)量
            "formatter": "standard",  # 日志輸出格式
            "encoding": "utf-8",
        },
        # 日志處理級別warn
        "warn": {
            "level": "WARN",
            "class": "logging.handlers.RotatingFileHandler",  # 保存到文件,自動切
            "filename": os.path.join(BASE_LOG_DIR, "warn.log"),  # 日志文件路徑
            "maxBytes": 1024 * 1024 * 100,  # 日志大小 100M
            "backupCount": 5,  # 日志文件備份的數(shù)量
            "formatter": "standard",  # 日志格式
            "encoding": "utf-8",
        },
        # 日志級別error
        "error": {
            "level": "ERROR",
            "class": "logging.handlers.RotatingFileHandler",  # 保存到文件,自動切
            "filename": os.path.join(BASE_LOG_DIR, "error.log"),  # 日志文件路徑
            "maxBytes": 1024 * 1024 * 100,  # 日志大小 100M
            "backupCount": 5,
            "formatter": "error",  # 日志格式
            "encoding": "utf-8",
        },
    },

    "loggers": {
        # 默認(rèn)的logger應(yīng)用如下配置
        "": {
            "handlers": ["default", "warn", "error"],
            "level": "DEBUG",
            "propagate": True,  # 如果有父級的logger示例,表示不要向上傳遞日志流
        },
        "collect": {
            "handlers": ["console", "default", "warn", "error"],
            "level": "INFO",
        }
    },
}

在settings.py中導(dǎo)入logger.py中的配置即可:

from logger.py import LOGGING

以上就是log日志配置的介紹,歡迎交流!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/42496.html

相關(guān)文章

  • django配置文件

    摘要:默認(rèn)的,及使用它的號數(shù)據(jù)庫此處使用號數(shù)據(jù)庫,在客戶端查看記得切換數(shù)據(jù)庫存儲在本機(jī)內(nèi)存中,比數(shù)據(jù)庫的方式讀寫快很多默認(rèn)的配置項(xiàng),采用號庫。狀態(tài)保持的配置項(xiàng),采用號庫。使用名為的配置項(xiàng)存儲數(shù)據(jù)。配置完成后運(yùn)行程序,測試結(jié)果。 1.配置開發(fā)環(huán)境當(dāng)進(jìn)入虛擬環(huán)境,通過django_admin創(chuàng)建一個(gè)項(xiàng)目后,會在項(xiàng)目同名目錄生成一個(gè)setting.py文件。而實(shí)際項(xiàng)目過程中會有不同的環(huán)境,如開發(fā)環(huán)境、生...

    番茄西紅柿 評論0 收藏0
  • django配置文件

    摘要:默認(rèn)的,及使用它的號數(shù)據(jù)庫此處使用號數(shù)據(jù)庫,在客戶端查看記得切換數(shù)據(jù)庫存儲在本機(jī)內(nèi)存中,比數(shù)據(jù)庫的方式讀寫快很多默認(rèn)的配置項(xiàng),采用號庫。狀態(tài)保持的配置項(xiàng),采用號庫。使用名為的配置項(xiàng)存儲數(shù)據(jù)。配置完成后運(yùn)行程序,測試結(jié)果。 1.配置開發(fā)環(huán)境當(dāng)進(jìn)入虛擬環(huán)境,通過django_admin創(chuàng)建一個(gè)項(xiàng)目后,會在項(xiàng)目同名目錄生成一個(gè)setting.py文件。而實(shí)際項(xiàng)目過程中會有不同的環(huán)境,如開發(fā)環(huán)境、生...

    williamwen1986 評論0 收藏0
  • Django搭建個(gè)人博客:日志記錄

    摘要:每一條日志記錄也包含級別,代表對應(yīng)消息的嚴(yán)重程度。即格式化器,主要功能是確定最終輸出的形式和內(nèi)容。最好是日志能夠按自然天進(jìn)行記錄和分割。 上一章學(xué)習(xí)了自動化測試,很好,現(xiàn)在我們可以絞盡腦汁寫出一份全面的測試,來保證代碼永遠(yuǎn)健康了。 話雖如此,但是作為一個(gè)獨(dú)立開發(fā)者很難寫出真正全面的測試代碼。這是因?yàn)橛脩粼谑褂媚愕木W(wǎng)站時(shí)可不會循規(guī)蹈矩,而是會以各種怪異的姿勢瀏覽網(wǎng)頁、上傳數(shù)據(jù)。但這也不是...

    Lowky 評論0 收藏0
  • 5分鐘教你學(xué)會Django系統(tǒng)錯(cuò)誤監(jiān)控

    摘要:一監(jiān)控所有的請求如何實(shí)現(xiàn)系統(tǒng)監(jiān)控,自動發(fā)送錯(cuò)誤日志的郵件呢只需配置配置文件即可。設(shè)置發(fā)送郵件配置信息郵件會發(fā)送到設(shè)定的郵件列表中。 showImg(https://segmentfault.com/img/remote/1460000015327475); 一、監(jiān)控所有的request請求 如何實(shí)現(xiàn)系統(tǒng)監(jiān)控,自動發(fā)送錯(cuò)誤日志的郵件呢? 只需配置配置settings文件即可。 1.設(shè)置發(fā)...

    Aldous 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<