一、python中的logging模組提供了日誌的介面,過它儲存各種格式的日誌
日誌的等級分為以下幾種,日誌的等級按照以下順序依次提高,debug < info < warning < error < critical;但是日誌的資訊量是依次減少的,當指定乙個日誌級別之後,會記錄大於或等於這個日誌級別的日誌資訊,小於的將會被丟棄。
二、logging模組提供了兩種記錄日誌的方式:
第一種方式是使用logging提供的模組級別的函式
第二種方式是使用logging日誌系統的四大元件
函式 說明
只有後面三個列印出來了,因為預設級別是logging.warning,低於該級別的就不輸出了
logging.basicconfig()需要在開頭就設定,在中間設定沒有作用
通過logging.basicconfig可以設定root的日誌級別,和日誌輸出格式
import logging
import time
import os
class
mylog
(object):
def__init__
(self,logger_name)
:#建立乙個logger
self.logger= logging.getlogger(logger_name)
self.logger.setlevel(logging.info)
#設定日誌存放路徑,日誌檔名
#獲取本地時間,轉換為設定的格式
rq = time.strftime(
'%y%m%d%h%m'
,time.localtime(time.time())
)#設定所有日誌和錯誤日誌的存放路徑
all_log_path = os.path.join(os.path.dirname(os.getcwd())
,'logs/all_logs/'
) error_log_path = os.path.join(os.path.dirname(os.getcwd())
,'logs/error_logs/'
)#設定日誌檔名
all_log_name = all_log_path + rq +
'.log'
error_log_name = error_log_path + rq +
'.log'
#建立handler
#建立乙個handler寫入所有日誌
fh = logging.filehandler(all_log_name)
fh.setlevel(logging.info)
#建立乙個handler寫入錯誤日誌
eh = logging.filehandler(error_log_name)
eh.setlevel(logging.error)
#建立乙個handler輸出到控制台
ch = logging.streamhandler(
) ch.setlevel(logging.info)
#定義日誌輸出格式
#以時間-日誌器名稱-日誌級別-日誌內容的形式展示
all_log_formatter = logging.formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)#以時間-日誌器名稱-日誌級別-檔名-函式行號-錯誤內容
error_log_formatter = logging.formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(module)s - %(lineno)s - %(message)s'
)#將定義好的輸出形式新增到handler
fh.setformatter(all_log_formatter)
ch.setformatter(all_log_formatter)
eh.setformatter(error_log_formatter)
#給logger新增handler
self.logger.addhandler(fh)
self.logger.addhandler(eh)
self.logger.addhandler(ch)
defgetlog
(self)
:return self.logger
測試**:
from common import logger
logger = logger.mylog(
'test'
).getlog(
)try
: logger.info(
'開始測試...'
) r =10/
0 logger.info(
'result:'
,r)except zerodivisionerror as e:
logger.error(
'tests'
,exc_info=
1)
使用exc_info=1可以把報錯資訊完整的列印進日 Python中logging的使用
我們先來看一下函式式簡單配置 預設情況下python的logging模組將日誌列印到了標準輸出中,且只顯示了大於等於warning級別的日誌,這說明預設的日誌級別設定為warning 日誌級別等級critical error warning info debug 預設的日誌格式為日誌級別 logge...
python中的logging模組學習
l 預設的情況下python的logging模組列印到控制台,只顯示大於等於warning級別的日誌 l 日誌級別 critical error warning info debug notset 1.logger l logger是乙個樹形層級結構,輸出資訊之前都要獲得乙個logger l log...
Python中logging例項講解
logging 的基本用法網上很多,這裡就不介紹了。在引入正文之前,先來看乙個需求 假設需要將某功能封裝成類庫供他人使用,如何處理類庫中的日誌?數年前在乙個 c 開發的專案中,我用程式設計客棧了這樣的方法 定義乙個 logging 基類,所有需要用到日誌的類都繼承這個基類,這個基類中定義乙個 log...