中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python打印日志實例分析

發布時間:2022-07-04 10:09:28 來源:億速云 閱讀:193 作者:iii 欄目:開發技術

這篇“python打印日志實例分析”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“python打印日志實例分析”文章吧。

    一、必備技能

    1、logging模塊的使用

    (1)5個日志等級/以及5個輸出日志的內置函數

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

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

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

    二、logging

    python的官方庫,打印日志用的,無需安裝,使用時直接調用

    1、logging的基本使用

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

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

    (2)INFO:程序正常運行的時候輸出的日志

    (3)WARN/WARNING:警告信息,當前程序還可以運行,后面有可能出現問題

    (4)ERROR:程序執行過程總的錯誤信息

    (5)CRITICAL:發生嚴重錯誤,阻塞流程,程序可能無法繼續運行

    1.2、打印不同日志等級的方法:

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

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

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

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

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

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

            日志收集器:

                    默認收集器的名字為root,默認收集等級為WARNING,通過如下步驟設置收集器的等級

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

                    log.setLevel("等級")  # 等級必須大寫

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

            日志輸出渠道:

                    默認輸出等級為WARNING

                    輸出渠道支持:輸出到文件夾和輸出到控制臺

    Demo實例1——默認WARNING等級

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

    運行結果 :(只會打印WARNING級別以上的日志)

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

    Demo實例2——默認的日志收集器

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

     運行結果:

    ERROR:root:這是一條error級別的日志
    CRITICAL:root:這是一條critical級別的日志

    2、自定義日志收集器

    2.1、創建日志收集器

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

            不傳name參數時,默認返回收集器名字為“root”

            傳了name參數時,會創建一個新的日志收集器

    2.2、創建日志收集渠道

    (1)輸出到控制臺:

            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")

            注意點(參數):

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

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

            # S - Seconds 秒

            # M - Minutes 分鐘

            # H - Hours 小時

            # D - Days 天(24小時)

            # midnight - roll over at midnight 日切

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

            interval=1, 滾動周期,與when='h'連動,1-表示以時間為周期

            backupCount=0 保留日志文件的個數,設置為10,永遠只保存最近的10個文件

    2.3、創建日志的輸出格式 (1)創建日志格式對象

            pycharm_fmt = logging.Formatter(fmt=fmt1)

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

            pycharm.setFormatter(fmt=pycharm_fmt)  ——設置到控制臺日志渠道

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

    (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——當前時間

            %(funcName)s——模塊名

            %(lineno)d——行號

            %(levelname)s——日志等級名稱

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

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

    import logging,os
    from logging import handlers
    # 1、創建日志收集器
    log = logging.getLogger(name="rose_logger")
     
    # 2、創建日志收集渠道
    # 輸出控制臺
    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、創建日志的輸出格式
    fmt1 = "%(asctime)s - [%(funcName)s-->line:%(lineno)d] - %(levelname)s:%(message)s"
    # 創建一個日志輸出對象
    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、直接給收集器設置日志級別就可以了,渠道會繼承收集器的日志級別
    log.setLevel(level=logging.DEBUG)
    # 5、給收集渠道設置日志級別,文件渠道,控制臺輸出的級別不會一樣
    # pycharm.setLevel(logging.DEBUG)
     
    # 6、將日志收集渠道綁定到日志收集器
    log.addHandler(pycharm)
    log.addHandler(file)
     
    log.info(msg="測試")

    輸出結果:

    python打印日志實例分析

    Demo實例4——封裝自定義日志收集器

    import logging
    from logging import handlers
    def create_log(name,level,filename,sh_level,fh_level):
        """
        :param name:  日志收集器名字
        :param level: 日志收集器的等級
        :param filename:  日志文件的名稱
        :param sh_level:  控制臺輸出日志的等級
        :param fh_level:    文件輸出日志的等級
        :return: 返回創建好的日志收集器
        """
     
        # 1、創建日志收集器
        log = logging.getLogger(name)
     
        # 2、創建日志收集器的等級
        log.setLevel(level=level)
     
        # 3、創建日志收集渠道和等級
        sh = logging.StreamHandler()
        sh.setLevel(level=sh_level)
        log.addHandler(sh)
        fh = logging.FileHandler(filename=filename,encoding="utf-8")
        # fh2 = handlers.TimedRotatingFileHandler(filename=filename,when="D",interval=1,backupCount=10,encoding="utf-8")
        fh.setLevel(level=fh_level)
        log.addHandler(fh)
     
        # 4、設置日志的輸出格式
        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--------")

    輸出結果:

    python打印日志實例分析

    以上就是關于“python打印日志實例分析”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    昌图县| 鄂托克前旗| 绥江县| 庐江县| 沾化县| 平顶山市| 利津县| 托克托县| 浮山县| 江孜县| 泰安市| 高阳县| 当阳市| 满城县| 巴南区| 巨鹿县| 罗田县| 抚宁县| 普陀区| 兴文县| 博客| 金华市| 习水县| 嘉义市| 余姚市| 方城县| 水富县| 洪雅县| 色达县| 呼图壁县| 七台河市| 新兴县| 宜都市| 汝州市| 南安市| 沈阳市| 龙胜| 广安市| 南乐县| 洛南县| 云和县|