使用logging模組進行封裝,讓bug無處遁尋

2022-08-26 11:30:12 字數 2431 閱讀 9366

1. 簡介

追蹤某些軟體執行時所發生事件的方法, 可以在**中呼叫日誌中某些方法來記錄發生的事情

2. 使用logging日誌系統四大元件

import os, time, logging, sys

from common.plugs.get_config import r_config

base_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))

if sys.platform == "win32":

env_conf_dir = os.path.join(base_dir, 'common/conf/env_config.ini').replace('/', '\\')

else:

env_conf_dir = os.path.join(base_dir, 'common/conf/env_config.ini')

log_path = r_config(env_conf_dir, "log", "log_path")

class log:

def __init__(self, log_path):

self.logname = os.path.join(log_path, '.log'.format(time.strftime('%y-%m-%d')))

def console_log(self, level, message):

# 建立乙個logger

logger = logging.getlogger()

logger.setlevel(logging.debug)

# 建立乙個handler,用於 debug 寫入日誌檔案

debug_file = logging.filehandler(self.logname, 'a+', encoding='utf-8')

debug_file.setlevel(logging.debug)

# 再建立乙個handler,用於輸出到控制台

ch = logging.streamhandler()

ch.setlevel(logging.debug)

# 定義handler的輸出格式

formatter = logging.formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

debug_file.setformatter(formatter)

ch.setformatter(formatter)

# 給logger新增handler

logger.addhandler(debug_file)

logger.addhandler(ch)

# 記錄一條日誌

if level == 'info':

logger.info(message)

elif level == 'debug':

logger.debug(message)

elif level == 'warning':

logger.warning(message)

elif level == 'error':

logger.error(message)

elif level == 'critical':

logger.critical(message)

logger.removehandler(ch)

logger.removehandler(debug_file)

debug_file.close()

def debug(self, message): #最詳細日誌資訊, 多用於問題診斷

self.console_log('debug', message)

def info(self, message): #僅次於debug, 多用於記錄關鍵點資訊, 確保程式按預期執行

self.console_log('info', message)

def warning(self, message): #低等級故障, 但程式仍能執行, 如磁碟空間不足警告

self.console_log('warning', message)

def error(self, message): #由於比warning嚴重的問題, 導致某些功能不能正常執行時的記錄

self.console_log('error', message)

def critical(self, message): 嚴重錯誤, 導致應用程式不能繼續執行時的記錄

self.console_log('critical', message)

if __name__ == '__main__':

log(log_path).info("adasd")

log(log_path).error("dsadasddasd")

'''

Logging模組的使用

logging模組,針對日誌操作的模組 logging模組可替代print函式的功能,並能將標準輸出輸入到日誌檔案儲存起來 且利用logging模組可部分替代debug功能 logging模組中有6個級別,分別是 notset 0debug 10info 20warning 30error 40cr...

logging模組的使用

coding utf 8 import os import time import logging import sys log dir1 os.path.join os.path.dirname os.path.dirname file logs today time.strftime y m d...

python模組使用之logging

日誌記錄python執行輸出的資訊 參考 簡單使用 filename 日誌檔案的儲存路徑。如果配置了些引數,將自動建立乙個filehandler作為handler filemode 日誌檔案的開啟模式。預設值為 a 表示日誌訊息以追加的形式新增到日誌檔案中。如果設為 w 那麼每次程式啟動的時候都會建...