python之logging日誌(二)

2022-05-15 19:43:34 字數 2112 閱讀 2964

日誌封裝

1、封裝日誌函式(主要)

1)封裝:將**裝在乙個盒子裡面,盒子的形式有函式、類。即將**邏輯封裝成函式或者類,然後再呼叫函式和類

2)日誌函式的封裝:

a、def get_logger(name,logger_level,stream_handler_level,fmt_str,file,file_handler_level)返回值為logger(收集器)

name:收集器的名稱,logger_level:收集器日誌等級,stream_handler_level:流處理器等級,fmt_str:日誌格式化字串,file:日誌輸出檔案,在函式裡面需要判斷是否存在file,存在file的情況下才能獲取檔案處理器,file_hanler_level

b、因為需要傳入的引數比較多,呼叫的時候還是很麻煩,所以定義函式的時候引數都給預設值,這樣呼叫的時候即使不傳入引數也能用

def get_logger(name="root",

logger_level="debug",

stream_handler_level="debug",

fmt_str="%(asctime)s:%(levelname)s:%(name)s:%(message)s----%(filename)s----%(lineno)d",

file=none,

file_handler_level="info")

因為在控制台需要輸出debug的日誌,需要除錯,而檔案中無需輸出debug的日誌,故設定日誌等級為info

c、日誌格式必須需要新增:

1)%(levelname)s:日誌等級名稱

2)%(name)s:收集器的名稱

3)%(message)s:日誌內容資訊

4)%(asctime)s:日誌輸出時間, 預設形式為 '2003-07-08 16:49:45,896' (逗號之後的數字為時間的毫秒部分)。

5)%(filename)s:日誌列印的py檔名稱(pathname的檔名部分)。

6)%(lineno)d:發出日誌記錄呼叫所在的源行號。

2、類封裝

使用繼承logging.logger來封裝

class logger(logging.logger):  # 因為繼承了logging.logger,所以當建立logger的時候自己本身就是收集器了

def __init__(self,

name="root",

logger_level="debug",

stream_handler_level="debug",

fmt_str="%(asctime)s:%(levelname)s:%(name)s:%(message)s----%(filename)s----%(lineno)d",

file=none,

file_handler_level="info"):

super().__init__(name,logger_level)  # 呼叫父類__init__,相當於logging.getlogger(name)+logger.setlevel(logger_level) ,

# 因為繼承了logging.logger類,它本身就是收集器了,只需要傳入name和logger_level進行初始化設定  

# 設定日誌格式

fmt = logging.formatter(fmt_str)

# 獲取處理器並設定日誌等級以及日誌格式,並新增到收集器

handler = logging.streamhandler()

handler.setlevel(stream_handler_level) 

handler.setformatter(fmt)

# 新增處理器到收集器

self.addhandler(handler )

# 獲取檔案處理器並設定日誌等級以及日誌格式

if file:

file_handler = logging.filehandler(file, encoding="utf-8")

file_handler.setlevel(file_handler_level)

file_handler.setformatter(fmt)

self.addhandler(file_handler)

Python模組 logging模組列印日誌

python模組 logging 一 簡單日誌列印 直接使用logging模組,列印日誌到螢幕 預設輸出日誌的格式 日誌級別 logger名稱 使用者輸出訊息 預設的日誌級別設定為warning,logging模組將日誌列印到標準輸出中,且只顯示大於等於warning級別的日誌 日誌級別等級crit...

使用python內建模組logging日誌處理

import logging from logging import handlers ch logging.filehandler 自定義日誌檔案路徑名 encoding utf 8 utf 8是為了解決日誌檔案中的亂碼.常用於自己練習,正式開發用下面的方式。sh logging.streamha...

Python 模組之logging日誌

logging模組是pyhton自帶的內建模組,提供了標準的日誌介面 日誌等級列表 日誌等級 level 描述級別 notset 不設定0 debug 最詳細的日誌資訊,典型應用場景是 問題診斷 10info 資訊詳細程度僅次於debug,通常只記錄關鍵節點資訊,用於確認一切都是按照我們預期的那樣進...