Python logging日誌模組 封裝完善

2022-06-17 23:03:09 字數 2848 閱讀 2524

import logging

import os

class log:

'''模組化使用

: 建立乙個logger物件, 並且進行初始化設定

: 將logger物件進行返回, 方便使用

: notset < debug < info < warning < error < critical

: 注意這裡有個大坑, notset不是顯示所有訊息, 而是預設的 warning 等級

: 想要顯示所有的訊息, 把等級設定為 logging.debug 或者 10

: logger 和 handle的等級是誰高用誰, 比如 debug和warning 不管誰先設定, 都是用 warning 等級

'''def __init__(self, logger_name="logger"):

self.logger = logging.getlogger(logger_name) # 建立乙個logger物件

self.logger.setlevel(logging.debug) # notset 預設是waring

def create_handle(self, log_level=logging.debug, log_file=none):

''': log_level 等級

: notset < debug < info < warning < error < critical

: 0 < 10 < 20 < 30 < 40 < 50

'''# 判斷是終端輸出還是檔案輸出

if log_file == none:

handle = logging.streamhandler() # terminal print

else:

handle = logging.filehandler(log_file, encoding="utf-8") # write to file

handle.setlevel(log_level) # 設定handle的等級

# 設定log輸出格式

formatter = logging.formatter("%(levelname)s - %(asctime)s - %(filename)s[line:%(lineno)d] - %(message)s",datefmt='%y-%m-%d %a %h:%m:%s')

handle.setformatter(formatter)

# 新增handle到logger

self.logger.addhandler(handle)

def return_logger(self):

''':return: 返回logger以便使用

'''return self.logger

def create_log_file():

'''建立乙個和當前檔案所在目錄同級別的乙個log目錄

log檔案: log_file.log

'''log_dir = os.path.join(os.path.abspath("../.."), "log")

if not os.path.exists(log_dir):

os.mkdir(log_dir)

log_path = os.path.join(log_dir, "log_file.log")

return log_path

def get_logger(logger_name:str = "default_logger", log_file=none, log_file_level=logging.info, log_print_level=logging.debug):

'''傳入logger名字, 自動建立兩個handle, 乙個列印輸出 預設為debug, 乙個日誌檔案記錄 預設為info

:param logger_name: string

:return: logger

'''if log_file:

if os.path.exists(log_file):

log_path = log_file

else:

print("---log檔案位址不存在, 重新建立log檔案---")

log_path = create_log_file()

else:

print("---未給出log檔案路徑, 建立log檔案---")

log_path = create_log_file()

log_obj = log(logger_name=logger_name)

log_obj.create_handle(log_level=log_print_level)

log_obj.create_handle(log_level=log_file_level, log_file=log_path)

logger = log_obj.return_logger()

logger.warning("--- " + logger_name + " init success ---")

return logger

if __name__ == "__main__":

# 測試

# log_obj = log(logger_name="test_log")

# log_obj.create_handle()

# logger = log_obj.return_logger()

# logger.info('test_log')

# logger.warning("warning")

get_logger()

Python logging日誌模組

1.日誌的級別 日誌一共分成5個等級,從低到高分別是 1 debug 2.info 3.warning 4.error 5.critical說明 這5個等級,也分別對應5種打日誌的方法 debug info warning error critical。預設的是 warning,當在warning或...

python logging日誌模組

logging模組是python的乙個標準庫模組,由標準庫模組提供日誌記錄api的關鍵好處是所有python模組都可以使用這個日誌記錄功能。所以,你的應用日誌可以將你自己的日誌資訊與來自第三方模組的資訊整合起來。1.日誌級別 logging模組預設定義了以下幾個日誌等級,開發應用程式或部署開發環境時...

python logging日誌設定

log等級,輸出格式,輸出檔名,檔案讀寫模式 logging.basicconfig level logging.debug,format asctime s filename s line lineno d levelname s message s filename log.txt filemo...