標籤:logs href error att mes 層級 python學習 位置 添加
一、logging模組
作用:在邏輯容易出錯位置手動添加日誌功能,記錄報錯資訊到檔案,以被排錯
特點:非自動記錄,為人工指定位置,指定報錯資訊內容
提供五種模式:debug < info < warning < error < critical
預設從warning開始輸出,可以根據需求
調整預設寫入檔案是追加a模式
二、logging模組的兩種操作模式
1 # 第一種、普通日誌記錄,不能同時列印及寫入日誌 2 impot 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)15 16 ‘‘‘17 import logging18 # 1、通過日誌器logger執行個體化對象,調用方法getLogger()19 log_obj = logging.getLogger(__name__)20 21 # 2、設定日誌器logger即全域記錄層級(可省略,預設從warning開始,如要設定必須高於其層級即INFO開始)22 log_obj.setLevel(logging.INFO)23 24 # 3、建立各個需求的Handler控制代碼(本例設定三個,一個寫入error錯誤資訊的檔案,一個寫入全部日誌的檔案,一個列印到控制台)25 error_fh = logging.FileHandler(‘err.log‘, ‘a‘, encoding=‘UTF-8‘) # 預設追加,encoding按當前預設編碼26 all_fh = logging.FileHandler(‘all.log‘)27 stream_sh = logging.StreamHandler() # 列印出來沒有指定目的地一說28 29 # 4、為每個handler控制代碼配置日誌記錄層級(如果不設定預設繼承日誌器logger的記錄層級)30 error_fh.setLevel(logging.ERROR)31 all_fh.setLevel(logging.WARNING)32 stream_sh.setLevel(logging.WARNING)33 34 # 5、為每個handler控制代碼配置日誌格式(可以配置一個,其他都用一個,也可以各個配置)35 err_format = logging.Formatter(‘%(asctime)s-%(filename)s-[line:%(lineno)d]-%(levelname)s-%(message)s‘)36 stream_format = logging.Formatter(‘%(asctime)s-[line:%(lineno)d]-%(levelname)s-%(message)s‘)37 38 # 6、為每個handler控制代碼配置日誌格式39 error_fh.setFormatter(err_format)40 all_fh.setFormatter(err_format)41 stream_sh.setFormatter(stream_format)42 43 # 7、日誌器logger調用處理器handler,相結合44 log_obj.addHandler(error_fh)45 log_obj.addHandler(all_fh)46 log_obj.addHandler(stream_sh)47 48 # 8、為各個記錄層級設定日誌資訊49 logging.debug(‘debug:message2018‘)50 logging.info(‘info:message2019‘)51 logging.warning(‘waring:message2020‘)52 logging.error(‘error:message2088‘)53 logging.critical(‘critical:message2099‘)
想瞭解詳細見:https://www.cnblogs.com/sunxiuwen/articles/9285938.html
Python學習_日誌模組:logging