日誌封裝
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,通常只記錄關鍵節點資訊,用於確認一切都是按照我們預期的那樣進...