Python 使用 loguru 套件最簡單寫 log 示範

在之前 Python 寫 log 示範 這篇中使用 python 內建的 logging 來寫 log ,不過如果要讓他同時寫在檔案和在指令視窗中輸出需要一些步驟,使用 loguru 只要一行,就算要調整也非常簡單。在 GitHub 上面也有超過 17.4 k 的星星。

安裝套件

使用以下指令安裝 requests 套件
    
pip install loguru
    

使用示範


from loguru import logger

logger.trace("Hello, World!")
logger.debug("Hello, World!")
logger.info("Hello, World!")
logger.success("Hello, World!")
logger.warning("Hello, World!")
logger.error("Hello, World!")
logger.critical("Hello, World!")
    

預設的顯示內容如下:

在 python 內建的 logging 中,log 有六種等級,由低到高分別是:
  • trace: 除錯使用,包含各種最囉唆繁瑣的訊息,預設不會顯示
  • debug: 除錯使用,包含各種囉唆繁瑣的訊息
  • info: 資訊,一般的紀錄
  • warning: 發生預期外的事情
  • error: 錯誤,某些功能可能無法正常執行
  • critical: 嚴重錯誤,程式本身可能無法正常執行
還有一個比較特別的 logger.exception ,會自動將例外用詳細的方式顯示:

from loguru import logger

try:
	raise Exception("Error")
except Exception as e:
logger.exception("Error")
    

輸出到檔案

下面是筆者最常使用的方式,每小時一個檔案:
    
from loguru import logger

logger.add("{time:YYYY-MM-DD_HH}.log")

logger.info("Hello, World!")
    

如果想要放在 logs 資料夾下可以這樣做:
    
from loguru import logger

logger.add("./logs/{time:YYYY-MM-DD_HH}.log")

logger.info("Hello, World!")
    

範例輸出:
檔名: 2024-02-12_21.log
    
2024-02-12 21:29:22.254 | INFO     | __main__:<module>:5 - Hello, World!
    

更詳細的日期格式化字串可以查看官方文件

限制檔案大小和保留時間

如果怕檔案太大可以使用 rotation 參數來自動拆分檔案,也可以使用 retention 參數來限制檔案時間。
    
from loguru import logger

logger.add("./logs/{time:YYYY-MM-DD_HH}.log",
           rotation="100 MB",
           retention="10 days",
           )

logger.info("Hello, World!")
    

在不同的程式碼中寫 log

上面用來設定 loguru 的程式碼只要寫在 main.py (或是其他用來執行的主要檔案中),在其他地方使用下面的程式碼就可以具有同樣的設定出來的效果了:
    
from loguru import logger


logger.info("Hello, World!")
    



參考資料:
GitHub - Delgan/loguru

留言