最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python logging模塊原理解析及應(yīng)用

 更新時(shí)間:2020年08月13日 10:35:05   作者:Maruying  
這篇文章主要介紹了Python logging模塊原理解析及應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一、logging日志模塊等級(jí)

常見(jiàn)log級(jí)別從高到低:

CRITICAL 》ERROR 》WARNING 》INFO 》DEBUG,默認(rèn)等級(jí)為WARNING,即>=WARNING級(jí)別的log才輸出。

日志等級(jí)(level) 描述
CRITICAL 當(dāng)發(fā)生嚴(yán)重錯(cuò)誤,導(dǎo)致應(yīng)用程序不能繼續(xù)運(yùn)行時(shí)記錄的信息
ERROR 由于一個(gè)更嚴(yán)重的問(wèn)題導(dǎo)致某些功能不能正常運(yùn)行時(shí)記錄的信息
WARNING 當(dāng)某些不期望的事情發(fā)生時(shí)記錄的信息(如,磁盤可用空間較低),但是此時(shí)應(yīng)用程序還是正常運(yùn)行的
INFO 信息詳細(xì)程度僅次于DEBUG,通常只記錄關(guān)鍵節(jié)點(diǎn)信息,用于確認(rèn)一切都是按照我們預(yù)期的那樣進(jìn)行工作
DEBUG 最詳細(xì)的日志信息,典型應(yīng)用場(chǎng)景是 問(wèn)題診斷

二、logging模塊的使用方式介紹

logging模塊提供了兩種記錄日志的方式:

  • 第一種方式是使用logging提供的模塊級(jí)別的函數(shù)
  • 第二種方式是使用Logging日志系統(tǒng)的四大組件

其實(shí),logging所提供的模塊級(jí)別的日志記錄函數(shù)也是對(duì)logging日志系統(tǒng)相關(guān)類的封裝而已。

(1)logging模塊定義的模塊級(jí)別的常用函數(shù)

函數(shù) 說(shuō)明
logging.debug(msg, *args, **kwargs) 創(chuàng)建一條嚴(yán)重級(jí)別為DEBUG的日志記錄
logging.info(msg, *args, **kwargs) 創(chuàng)建一條嚴(yán)重級(jí)別為INFO的日志記錄
logging.warning(msg, *args, **kwargs) 創(chuàng)建一條嚴(yán)重級(jí)別為WARNING的日志記錄
logging.error(msg, *args, **kwargs) 創(chuàng)建一條嚴(yán)重級(jí)別為ERROR的日志記錄
logging.critical(msg, *args, **kwargs) 創(chuàng)建一條嚴(yán)重級(jí)別為CRITICAL的日志記錄
logging.log(level, *args, **kwargs) 創(chuàng)建一條嚴(yán)重級(jí)別為level的日志記錄
logging.basicConfig(**kwargs) 對(duì)root logger進(jìn)行一次性配置

其中l(wèi)ogging.basicConfig(**kwargs)函數(shù)用于指定“要記錄的日志級(jí)別”、“日志格式”、“日志輸出位置”、“日志文件的打開模式”等信息,其他幾個(gè)都是用于記錄各個(gè)級(jí)別日志的函數(shù)。

(2)logging模塊的四大組件

組件 說(shuō)明
loggers 提供應(yīng)用程序代碼直接使用的接口
handlers 用于將日志記錄發(fā)送到指定的目的位置
filters 提供更細(xì)粒度的日志過(guò)濾功能,用于決定哪些日志記錄將會(huì)被輸出(其它的日志記錄將會(huì)被忽略)
formatters 用于控制日志信息的最終輸出格式

三、自定義Logger模塊類

# testLog1.py

import logging
import time

class Logger():

  def __init__(self, logger, level=logging.DEBUG):
    '''     : 自定義Logger模塊類
    : logger: logger名
    : level: 日志級(jí)別
    '''

    # 創(chuàng)建一個(gè)logger
    self.logger = logging.getLogger(logger)
    self.logger.setLevel(level)

    # 定義handler的輸出格式
    curr_time = time.strftime("%Y-%m-%d")
    self.LogFileName = 'log' + curr_time + '.txt'
    fmt = logging.Formatter('%(asctime)s - %(filename)s:[%(lineno)s] - [%(levelname)s] - %(message)s')

    # asctime: 日志事件發(fā)生的時(shí)間
    # filename: 源文件的名稱部分,包含文件后綴
    # lineno: 調(diào)用日志記錄函數(shù)的源代碼所在的行號(hào)
    # evelname: 該日志記錄的文字形式的日志級(jí)別
    # message: 日志記錄的文本內(nèi)容

    # 創(chuàng)建一個(gè)handler, 用于寫入日志文件
    fh = logging.FileHandler(self.LogFileName)
    fh.setLevel(logging.DEBUG)
    fh.setFormatter(fmt)

    # 再創(chuàng)建一個(gè)handler,用于輸出到控制臺(tái)
    ch = logging.StreamHandler()
    ch.setLevel(logging.DEBUG)
    ch.setFormatter(fmt)

    # 給logger添加handler
    self.logger.addHandler(fh)
    self.logger.addHandler(ch)

    # level優(yōu)先級(jí)
    # logger.setLevel > handler.setLevel > logging.basicConfig

if __name__ == "__main__":
  log = Logger(__name__, level=logging.DEBUG)
  log.logger.debug('debug')
  log.logger.log(logging.DEBUG, 'debug')# 執(zhí)行testLog1.py,則控制臺(tái)輸出如下:2020-08-03 20:36:47,104 - testLog1.py:[117] - [DEBUG] - debug2020-08-03 20:36:47,104 - testLog1.py:[118] - [DEBUG] - debug# 日志文件記錄如下:2020-08-03 20:36:15,982 - testLog1.py:[117] - [DEBUG] - debug2020-08-03 20:36:15,982 - testLog1.py:[118] - [DEBUG] - debug
# testLog2.py

from testLog1 import Logger
import traceback

log = Logger(__name__)
def func():
  try:
    assert 1==2
  except Exception:
    log.logger.info('測(cè)試失敗,輸出信息如下:{}'.format(traceback.format_exc()))    # traceback.format_exc() 會(huì)返回異常信息的字符串

if __name__ == "__main__":
  func()# 執(zhí)行testLog2.py,則控制臺(tái)輸出如下:2020-08-03 20:43:44,907 - testLog2.py:[11] - [INFO] - 測(cè)試失敗,輸出信息如下:Traceback (most recent call last):  File "E:/imooc/testLog.py", line 9, in func    assert 1==2AssertionError# 日志文件記錄如下:2020-08-03 20:43:44,907 - testLog2.py:[11] - [INFO] - 測(cè)試失敗,輸出信息如下:Traceback (most recent call last):  File "E:/imooc/testLog.py", line 9, in func    assert 1==2AssertionError

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Union在Python類型注解中的應(yīng)用與最佳實(shí)踐

    Union在Python類型注解中的應(yīng)用與最佳實(shí)踐

    Union” 在中文中通常翻譯為“聯(lián)合”,在數(shù)學(xué)和邏輯學(xué)中,它指的是兩個(gè)或多個(gè)集合的并集,在 Python 的類型注解中,Union 類型表示一個(gè)變量可以是多種類型中的任意一種,這與數(shù)學(xué)中的并集概念相似,本文介紹了Union在Python類型注解中的應(yīng)用與最佳實(shí)踐
    2024-09-09
  • Pyecharts可視化圖片渲染的方法詳解

    Pyecharts可視化圖片渲染的方法詳解

    使用 pyecharts 渲染成圖片一直是開發(fā)者比較關(guān)心的功能,pyecharts提供了selenium、phantomjs和pyppeteer 三種方式。本文將具體介紹一下這三種方式的使用,需要的可以參考一下
    2022-02-02
  • 基于Python實(shí)現(xiàn)的影視數(shù)據(jù)智能分析系統(tǒng)

    基于Python實(shí)現(xiàn)的影視數(shù)據(jù)智能分析系統(tǒng)

    數(shù)據(jù)分析與可視化是當(dāng)今數(shù)據(jù)分析的發(fā)展方向,大數(shù)據(jù)時(shí)代,數(shù)據(jù)資源具有海量特征,數(shù)據(jù)分析和可視化主要通過(guò)Python數(shù)據(jù)分析來(lái)實(shí)現(xiàn),本文給大家介紹了如何基于Python實(shí)現(xiàn)的影視數(shù)據(jù)智能分析系統(tǒng),文中給出了部分詳細(xì)代碼,感興趣的朋友跟著小編一起來(lái)看看吧
    2024-01-01
  • 用代碼幫你了解Python基礎(chǔ)(1)

    用代碼幫你了解Python基礎(chǔ)(1)

    這篇文章主要用代碼幫你了解Python基礎(chǔ),使用數(shù)據(jù)類型和變量以及字符串和格式化的示例代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 詳解python列表(list)的使用技巧及高級(jí)操作

    詳解python列表(list)的使用技巧及高級(jí)操作

    這篇文章主要介紹了詳解python列表(list)的使用技巧及高級(jí)操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python數(shù)據(jù)結(jié)構(gòu)之圖的應(yīng)用示例

    Python數(shù)據(jù)結(jié)構(gòu)之圖的應(yīng)用示例

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)之圖的應(yīng)用,結(jié)合實(shí)例形式分析了Python數(shù)據(jù)結(jié)構(gòu)中圖的定義與遍歷算法相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • Python3中常見(jiàn)配置文件寫法匯總

    Python3中常見(jiàn)配置文件寫法匯總

    在開發(fā)過(guò)程中,我們會(huì)用到一些固定參數(shù)或者是常量。對(duì)于這些較為固定且常用到的部分,往往會(huì)將其寫到一個(gè)固定文件中,這些文件就是配置文件。本文為大家匯總了Python3中常見(jiàn)配置文件的寫法,感興趣的可以了解一下
    2022-08-08
  • 基于TensorFlow常量、序列以及隨機(jī)值生成實(shí)例

    基于TensorFlow常量、序列以及隨機(jī)值生成實(shí)例

    今天小編就為大家分享一篇基于TensorFlow常量、序列以及隨機(jī)值生成實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • opencv-python的RGB與BGR互轉(zhuǎn)方式

    opencv-python的RGB與BGR互轉(zhuǎn)方式

    這篇文章主要介紹了opencv-python的RGB與BGR互轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所 幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06

最新評(píng)論

青岛市| 张家港市| 丹寨县| 海口市| 南城县| 巧家县| 十堰市| 桓仁| 锡林浩特市| 西乌珠穆沁旗| 海丰县| 霍城县| 和政县| 鞍山市| 佛教| 阆中市| 无极县| 景泰县| 上饶县| 彩票| 德阳市| 浠水县| 昆山市| 武平县| 太保市| 嵩明县| 遵化市| 乌拉特前旗| 瓮安县| 页游| 四会市| 义乌市| 荥阳市| 磐石市| 禹城市| 宁强县| 中山市| 奇台县| 娱乐| 巴林右旗| 龙海市|