<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
大家好,為了進行偵錯和錯誤跟蹤,人們在整個程式碼庫中廣泛使用紀錄檔,今天來看看如何在程式碼中定義紀錄檔,並探討紀錄檔的許可權。
在開始之前,需要注意的是,在紀錄檔記錄中存在一個層次結構,稱為紀錄檔樹或紀錄檔者層次結構。該層次結構由幾個級別組成,每個級別代表了紀錄檔資訊的不同嚴重程度。最常見的層次是:
CRITICAL #A critical error occurred, the program may not be able to continue running.
ERROR #An error occurred that should be investigated.
WARNING #An indication that something unexpected happened or indicative of some problem in the near future.
INFO #General information about the program's execution.
DEBUG #Detailed information for debugging purposes.
讓我們建立一個名為set_logging.py
的python模組:
import logging logger = logging.getLogger() def set_logger(): logger.setLevel(logging.INFO) handler = logging.StreamHandler() handler.setLevel(logger_level) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler)
為了明確程式碼,我們用getLogger
函數建立一個紀錄檔器範例,並使用setLevel
來設定紀錄檔級別(DEBUG
、INFO
等)。紀錄檔器的setLevel
方法就像一個過濾器,它決定了一條紀錄檔資訊是否應該被處理並行送給處理程式。例如,如果我們將紀錄檔記錄器的級別設定為INFO
,那麼紀錄檔記錄器就不會向處理程式傳送級別為DEBUG
的訊息,因為它們的嚴重程度低於在紀錄檔記錄器上設定的最低階別。它只將級別為INFO
或更高的紀錄檔訊息(即WARNING
、ERROR
或CRITICAL
)傳送給處理程式進行處理。
我們建立一個StreamHandler
,將紀錄檔資訊傳送到一個流中,如控制檯或終端。它被用來輸出紀錄檔資訊以達到偵錯的目的。我們還為處理程式設定了級別。
我們這樣做是因為當處理程式收到來自紀錄檔記錄器的訊息時,它將把這些訊息與它的級別進行比較,並在發出之前過濾掉嚴重程度較低的訊息。當我們有不同的處理程式時:
logger.setLevel(logging.INFO) file_handler = logging.FileHandler() file_handler.setLevel(logging.ERROR) console_handler = logging.StreamHandler() console_handler.setLevel(logging.WARNING)
由於紀錄檔記錄器的級別被設定為INFO
,它只向兩個處理程式傳送級別為INFO
或更高的紀錄檔訊息,但每個處理程式只處理達到或超過其指定紀錄檔級別的訊息。
回到我們的主要例子,然後我們建立一個格式化器並將其新增到處理程式中。格式化器指定了紀錄檔訊息的格式,包括時間戳、紀錄檔記錄器名稱、紀錄檔級別和訊息。最後,我們將處理程式新增到紀錄檔記錄器中"。
現在在程式碼中,需要呼叫set_logger
,如下所示:
import logging from set_logging import set_logger set_logger() logger = logging.getLogger() def roman_number(s: str) -> int: dic = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000} res = 0 pre = None for char in s: res += dic.get(char) if dic.get(pre) and dic.get(pre) < dic.get(char): res -= 2 * dic.get(pre) pre = char logger.info("logging is awesome") return res roman_number("IV")
執行這段程式碼,結果如下:
2023-03-04 02:26:57,619 - root - INFO - logging is awesome
DEBUG
、INFO
、WARNING
、ERROR
和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