03 python基礎 logging模組

2021-08-19 20:27:41 字數 4246 閱讀 1573

目錄

三、 基本使用

四、實際場景應用推導

4.2 結合logger、handler以及formatter列印日誌

4.3 日誌列印模組封裝

五、補充

建立乙個物件,呼叫logging模組的方法來答應日誌

控制日誌列印的位置

控制日誌列印格式

import logging
預設情況下只列印warning及以上級別的日誌

# 日誌列印到test.log檔案中,日誌列印級別為debug(預設日誌列印方式是a)

filename: 指定日誌檔名

filemode: 和file函式意義相同,指定日誌檔案的開啟模式,'w'或'a'

format: 指定輸出的格式和內容,format可以輸出很多有用資訊(和formatter元件的引數一致)

datefmt: 指定時間格式,同time.strftime()

level: 設定日誌級別,預設為logging.warning

stream: 指定將日誌的輸出流,可以指定輸出到sys.stderr,sys.stdout或者檔案,預設輸出到sys.stderr,當stream和filename同時指定時,stream被忽略

import logging

# 日誌檔案位置

log_type = 'test_info.log'

log_level = logging.debug

logger = logging.getlogger()

logger.setlevel(log_level)

# 日誌列印到檔案中

# 設定日誌檔案路徑

log_file = "%s/logs/%s" %(settings.base_dir, log_type)

fh = logging.filehandler(log_file)

fh.setlevel(log_level)

# 設定日誌檔案格式

formatter = logging.formatter('%(asctime)s - %(name)s - %(levelname)s - lineno:%(lineno)d - %(message)s')

# 將日誌檔案格式設定到fh中

fh.setformatter(formatter)

# 將控制代碼新增至logger

''' 列印日誌類

:param log_type:

:return:

'''#create logger

logger = logging.getlogger(log_type)

logger.setlevel(settings.log_level)

# 日誌列印到控制台

# create console handler and set level to debug

# ch = logging.streamhandler()

# ch.setlevel(log_level)

# create file handler and set level to warning

log_file = "%s/logs/%s" %(settings.base_dir, settings.log_types[log_type])

fh = logging.filehandler(log_file, encoding='utf-8', mode='a') # 指定列印日誌格式為utf-8解決亂碼問題,預設情況mode也是a

fh.setlevel(settings.log_level)

# create formatter

formatter = logging.formatter(

fmt = '%(asctime)s - %(name)s -%(threadname)s:%(process)d - %(filename)s:%(lineno)d - %(message)s',

datefmt = '%y-%m-%d %a %h:%m:%s', # 格式化日期輸出

)# add formatter to ch and fh

# ch.setformatter(formatter)

fh.setformatter(formatter)

# add ch and fh to logger

# logger.addhandler(ch)

logger.addhandler(fh)

return logger

logger = logger("info")

logger.debug("測試資料")

logger.info("測試資料")

logger.error("測試資料")

logger.critical("測試資料")

logger.warning("測試資料")

: 列印日誌級別的數值

%(levelname)s

: 列印日誌級別名稱

%(pathname)s

: 列印當前執行程式的路徑,其實就是sys.argv[0]

%(filename)s

: 列印當前執行程式名

%(funcname)s

: 列印日誌的當前函式

%(lineno)d

: 列印日誌的當前行號

%(asctime)s

: 列印日誌的時間

%(thread)d

: 列印執行緒id

%(threadname)s

: 列印執行緒名稱

%(process)d

: 列印程序id

%(message)s

: 列印日誌資訊

03 Python基礎語法1

總結 強調 python3 print後一定要加雙引號 一 python環境安裝 1.1 anaconda spyder 使用 1.2 pycharm 1.3 anaconda 二 python基礎語法 2.1 輸入輸出 input,print 2.2 判斷語句 if else 1 縮排和冒號區分 ...

03 Python 基礎知識

目錄 1.注釋 2.變數及型別 3.命名規則 4.運算子 coding utf 8 time 2021 1 23 author 大海 這是單行注釋 這是多行注釋1 這是多行注釋2 運算子 描述例項 加 兩個物件相加 a b 輸出結果 30 減 得到負數或是乙個數減去另乙個數 a b 輸出結果 10 ...

03 Python集合型別

python集合型別思維導圖 只有1個元素的tuple定義時必須加乙個逗號,來消除歧義 2 常用操作 2 字典的常見操作 2 新增元素 3 刪除元素 clear 3 字典的常見函式 2 keys map.keyset 3 values 4 items 4 字典遍歷 3 dict可以用在需要高速查詢的...