Python學習 日誌模組 logging

2022-06-11 09:45:10 字數 3292 閱讀 7291

作用:在邏輯容易出錯位置手動新增日誌功能,記錄報錯資訊到檔案,以被排錯

特點:非自動記錄,為人工指定位置,指定報錯資訊內容

提供五種模式:debug < info < warning < error < critical

預設從warning開始輸出,可以根據需求

調整預設寫入檔案是追加a模式

二、logging模組的兩種操作模式

1

#第一種、普通日誌記錄,不能同時列印及寫入日誌

2impot logging

3 logging.basicconfig(level=logging.debug,

4 format='

%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s',

5 filename='

log2018.log

') #

配置了檔名就寫入檔案

6 logging.debug('

message')

7 logging.info('

message')

8 logging.warning('

message')

9 logging.error('

message')

10 logging.critical('

message')

11 logging.log(logging.error, '

this is a error test')

12#自定義級別及資訊:logging.log(level,mes)

1

#第二種、自定義配置日誌2#

同時列印到控制台及寫入檔案(分別建立filehandler和streamhandler)3#

自定義將日誌內容按日誌級別分割成多個檔案寫入(建立多個檔案handler)4#

自定義同時寫入檔案格式,內容,列印格式的格式和內容 (為各個handler建立不同的formatter格式化)5#

自定義每個檔案、列印到螢幕的日誌級別(為各個handler設定不同的logging.setlevel(***))

6流程如下:

7 1、建立logger物件 logging.getlogger()

8 2、指定logger日誌級別 logging.setlevel()

9 3、建立handler logging.filehandler()

10 4、指定handler的日誌級別(必須高於logger級別) handler.setlevel()

11 5、建立handler的日誌格式 custom_format =logging.formatter()

12 6、指定handler的日誌格式 handler.setformatter(custom_format)

13 7、日誌器logger呼叫handler處理器 obj.addhandler(handler)

14 8、配置各個日誌級別的日誌記錄message longging.debug(msg)

1516

'''17

import logging

18# 1、通過日誌器logger例項化物件,呼叫方法getlogger()

19log_obj = logging.getlogger(__name__)

2021

# 2、設定日誌器logger即全域性日誌級別(可省略,預設從warning開始,如要設定必須高於其級別即info開始)

22log_obj.setlevel(logging.info)

2324

# 3、建立各個需求的handler控制代碼(本例設定三個,乙個寫入error錯誤資訊的檔案,乙個寫入全部日誌的檔案,乙個列印到控制台)

25error_fh = logging.filehandler('err.log', 'a', encoding='utf-8') # 預設追加,encoding按當前預設編碼

26all_fh = logging.filehandler('all.log')

27stream_sh = logging.streamhandler() # 列印出來沒有指定目的地一說

2829

# 4、為每個handler控制代碼配置日誌記錄級別(如果不設定預設繼承日誌器logger的日誌級別)

30error_fh.setlevel(logging.error)

31all_fh.setlevel(logging.warning)

32stream_sh.setlevel(logging.warning)

3334

# 5、為每個handler控制代碼配置日誌格式(可以配置乙個,其他都用乙個,也可以各個配置)

35err_format = logging.formatter('%(asctime)s-%(filename)s-[line:%(lineno)d]-%(levelname)s-%(message)s')

36stream_format = logging.formatter('%(asctime)s-[line:%(lineno)d]-%(levelname)s-%(message)s')

3738

# 6、為每個handler控制代碼配置日誌格式

39error_fh.setformatter(err_format)

40all_fh.setformatter(err_format)

41stream_sh.setformatter(stream_format)

4243

# 7、日誌器logger呼叫處理器handler,相結合

44log_obj.addhandler(error_fh)

45log_obj.addhandler(all_fh)

46log_obj.addhandler(stream_sh)

4748

# 8、為各個日誌級別設定日誌資訊

49logging.debug('debug:message2018')

50logging.info('info:message2019')

51logging.warning('waring:message2020')

52logging.error('error:message2088')

53logging.critical('critical:message2099')

logging的handlers見:

Log日誌學習

log4j2 spring boot使用 一,引入依賴 org.springframework.boot spring boot starter web org.springframework.boot spring boot starter logging org.springframework....

log模組學習

linux下,每個程序都有自己擁有的記憶體區域,程序的記憶體總是私有的。共享記憶體是從系統的空閒記憶體池中分配的,希望訪問它的每個程序連線它。這個連線過程稱為對映。基本流程 編譯時要加庫檔案 lrt shm id shm open ar 1 o rdwr o creat,0644 建立共享記憶體區 ...

Python學習日誌 模組 包

module and package 包 包是通過使用 模組名 來組織python模組命名空間的方式。包就是包含 init py檔案的資料夾。注意 建立包的目的不是為了執行,而是為了被匯入使用。包的本質依然還是模組。使用時 匯入時 都是 雙下劃線!init py檔案中寫入 from import 模...