python 日誌模組的例子

2021-08-30 08:37:50 字數 3159 閱讀 5161

import os, shutil

import time

import logging

def ******_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 = ******_log()

if 2 > 10:

logging.warning("你好啊!!!")

else:

logging.warning("我不好!!!")

"""

使用logging四大元件記錄日誌

""""""

1. 需求

現在有以下幾個日誌記錄的需求:

1)要求將所有級別的所有日誌都寫入磁碟檔案中

2)all.log 檔案中記錄所有的日誌資訊,日誌格式為:日期和時間 - 日誌級別 - 日誌資訊

3)error.log 檔案中單獨記錄error及以上級別的日誌資訊,日誌格式為:日期和時間 - 日誌級別 - 檔名[:行號] - 日誌資訊

4)要求all.log 在每天凌晨進行日誌切割

2. 分析

1)要記錄所有級別的日誌,因此日誌器的有效level需要設定為最低級別--debug;

2)日誌需要被傳送到兩個不同的目的地,因此需要為日誌器設定兩個handler;另外,兩個目的地都是磁碟檔案,因此這兩個handler都是與filehandler相關的;

3)all.log要求按照時間進行日誌切割,因此他需要用logging.handlers.timedrotatingfilehandler; 而error.log沒有要求日誌切割,因此可以使用filehandler;

4)兩個日誌檔案的格式不同,因此需要對這兩個handler分別設定格式器;

"""import logging

import logging.handlers

import datetime

logger = logging.getlogger("mylogger")

logger.setlevel(logging.debug) # 設定最低級別的 debug'

rf_handler = logging.handlers.timedrotatingfilehandler("all.log", when="midnight", interval=1, backupcount=7, attime= datetime.time(0, 0, 0, 0))

rf_handler.setformatter(logging.formatter("%(asctime)s - %(levelname)s - %(message)s")) # 設定格式

f_handler = logging.filehandler("error.log", encoding="utf-8") # 寫入日誌檔案

f_handler.setlevel(logging.error) # 設定日誌等級

f_handler.setformatter(logging.formatter("%(asctime)s - %(levelname)s - %(filename)s[:%(lineno)d] - %(message)s")) # 設定資訊格式

logger.addhandler(rf_handler) # 新增處理器 rf_handler

logger.addhandler(f_handler) # 新增處理器 f_handler

logger.debug("debug message")

logger.info("info message")

logger.warning("warning message")

logger.error("error message")

logger.critical("critical message")

python的日誌模組

date 2019 06 28 autor wangxc 功能 1.寫日誌功能,當沒有傳入日誌寫入路徑時,他會將 本檔名.log 的日誌檔案存放到指令碼同路徑下 例子 指令碼路徑在c logger.py,那麼生成的日誌檔案logger.log將會在c 下存在 2.可以傳入日誌的級別,控制日誌輸出的形...

python日誌模組

logging.debug 10 logging.info 20 logging.warning 30 logging.error 40 logging.critical 50預設級別為warning 預設輸出位置為控制台 import logging logging.basicconfig 可用引...

python 日誌模組

在軟體或者系統發生錯誤時可以通過日誌快速定位到錯誤,從而定位問題,解決問題。logging模組提供的日誌記錄函式所使用的日誌器設定的日誌級別是warning,因此只有warning級別的日誌記錄以及大於它的error和critical級別的日誌記錄被輸出了,而小於它的debug和info級別的日誌記...