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

歡迎訪問 生活随笔!

生活随笔

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

python

Python之日志处理(logging模块)详解

發(fā)布時間:2025/3/15 python 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python之日志处理(logging模块)详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

logging模塊簡介

logging模塊是Python內置的標準模塊,主要用于輸出運行日志,可以設置輸出日志的等級、日志保存路徑、日志文件回滾等;相比print,具備如下優(yōu)點

1、可以通過設置不同的日志等級,在release版本中只輸出重要信息,而不必顯示大量的調試信息

2、print將所有信息都輸出到標準輸出中,嚴重影響開發(fā)者從標準輸出中查看其它數據;logging則可以由開發(fā)者決定將信息輸出到什么地方,以及怎么輸出

日志等級(level)

DEBUG < INFO < WARNING < ERROR < CRITICAL

DEBUG?最詳細的日志信息,典型應用場景是 問題診斷

INFO?信息詳細程度僅次于DEBUG,通常只記錄關鍵節(jié)點信息,用于確認一切都是按照我們預期的那樣進行工作

WARNING?當某些不期望的事情發(fā)生時記錄的信息(如,磁盤可用空間較低),但是此時應用程序還是正常運行的

ERROR?由于一個更嚴重的問題導致某些功能不能正常運行時記錄的信息

CRITICAL?當發(fā)生嚴重錯誤,導致應用程序不能繼續(xù)運行時記錄的信息

logging模塊可以指定日志記錄器的日志級別,只有級別大于或等于該指定日志級別的日志記錄才會被輸出,小于該等級的日志記錄將會被丟棄

logger

logger:日志對象,logging模塊中最基礎的對象,用logging.getLogger(name)方法進行初始化,name可以不填。通常logger的名字我們對應模塊名,如聊天模塊、數據庫模塊、驗證模塊等

1. 為程序提供記錄日志的接口

2. 判斷日志所處級別,并判斷是否要過濾

3. 根據其日志級別將該條日志分發(fā)給不同handler

其常用函數有:

Logger.setLevel() 設置日志級別
Logger.addHandler() 和 Logger.removeHandler() 添加和刪除一個Handler
Logger.addFilter() 添加一個Filter

?

setLevel:設置日志等級

logger=logging.getLogger()
logger.setLevel(logging.DEBUG) #設置日志等級

logging

1、Formatter用于控制日志信息的最終輸出格式

logging.Formatter(參數)

formatter=logging.Formatter('[%(asctime)s]-%(filename)s]-%(levelname)s:%(message)s')

?

%(name)s? Logger的名字

%(levelno)s??數字形式的日志級別

%(levelname)s??文本形式的日志級別

%(pathname)s??調用日志輸出函數的模塊的完整路徑名,可能沒有

%(filename)s??調用日志輸出函數的模塊的文件名

%(module)s??調用日志輸出函數的模塊名

%(funcName)s??調用日志輸出函數的函數名

%(lineno)d??調用日志輸出函數的語句所在的代碼行

%(created)f?當前時間,用UNIX標準的表示時間的浮 點數表示

%(relativeCreated)d??輸出日志信息時的,自Logger創(chuàng)建以 來的毫秒數

%(asctime)s??字符串形式的當前時間。默認格式是 “2003-07-08 16:49:45,896”。逗號后面的是毫秒

%(thread)d??線程ID。可能沒有

%(threadName)s??線程名。可能沒有

%(process)d??進程ID。可能沒有

%(message)s??用戶輸出的消息

?

2、Handler基于日志級別對日志進行分發(fā),如設置為WARNING級別的Handler只會處理WARNING及以上級別的日志。具體的應用如一個應用要把所有的日志打在文件中,并把ERROR以上級別的日志打印到屏幕,把CRITICAL級別的日志發(fā)郵件

常用函數有:

setLevel() 設置級別
setFormatter() 設置Formatter

logging.FileHandler(參數)創(chuàng)建一個FileHandler

logger.addHandler(fh)添加

logging.StreamHandler()創(chuàng)建一個 StreamHandler

logger.addHandler(ch)添加

?

# 創(chuàng)建一個FileHandler,用于寫到本地
fh=logging.FileHandler(logname,'a',"utf-8")
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
logger.addHandler(fh)

# 創(chuàng)建一個 StreamHandler,用于輸出到控制臺
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
logger.addHandler(ch)

?

import os,time,logging #日志存放路徑 log_path=os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))),'logs') # 如果不存在這個logs文件夾,就自動創(chuàng)建一個 if not os.path.exists(log_path):os.mkdir(log_path) class Log():def __init__(self):#再日志路徑下添加日志文件名self.logname=os.path.join(log_path,'%s.log'%time.strftime('%Y_%m_%d'))#logger日志對象初始化self.logger=logging.getLogger()#設置日志等級self.logger.setLevel(logging.DEBUG)#日志輸出格式self.formatter=logging.Formatter('[%(asctime)s]-%(filename)s]-%(levelname)s:%(message)s')def __console(self,level,message):# 創(chuàng)建一個 FileHandler,用于寫到本地fh=logging.FileHandler(self.logname,'a',"utf-8")fh.setLevel(logging.DEBUG)fh.setFormatter(self.formatter)self.logger.addHandler(fh)# 創(chuàng)建一個 StreamHandler,用于輸出到控制臺ch = logging.StreamHandler()ch.setLevel(logging.DEBUG)ch.setFormatter(self.formatter)self.logger.addHandler(ch)if level=='info':self.logger.info(message)elif level=='debug':self.logger.debug(message)elif level=='warning':self.logger.warning(message)elif level=='error':self.logger.error(message)# 這兩行代碼是為了避免日志輸出重復問題self.logger.removeHandler(ch)self.logger.removeHandler(fh)# 關閉打開的文件fh.close()def debug(self, message):self.__console('debug', message)def info(self, message):self.__console('info', message)def warning(self, message):self.__console('warning', message)def error(self, message):self.__console('error', message) if __name__ == "__main__":log=Log()log.info("---測試開始---")log.info("操作步驟1,2,3")log.warning("---測試結束---")C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py [2019-04-10 17:17:18,025]-test.py]-INFO:---測試開始--- [2019-04-10 17:17:18,026]-test.py]-INFO:操作步驟1,2,3 [2019-04-10 17:17:18,028]-test.py]-WARNING:---測試結束---Process finished with exit code 0

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Python之日志处理(logging模块)详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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