timmy revised this gist 10 months ago. Go to revision
No changes
timmy revised this gist 10 months ago. Go to revision
No changes
timmy revised this gist 1 year ago. Go to revision
1 file changed, 84 insertions
logger_tutorial.py(file created)
| @@ -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 | |