在 python 專案中如何記錄日誌
阿新 • • 發佈:2021-11-10
一. 概述
寫本文的目的是我在寫 python 專案的時候需要記錄日誌,我忘記怎麼處理了,每次都需要去網上查一遍,好記性不如爛筆頭, 這裡把查閱的內容記錄下來,方便以後查詢。
python 專案中記錄日誌,可以使用 logging 模組,logging 模組定義的函式和類為應用程式和庫的開發實現了一個靈活的事件日誌系統。logging 模組是Python的一個標準庫模組,由標準庫模組提供日誌記錄API的關鍵好處是所有Python模組都可以使用這個日誌記錄功能。所以,你的應用日誌可以將你自己的日誌資訊與來自第三方模組的資訊整合起來。
二. logging 配置
在 __init__.py
檔案中做如下配置:
import logging.handlers import os # 設定日誌檔案的存放目錄 log_dir = 'logdir' # 設定日誌檔案的名字 log_filename = 'app.log' # 日誌格式化輸出 LOG_FORMAT = "%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s" # 日期格式 DATE_FORMAT = "%Y-%m-%d %H:%M:%S %p" log_dir = os.path.dirname(os.getcwd()) + '/' + log_dir if not os.path.exists(log_dir): os.makedirs(log_dir) log_filename = log_dir + '/' + log_filename # 一個日誌50M, 超過 app.log 指定的大小會自動滾動建立日誌檔案 app.log.1, app.log.2, app.log.3 fp = logging.handlers.RotatingFileHandler(log_filename, maxBytes=1024 * 1024 * 50, backupCount=30,encoding='utf-8') # 再建立一個handler,用於輸出到控制檯 fs = logging.StreamHandler() logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT, datefmt=DATE_FORMAT, handlers=[fp, fs]) # 測試 if __name__ == '__main__': logging.info("列印日誌")
控制檯輸出日誌如下:
2021-11-10 19:33:59 PM - __init__.py[line:29] - INFO: 列印日誌