日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

优雅地记录Python程序日志2:模块组件化日志记录器

發(fā)布時間:2023/12/15 python 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 优雅地记录Python程序日志2:模块组件化日志记录器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文摘自:https://zhuanlan.zhihu.com/p/32043593

本篇將會涉及:

  • logging的各個模塊化組件
  • 構建一個組件化的日志器

logging的模塊組件化

在上一篇文章中,我們介紹了Python的內置模塊logging的使用,通過短短的幾行代碼我們就實現了一個日志記錄器。。

import logginglogging.basicConfig(level=logging.INFO,filename='test.log',format="%(levelname)s:%(asctime)s:%(message)s") logging.error("出現了錯誤") logging.info("打印信息") logging.warning("警告信息")

在上面的例子中我們直接使用了logging模塊提供的簡單日志記錄器。除此之外,logging模塊還提供了模塊化的方法,通過日志記錄器、日志處理器、過濾器和格式處理器等組件來靈活的配置日志器:

  • 日志記錄器Loggers提供程序調用日志記錄的接口;
  • 日志處理器Handlers用于將日志記錄器創(chuàng)建的日志記錄發(fā)送到相應的目標上;
  • 過濾器Filters提供了對日志記錄進行更詳細的輸出;
  • 格式器Formatters用于指定輸出的日志記錄的最終格式;

在前面的例子中我們知道,一條日志記錄是通過調用一個日志記錄器(Logger類的實例)的方法來執(zhí)行的。每一個日志記錄器都有一個name來標識這個日志記錄器,比如上一篇文章中我們創(chuàng)建的日志記錄起的name就是默認的root。

?

日志記錄器

通過logging的getLogger()方法,我們可以創(chuàng)建一個日志記錄器,并指定其名稱:

log = logging.getLogger("test_logger")

這樣我們就實例化了一個名為test_logger的日志記錄器。這個日志記錄器除了包含一些基本的功能,比如調用各級別的日志方法外,還能夠添加日志處理器、過濾器等。

日志處理器

日志處理器Handlers負責將相應的日志記錄消息分發(fā)到指定的目標上。在logging模塊中,有很多種日志處理器用于不同的用途,下面介紹幾個常用的:

  • StreamHandler:用于將日志消息發(fā)送到控制臺;
  • FileHandler:用于將日志消息寫入文件中;
  • SMTPHandler:用于將日志消息發(fā)送到指定的電子郵箱;
  • HTTPHandler:使用GET或POST方法將日志消息發(fā)送給某個HTTP服務器;

其中我們最常使用的,還是FileHandler處理器,將日志消息寫入文件中。
使用logging.FileHandler()可以創(chuàng)建一個FileHandler處理器處理器:

logHandler = logging.FileHandler(filename='log.log')

我們在此創(chuàng)建了一個FileHandler處理器,并指定日志的文件名為log.log。

在創(chuàng)建日志處理器之后,可以通過日志記錄器的addHandler()方法,將處理器添加到記錄器中。

log.addHandler(logHandler)

日志格式器

在上一篇文章中,我們通過logging.basicConfig()的format參數來指定輸出日志消息的格式。而在模塊組件化中,我們使用logging.Formatter()方法來創(chuàng)建一個日志格式器。

formats = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s: %(message)s',datefmt='%Y/%m/%d %I:%M:%S %p')

在創(chuàng)建之后,可以通過日志處理器的setFormatter()方法,將日志格式器添加到日志處理器中:

logHandler.setFormatter(formats)

這樣,我們就基本組裝好了一個模塊化的日志器。接著就能夠在程序中調用日志記錄器的方法來記錄日志:

import loggingdef mylog():print(inspect.stack()[0])# 創(chuàng)建一個日志記錄器log = logging.getLogger("test_logger")log.setLevel(logging.DEBUG)# 創(chuàng)建一個日志處理器logHandler = logging.FileHandler(filename='log.log')logHandler.setLevel(logging.DEBUG)# 創(chuàng)建一個日志格式器formats = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s: %(message)s',datefmt='%Y/%m/%d %I:%M:%S %p')# 將日志格式器添加到日志處理器中l(wèi)ogHandler.setFormatter(formats)# 將日志處理器添加到日志記錄器中l(wèi)og.addHandler(logHandler)return log# 輸出日志 log = mylog() log.info("這是一個普通信息") log.debug("這是一個調試信息") log.warning("這是一個警告信息") log.error("這是一個錯誤信息") log.critical("這是一個危險信息")

運行程序的結果如下:

轉載于:https://www.cnblogs.com/GavinSimons/p/9143386.html

總結

以上是生活随笔為你收集整理的优雅地记录Python程序日志2:模块组件化日志记录器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。