python中的logging模組

2021-09-29 06:56:13 字數 2874 閱讀 1170

一、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...