成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

Barry_Ng / 1304人閱讀

摘要:下面介紹一下開(kāi)發(fā)中如何將日志輸出到文件中。錯(cuò)誤,表示出現(xiàn)了某種錯(cuò)誤。崩潰,出現(xiàn)了嚴(yán)重級(jí)別的錯(cuò)誤。如果日志的信息級(jí)別比的低,那么就會(huì)忽略這條日志。還運(yùn)行咱們?cè)谔幚碇靶薷娜罩?,例如降低或者提高日志的?jí)別。

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

首先看一下日志級(jí)別有哪些:

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

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

1.導(dǎo)入模塊 import logging
2.設(shè)置日志等級(jí) logging.basicConfig(level=logging.DEBUG)
3.獲取logger對(duì)象 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)記其最低記錄的等級(jí);當(dāng)一條日志給到logger時(shí),logger會(huì)對(duì)該條信息的級(jí)別與自身的級(jí)別進(jìn)行比較,如果該日志級(jí)別不低于本身級(jí)別,logger就會(huì)進(jìn)行下一步操作。如果日志的信息級(jí)別比logger的低,那么就會(huì)忽略這條日志。
當(dāng)logger經(jīng)過(guò)級(jí)別的比較之后決定要對(duì)某條日志進(jìn)行處理時(shí),就將該條日志交給了Handlers

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

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

Formatter(格式化):定義了怎么顯示內(nèi)容,因?yàn)樽罱K的日志都會(huì)是以文本的形式展現(xiàn),formatter就是描述怎么來(lái)做這件事。formatter通常都是使用python格式化字符串的方法來(lái)對(duì)日志進(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"
        }
    },
    # 處理器:需要處理什么級(jí)別的日志及如何處理
    "handlers": {
        # 將日志打印到終端
        "console": {
            "level": "DEBUG",                  # 日志級(jí)別
            "class": "logging.StreamHandler",  # 使用什么類去處理日志流
            "formatter": "simple"              # 指定上面定義過(guò)的一種日志輸出格式
        },
        # 默認(rèn)日志處理器
        "default": {
            "level": "DEBUG",
            "class": "logging.handlers.RotatingFileHandler",  # 保存到文件,自動(dòng)切
            "filename": os.path.join(BASE_LOG_DIR, "xx.log"),  # 日志文件路徑
            "maxBytes": 1024 * 1024 * 100,  # 日志大小 100M
            "backupCount": 5,  # 日志文件備份的數(shù)量
            "formatter": "standard",  # 日志輸出格式
            "encoding": "utf-8",
        },
        # 日志處理級(jí)別warn
        "warn": {
            "level": "WARN",
            "class": "logging.handlers.RotatingFileHandler",  # 保存到文件,自動(dòng)切
            "filename": os.path.join(BASE_LOG_DIR, "warn.log"),  # 日志文件路徑
            "maxBytes": 1024 * 1024 * 100,  # 日志大小 100M
            "backupCount": 5,  # 日志文件備份的數(shù)量
            "formatter": "standard",  # 日志格式
            "encoding": "utf-8",
        },
        # 日志級(jí)別error
        "error": {
            "level": "ERROR",
            "class": "logging.handlers.RotatingFileHandler",  # 保存到文件,自動(dòng)切
            "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,  # 如果有父級(jí)的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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42496.html

相關(guān)文章

  • django配置文件

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

    番茄西紅柿 評(píng)論0 收藏0
  • django配置文件

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

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

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

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

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

    Aldous 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<