最后活跃于 10 months ago

這段 Python 程式碼使用 loguru 來 記錄並管理日誌訊息,支援 不同級別(INFO、DEBUG、WARNING、ERROR、CRITICAL)的日誌,並可輸出至 終端機 (sys.stderr) 或檔案 (log.txt、debug.txt)。它還示範了 顏色標記 (opt(colors=True))、錯誤追蹤 (logger.exception())、格式化 (opt(record=True)) 及自訂篩選條件 (filter=only_debug_filter)。此外,腳本還包含了一個 除法函式 (divide()),並處理除數為 0 的異常。這適用於 伺服器監控、錯誤記錄、程式偵錯及系統日誌管理,能夠提升 日誌的可讀性與除錯效率。

timmy 修订了这个 Gist 10 months ago. 转到此修订

没有任何变更

timmy 修订了这个 Gist 10 months ago. 转到此修订

没有任何变更

timmy 修订了这个 Gist 1 year ago. 转到此修订

1 file changed, 84 insertions

logger_tutorial.py(文件已创建)

@@ -0,0 +1,84 @@
1 + import sys
2 +
3 + from loguru import logger # 引入logger套件
4 +
5 + logger.remove() # 移除現有的logger設定
6 + logger.add(sys.stderr, level="INFO") # 將logger設定加入到stderr中,並設定level為"INFO"
7 + # logger.add(sys.stderr, level="WARNING")
8 + # logger.add(sys.stderr, level="ERROR")
9 + # logger.add(sys.stderr, level="TRACE")
10 +
11 + logger.add("log.txt", level="INFO") # 將logger設定加入到指定的檔案中,並設定level為"INFO"
12 +
13 +
14 + def only_debug_filter(record):
15 + return record["level"].name == "DEBUG"
16 +
17 +
18 + logger.add("debug.txt", filter=only_debug_filter, level="DEBUG")
19 +
20 + logger.debug("Debug message")
21 + logger.info("Info message")
22 + logger.warning("Warning message")
23 + logger.trace("Hello, World!")
24 + logger.success("Success message")
25 +
26 +
27 + # 使用 logger.error() 函式來顯示 error 等級的 log
28 + logger.error("Error message") # ERROR
29 +
30 + # 在日誌中記錄"Critical message",日誌級別為"CRITICAL"
31 + logger.critical("Hello, World!") # CRITICAL
32 + logger.critical("Critical message")
33 +
34 + # 在日誌中記錄"We got a BIG problem",並將文字"BIG"標記為紅色,日誌級別為"WARNING"
35 + logger.opt(colors=True).warning("We got a <red>BIG</red> problem")
36 +
37 +
38 + # 在日誌中記錄"Per message colors",並將文字"colors"標記為藍色,日誌級別為"INFO"
39 + logger.opt(colors=True).info("Per message <blue>colors</blue>")
40 +
41 + # 在日誌中記錄"Display values from the record (eg. {record[thread]})",
42 + # 並顯示日誌記錄中的某些值,例如"thread"鍵所對應的值,日誌級別為"INFO"
43 + logger.opt(record=True).info("Display values from the record (eg. {record[thread]})")
44 +
45 +
46 + # By the way, "opt()" serves many usages
47 + logger.opt(exception=True).info(
48 + "Error stacktrace added to the log message (tuple accepted too)"
49 + )
50 +
51 + try:
52 + raise ValueError("This is a test error")
53 + except ValueError as e:
54 + logger.exception(e)
55 +
56 + logger.opt(raw=True).info("Bypass sink formatting\n")
57 +
58 + # logger.opt(depth=1).info("Use parent stack context (useful within wrapped functions)")
59 + logger.opt(capture=False).info(
60 + "Keyword arguments not added to {dest} dict", dest="extra"
61 + )
62 +
63 + # 建立一個函數,用來計算給定數字的除法
64 + def divide(num1, num2):
65 + return num1 / num2
66 +
67 +
68 + # 呼叫函數並輸出結果
69 + result = divide(10, 5)
70 + print(result)
71 +
72 + # 處理除以0的例外情況
73 + try:
74 + result = divide(10, 0)
75 + except ZeroDivisionError:
76 + print("除數不能為0")
77 + logger.exception("除數不能為0") # 記錄錯誤訊息
78 +
79 +
80 + # 結束程式
81 + print("程式結束")
82 +
83 +
84 + # https://loguru.readthedocs.io/en/stable/api/logger.html
上一页 下一页