欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python打印日志方法的使用教程(logging模塊)

 更新時(shí)間:2022年06月27日 11:23:25   作者:測(cè)試小白00  
Python標(biāo)準(zhǔn)庫(kù)自帶日志模塊logging,logging中涉及到4個(gè)核心組件,這些組件構(gòu)建了logging體系,下面這篇文章主要給大家介紹了關(guān)于python打印日志方法的使用教程,需要的朋友可以參考下

一、必備技能

1、logging模塊的使用

(1)5個(gè)日志等級(jí)/以及5個(gè)輸出日志的內(nèi)置函數(shù)

(2)日志收集器、日志輸出渠道的概念

(3)如何自定義日志收集器

(4)如何封裝自定義的日志收集器

二、logging

python的官方庫(kù),打印日志用的,無(wú)需安裝,使用時(shí)直接調(diào)用

1、logging的基本使用

1.1、日志的五個(gè)等級(jí)(DEBUG/INFO/WARNING/ERROR/CRITICAL)

(1)DEBUG:調(diào)試模式下的日志,只給程序員看的日志

(2)INFO:程序正常運(yùn)行的時(shí)候輸出的日志

(3)WARN/WARNING:警告信息,當(dāng)前程序還可以運(yùn)行,后面有可能出現(xiàn)問(wèn)題

(4)ERROR:程序執(zhí)行過(guò)程總的錯(cuò)誤信息

(5)CRITICAL:發(fā)生嚴(yán)重錯(cuò)誤,阻塞流程,程序可能無(wú)法繼續(xù)運(yùn)行

1.2、打印不同日志等級(jí)的方法:

(1)logging.debug("調(diào)試日志信息")

(2)logging.info("重要日志信息")

(3)logging.warning("警告日志信息")

(4)logging.error("錯(cuò)誤日志信息")

(5)logging.critical("致命日志信息")

1.3、日志收集器和日志輸出渠道:

        日志收集器:

                默認(rèn)收集器的名字為root,默認(rèn)收集等級(jí)為WARNING,通過(guò)如下步驟設(shè)置收集器的等級(jí)

                log = logging.getLogger() # 獲取日志收集器,默認(rèn)為root

                log.setLevel("等級(jí)")  # 等級(jí)必須大寫(xiě)

                logging.basicConfig(level=logging.DEBUG)  # 設(shè)置收集器的等級(jí)

        日志輸出渠道:

                默認(rèn)輸出等級(jí)為WARNING

                輸出渠道支持:輸出到文件夾和輸出到控制臺(tái)

Demo實(shí)例1——默認(rèn)WARNING等級(jí)

import logging
# 打印不同等級(jí)的日志(debug、info、warning、error、critical)
# 如下5條日志,只會(huì)打印WARNING等級(jí)以后的日志
logging.debug("這是一條debug級(jí)別的日志")
logging.info("這是一條info級(jí)別的日志")
logging.warning("這是一條warning級(jí)別的日志")
logging.error("這是一條error級(jí)別的日志")
logging.critical("這是一條critical級(jí)別的日志")

運(yùn)行結(jié)果 :(只會(huì)打印WARNING級(jí)別以上的日志)

WARNING:root:這是一條warning級(jí)別的日志
ERROR:root:這是一條error級(jí)別的日志
CRITICAL:root:這是一條critical級(jí)別的日志

Demo實(shí)例2——默認(rèn)的日志收集器

import logging
# # logging.basicConfig(level=logging.DEBUG) 設(shè)置日志級(jí)別
# 未指定name,默認(rèn)返回自帶的默認(rèn)的root收集器
# 默認(rèn)輸出WARN級(jí)別以上的等級(jí)日志
# 如果設(shè)置了WARNING以下的等級(jí),則輸出WARNING等級(jí)以上的日志
# 如果設(shè)置了WARNING以上的等級(jí),比如設(shè)置了ERROR,則輸出ERROR等級(jí)以上的日志
log = logging.getLogger()
# log.setLevel("DEBUG")
# log.setLevel("INFO")
# log.setLevel("WARNING")
log.setLevel("ERROR")
# log.setLevel("CRITICAL")
 
 
logging.debug("這是一條debug級(jí)別的日志")
logging.info("這是一條info級(jí)別的日志")
logging.warning("這是一條warning級(jí)別的日志")
logging.error("這是一條error級(jí)別的日志")
logging.critical("這是一條critical級(jí)別的日志")

 運(yùn)行結(jié)果:

ERROR:root:這是一條error級(jí)別的日志
CRITICAL:root:這是一條critical級(jí)別的日志

2、自定義日志收集器

2.1、創(chuàng)建日志收集器

      log = logging.getLogger(name="rose_logger")

        不傳name參數(shù)時(shí),默認(rèn)返回收集器名字為“root”

        傳了name參數(shù)時(shí),會(huì)創(chuàng)建一個(gè)新的日志收集器

2.2、創(chuàng)建日志收集渠道

(1)輸出到控制臺(tái):

        pycharm = logging.StreamHandler()

(2)輸出到文件:    

        file = logging.FileHandler(os.getcwd()+r"\rose.log",encoding="utf-8")

        file=handlers.TimedRotatingFileHandler(filename="test.log",when="D",interval=1,backupCount=10,encoding="utf-8")

        注意點(diǎn)(參數(shù)):

        filename, 日志的文件名稱(chēng)(包含路徑)

        when= 'h', 日志的切割單位

        # S - Seconds 秒

        # M - Minutes 分鐘

        # H - Hours 小時(shí)

        # D - Days 天(24小時(shí))

        # midnight - roll over at midnight 日切

        # W{0-6} - roll over on a certain day; 0 - Monday 周

        interval=1, 滾動(dòng)周期,與when='h'連動(dòng),1-表示以時(shí)間為周期

        backupCount=0 保留日志文件的個(gè)數(shù),設(shè)置為10,永遠(yuǎn)只保存最近的10個(gè)文件

2.3、創(chuàng)建日志的輸出格式 (1)創(chuàng)建日志格式對(duì)象

        pycharm_fmt = logging.Formatter(fmt=fmt1)

(2)將日志輸出格式綁定到日志輸出渠道

        pycharm.setFormatter(fmt=pycharm_fmt)  ——設(shè)置到控制臺(tái)日志渠道

        file.setFormatter(fmt=pycharm_fmt1)——設(shè)置到文件日志渠道

(3)常用的格式模板(也可以自己定義)

        fmt1 = "%(asctime)s - [%(funcName)s-->line:%(lineno)d] - %(levelname)s:%(message)s"

        fmt2 = '[%(asctime)s-%(name)s-%(levelname)s-%(filename)s-%(lineno)d]:%(message)s'

(4)格式必須按照指定的格式格式化。常用的如下:

        %(asctime)s——當(dāng)前時(shí)間

        %(funcName)s——模塊名

        %(lineno)d——行號(hào)

        %(levelname)s——日志等級(jí)名稱(chēng)

         %(message)s——具體的日志內(nèi)容 

   Demo實(shí)例3——自定義日志收集器和日志格式

import logging,os
from logging import handlers
# 1、創(chuàng)建日志收集器
log = logging.getLogger(name="rose_logger")
 
# 2、創(chuàng)建日志收集渠道
# 輸出控制臺(tái)
pycharm = logging.StreamHandler()
# 輸出文件夾
file = logging.FileHandler(os.getcwd()+r"\rose.log",encoding="utf-8")
# file = handlers.TimedRotatingFileHandler(filename="test.log",when="D",interval=1,backupCount=10,encoding="utf-8")
 
# 3、創(chuàng)建日志的輸出格式
fmt1 = "%(asctime)s - [%(funcName)s-->line:%(lineno)d] - %(levelname)s:%(message)s"
# 創(chuàng)建一個(gè)日志輸出對(duì)象
pycharm_fmt = logging.Formatter(fmt=fmt1)
fmt2 = '[%(asctime)s-%(name)s-%(levelname)s-%(filename)s-%(lineno)d]:%(message)s'
pycharm_fmt1 = logging.Formatter(fmt=fmt2)
 
# 4、日志輸出格式綁定到日志輸出渠道
pycharm.setFormatter(fmt=pycharm_fmt)
file.setFormatter(fmt=pycharm_fmt1)
 
# 5、直接給收集器設(shè)置日志級(jí)別就可以了,渠道會(huì)繼承收集器的日志級(jí)別
log.setLevel(level=logging.DEBUG)
# 5、給收集渠道設(shè)置日志級(jí)別,文件渠道,控制臺(tái)輸出的級(jí)別不會(huì)一樣
# pycharm.setLevel(logging.DEBUG)
 
# 6、將日志收集渠道綁定到日志收集器
log.addHandler(pycharm)
log.addHandler(file)
 
log.info(msg="測(cè)試")

輸出結(jié)果:

Demo實(shí)例4——封裝自定義日志收集器

import logging
from logging import handlers
def create_log(name,level,filename,sh_level,fh_level):
    """
    :param name:  日志收集器名字
    :param level: 日志收集器的等級(jí)
    :param filename:  日志文件的名稱(chēng)
    :param sh_level:  控制臺(tái)輸出日志的等級(jí)
    :param fh_level:    文件輸出日志的等級(jí)
    :return: 返回創(chuàng)建好的日志收集器
    """
 
    # 1、創(chuàng)建日志收集器
    log = logging.getLogger(name)
 
    # 2、創(chuàng)建日志收集器的等級(jí)
    log.setLevel(level=level)
 
    # 3、創(chuàng)建日志收集渠道和等級(jí)
    sh = logging.StreamHandler()
    sh.setLevel(level=sh_level)
    log.addHandler(sh)
    fh = logging.FileHandler(filename=filename,encoding="utf-8")
    # fh1 = handlers.TimedRotatingFileHandler(filename=filename,when="D",interval=1,backupCount=10,encoding="utf-8")
    fh.setLevel(level=fh_level)
    log.addHandler(fh)
 
    # 4、設(shè)置日志的輸出格式
    formats = "%(asctime)s - [%(funcName)s-->line:%(lineno)d] - %(levelname)s:%(message)s"
    log_format = logging.Formatter(fmt=formats)
    sh.setFormatter(log_format)
    fh.setFormatter(log_format)
    return log
 
if __name__ == '__main__':
    log = create_log(name="rose_log",level=logging.DEBUG,filename="test_log.log",sh_level=logging.DEBUG,fh_level=logging.DEBUG)
    log.info(msg="--------debug--------")
    log.info(msg="--------info--------")
    log.info(msg="--------warning--------")
    log.info(msg="--------error--------")
    log.info(msg="--------critical--------")

輸出結(jié)果:

總結(jié)

到此這篇關(guān)于python打印日志方法使用的文章就介紹到這了,更多相關(guān)python打印日志方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 對(duì)pandas中to_dict的用法詳解

    對(duì)pandas中to_dict的用法詳解

    今天小編就為大家分享一篇對(duì)pandas中to_dict的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Python 3 使用Pillow生成漂亮的分形樹(shù)圖片

    Python 3 使用Pillow生成漂亮的分形樹(shù)圖片

    這篇文章主要介紹了Python 3 使用Pillow生成漂亮的分形樹(shù)圖片,本文通過(guò)實(shí)例代碼介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • python程序調(diào)用遠(yuǎn)程服務(wù)的步驟詳解

    python程序調(diào)用遠(yuǎn)程服務(wù)的步驟詳解

    這篇文章主要介紹了python程序調(diào)用遠(yuǎn)程服務(wù)的步驟詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-03-03
  • 如何利用Python將html轉(zhuǎn)為pdf、word文件

    如何利用Python將html轉(zhuǎn)為pdf、word文件

    網(wǎng)絡(luò)上存在很多將HTML轉(zhuǎn)換為PDF的軟件和工具,但是大家都知道收費(fèi),所以下面這篇文章主要給大家介紹了關(guān)于如何利用Python將html轉(zhuǎn)為pdf、word文件的相關(guān)資料,文中通過(guò)示例代碼介紹介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • python將matplotlib嵌入到tkinter中的步驟詳解

    python將matplotlib嵌入到tkinter中的步驟詳解

    tkinter是Python標(biāo)準(zhǔn)庫(kù)中自帶的GUI工具,使用十分方便,如能將matplotlib嵌入到tkinter中,就可以做出相對(duì)專(zhuān)業(yè)的數(shù)據(jù)展示系統(tǒng),很有競(jìng)爭(zhēng)力,本文就給大家介紹python將matplotlib嵌入到tkinter中的方法步驟,需要的朋友可以參考下
    2023-08-08
  • 用Python配平化學(xué)方程式的方法

    用Python配平化學(xué)方程式的方法

    在本篇文章中小編給大家整理的是關(guān)于用Python配平化學(xué)方程式的方法以及相關(guān)注意知識(shí)點(diǎn),需要的朋友們參考學(xué)習(xí)下。
    2019-07-07
  • 粗略分析Python中的內(nèi)存泄漏

    粗略分析Python中的內(nèi)存泄漏

    這篇文章主要介紹了粗略分析Python中的內(nèi)存泄漏,分析了包括在垃圾回收時(shí)產(chǎn)生等的原因,需要的朋友可以參考下
    2015-04-04
  • Python使用metaclass實(shí)現(xiàn)Singleton模式的方法

    Python使用metaclass實(shí)現(xiàn)Singleton模式的方法

    這篇文章主要介紹了Python使用metaclass實(shí)現(xiàn)Singleton模式的方法,實(shí)例分析了Python基于metaclass實(shí)現(xiàn)單例模式的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05
  • Python使用列表和字典實(shí)現(xiàn)簡(jiǎn)單的考試系統(tǒng)詳解

    Python使用列表和字典實(shí)現(xiàn)簡(jiǎn)單的考試系統(tǒng)詳解

    這篇文章主要介紹了Python使用列表和字典實(shí)現(xiàn)簡(jiǎn)單的考試系統(tǒng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • Python使用matplotlib的pie函數(shù)繪制餅狀圖功能示例

    Python使用matplotlib的pie函數(shù)繪制餅狀圖功能示例

    這篇文章主要介紹了Python使用matplotlib的pie函數(shù)繪制餅狀圖功能,結(jié)合實(shí)例形式分析了Python使用matplotlib的pie函數(shù)進(jìn)行餅狀圖繪制的具體操作技巧,注釋中對(duì)pie函數(shù)的用法進(jìn)行了詳細(xì)的說(shuō)明,便于理解,需要的朋友可以參考下
    2018-01-01

最新評(píng)論