作用:在邏輯容易出錯位置手動新增日誌功能,記錄報錯資訊到檔案,以被排錯特點:非自動記錄,為人工指定位置,指定報錯資訊內容
提供五種模式: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 模...