Zuletzt aktiv 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 hat die Gist bearbeitet 10 months ago. Zu Änderung gehen

Keine Änderungen

timmy hat die Gist bearbeitet 10 months ago. Zu Änderung gehen

Keine Änderungen

timmy hat die Gist bearbeitet 1 year ago. Zu Änderung gehen

1 file changed, 84 insertions

logger_tutorial.py(Datei erstellt)

@@ -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
Neuer Älter