1. 程式人生 > >python 日誌模組的例子

python 日誌模組的例子

import os, shutil
import time
import logging


def simple_log(log_dir=None, log_name=None):
    if log_dir == None:
        log_dir = "log_dir"

    path = os.path.join(os.path.abspath("."), log_dir)

    if os.path.exists(path):
        print("日誌檔案已存在")
        # shutil.rmtree(path)  # 遞迴刪除資料夾
    else:
        os.makedirs(path)
        print("建立日誌檔案成功")

    # 配置日誌資訊
    if log_name == None:
        log_name = "demo.log"
    log_name = os.path.join(path, log_name)

    # 建立一個日誌 logger 例項
    logger = logging.getLogger()
    logging.debug("DEBUG")   # 設定日誌級別為 DEBUG, 覆蓋掉預設的日誌級別 Warning

    # 建立一個 handler,用於寫入日誌檔案, handler 可以把日誌寫到不同的地方
    fh = logging.FileHandler(log_name, "w+", encoding="utf-8")  # 將日誌寫在檔案中
    fh.setLevel(logging.INFO)   # 設定日誌的級別為  INFO

    # 再建立一個 handler, 用於輸出控制檯
    ch = logging.StreamHandler()
    ch.setLevel(logging.INFO)   # 設定日誌的級別為 INFO

    # 定義handler的格式輸出
    log_format = logging.Formatter("%(asctime)s - %(filename)s - %(levelname)s - %(name)s - %(message)s") # 時間,檔名稱,日誌級別, 日誌器名稱, 欄位資訊

    fh.setFormatter(log_format)    # handler 載入設定的格式輸出
    ch.setFormatter(log_format)    # handler 載入設定的格式輸出

    # 為 logger 新增handler
    logger.addHandler(fh)
    logger.addHandler(ch)
    return logger

if __name__ == '__main__':
    logging = simple_log()
    if 2 > 10:
        logging.warning("你好啊!!!")
    else:
        logging.warning("我不好!!!")