<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
(1)5個紀錄檔等級/以及5個輸出紀錄檔的內建函數
(2)紀錄檔收集器、紀錄檔輸出渠道的概念
(3)如何自定義紀錄檔收集器
(4)如何封裝自定義的紀錄檔收集器
python的官方庫,列印紀錄檔用的,無需安裝,使用時直接呼叫
(1)DEBUG:偵錯模式下的紀錄檔,只給程式設計師看的紀錄檔
(2)INFO:程式正常執行的時候輸出的紀錄檔
(3)WARN/WARNING:警告資訊,當前程式還可以執行,後面有可能出現問題
(4)ERROR:程式執行過程總的錯誤資訊
(5)CRITICAL:發生嚴重錯誤,阻塞流程,程式可能無法繼續執行
(1)logging.debug("偵錯紀錄檔資訊")
(2)logging.info("重要紀錄檔資訊")
(3)logging.warning("警告紀錄檔資訊")
(4)logging.error("錯誤紀錄檔資訊")
(5)logging.critical("致命紀錄檔資訊")
1.3、紀錄檔收集器和紀錄檔輸出渠道:
紀錄檔收集器:
預設收集器的名字為root,預設收集等級為WARNING,通過如下步驟設定收集器的等級
log = logging.getLogger() # 獲取紀錄檔收集器,預設為root
log.setLevel("等級") # 等級必須大寫
logging.basicConfig(level=logging.DEBUG) # 設定收集器的等級
紀錄檔輸出渠道:
預設輸出等級為WARNING
輸出渠道支援:輸出到資料夾和輸出到控制檯
Demo範例1——預設WARNING等級
import logging # 列印不同等級的紀錄檔(debug、info、warning、error、critical) # 如下5條紀錄檔,只會列印WARNING等級以後的紀錄檔 logging.debug("這是一條debug級別的紀錄檔") logging.info("這是一條info級別的紀錄檔") logging.warning("這是一條warning級別的紀錄檔") logging.error("這是一條error級別的紀錄檔") logging.critical("這是一條critical級別的紀錄檔")
執行結果 :(只會列印WARNING級別以上的紀錄檔)
WARNING:root:這是一條warning級別的紀錄檔
ERROR:root:這是一條error級別的紀錄檔
CRITICAL:root:這是一條critical級別的紀錄檔
Demo範例2——預設的紀錄檔收集器
import logging # # logging.basicConfig(level=logging.DEBUG) 設定紀錄檔級別 # 未指定name,預設返回自帶的預設的root收集器 # 預設輸出WARN級別以上的等級紀錄檔 # 如果設定了WARNING以下的等級,則輸出WARNING等級以上的紀錄檔 # 如果設定了WARNING以上的等級,比如設定了ERROR,則輸出ERROR等級以上的紀錄檔 log = logging.getLogger() # log.setLevel("DEBUG") # log.setLevel("INFO") # log.setLevel("WARNING") log.setLevel("ERROR") # log.setLevel("CRITICAL") logging.debug("這是一條debug級別的紀錄檔") logging.info("這是一條info級別的紀錄檔") logging.warning("這是一條warning級別的紀錄檔") logging.error("這是一條error級別的紀錄檔") logging.critical("這是一條critical級別的紀錄檔")
執行結果:
ERROR:root:這是一條error級別的紀錄檔
CRITICAL:root:這是一條critical級別的紀錄檔
log = logging.getLogger(name="rose_logger")
不傳name引數時,預設返回收集器名字為“root”
傳了name引數時,會建立一個新的紀錄檔收集器
2.2、建立紀錄檔收集渠道
(1)輸出到控制檯:
pycharm = logging.StreamHandler()
(2)輸出到檔案:
file = logging.FileHandler(os.getcwd()+r"rose.log",encoding="utf-8")
file=handlers.TimedRotatingFileHandler(filename="test.log",when="D",interval=1,backupCount=10,encoding="utf-8")
注意點(引數):
filename, 紀錄檔的檔名稱(包含路徑)
when= 'h', 紀錄檔的切割單位
# S - Seconds 秒
# M - Minutes 分鐘
# H - Hours 小時
# D - Days 天(24小時)
# midnight - roll over at midnight 日切
# W{0-6} - roll over on a certain day; 0 - Monday 周
interval=1, 捲動週期,與when='h'連動,1-表示以時間為週期
backupCount=0 保留紀錄檔檔案的個數,設定為10,永遠只儲存最近的10個檔案
2.3、建立紀錄檔的輸出格式 (1)建立紀錄檔格式物件
pycharm_fmt = logging.Formatter(fmt=fmt1)
(2)將紀錄檔輸出格式繫結到紀錄檔輸出渠道
pycharm.setFormatter(fmt=pycharm_fmt) ——設定到控制檯紀錄檔渠道
file.setFormatter(fmt=pycharm_fmt1)——設定到檔案紀錄檔渠道
(3)常用的格式模板(也可以自己定義)
fmt1 = "%(asctime)s - [%(funcName)s-->line:%(lineno)d] - %(levelname)s:%(message)s"
fmt2 = '[%(asctime)s-%(name)s-%(levelname)s-%(filename)s-%(lineno)d]:%(message)s'
(4)格式必須按照指定的格式格式化。常用的如下:
%(asctime)s——當前時間
%(funcName)s——模組名
%(lineno)d——行號
%(levelname)s——紀錄檔等級名稱
%(message)s——具體的紀錄檔內容
Demo範例3——自定義紀錄檔收集器和紀錄檔格式
import logging,os from logging import handlers # 1、建立紀錄檔收集器 log = logging.getLogger(name="rose_logger") # 2、建立紀錄檔收集渠道 # 輸出控制檯 pycharm = logging.StreamHandler() # 輸出資料夾 file = logging.FileHandler(os.getcwd()+r"rose.log",encoding="utf-8") # file = handlers.TimedRotatingFileHandler(filename="test.log",when="D",interval=1,backupCount=10,encoding="utf-8") # 3、建立紀錄檔的輸出格式 fmt1 = "%(asctime)s - [%(funcName)s-->line:%(lineno)d] - %(levelname)s:%(message)s" # 建立一個紀錄檔輸出物件 pycharm_fmt = logging.Formatter(fmt=fmt1) fmt2 = '[%(asctime)s-%(name)s-%(levelname)s-%(filename)s-%(lineno)d]:%(message)s' pycharm_fmt1 = logging.Formatter(fmt=fmt2) # 4、紀錄檔輸出格式繫結到紀錄檔輸出渠道 pycharm.setFormatter(fmt=pycharm_fmt) file.setFormatter(fmt=pycharm_fmt1) # 5、直接給收集器設定紀錄檔級別就可以了,渠道會繼承收集器的紀錄檔級別 log.setLevel(level=logging.DEBUG) # 5、給收集渠道設定紀錄檔級別,檔案渠道,控制檯輸出的級別不會一樣 # pycharm.setLevel(logging.DEBUG) # 6、將紀錄檔收集渠道繫結到紀錄檔收集器 log.addHandler(pycharm) log.addHandler(file) log.info(msg="測試")
輸出結果:
Demo範例4——封裝自定義紀錄檔收集器
import logging from logging import handlers def create_log(name,level,filename,sh_level,fh_level): """ :param name: 紀錄檔收集器名字 :param level: 紀錄檔收集器的等級 :param filename: 紀錄檔檔案的名稱 :param sh_level: 控制檯輸出紀錄檔的等級 :param fh_level: 檔案輸出紀錄檔的等級 :return: 返回建立好的紀錄檔收集器 """ # 1、建立紀錄檔收集器 log = logging.getLogger(name) # 2、建立紀錄檔收集器的等級 log.setLevel(level=level) # 3、建立紀錄檔收集渠道和等級 sh = logging.StreamHandler() sh.setLevel(level=sh_level) log.addHandler(sh) fh = logging.FileHandler(filename=filename,encoding="utf-8") # fh1 = handlers.TimedRotatingFileHandler(filename=filename,when="D",interval=1,backupCount=10,encoding="utf-8") fh.setLevel(level=fh_level) log.addHandler(fh) # 4、設定紀錄檔的輸出格式 formats = "%(asctime)s - [%(funcName)s-->line:%(lineno)d] - %(levelname)s:%(message)s" log_format = logging.Formatter(fmt=formats) sh.setFormatter(log_format) fh.setFormatter(log_format) return log if __name__ == '__main__': log = create_log(name="rose_log",level=logging.DEBUG,filename="test_log.log",sh_level=logging.DEBUG,fh_level=logging.DEBUG) log.info(msg="--------debug--------") log.info(msg="--------info--------") log.info(msg="--------warning--------") log.info(msg="--------error--------") log.info(msg="--------critical--------")
輸出結果:
到此這篇關於python列印紀錄檔方法使用的文章就介紹到這了,更多相關python列印紀錄檔方法內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45