python可配置日誌logging

2021-09-10 13:15:44 字數 3550 閱讀 5921

一、配置檔案logger.ini

[loggers]#logger名稱

keys=root,rotatingfilelogger,timefilelogger

[handlers]#handler名稱

keys=consolehandler,rotatingfilehandler,timefilehandler

[formatters]#格式名稱

keys=******formatter,detailformatter

[logger_root]#在不指定的情況下預設的logger,必須有,否則報錯,root為該logger的名稱,在loggers中已經宣告

#級別level=debug

#指定該logger的處理器(名稱)

handlers=consolehandler

[logger_timefilelogger]#logger,timefilelogger為該logger的名稱,對應loggers中宣告的名稱

level=warning

#指定該logger的處理器的名稱,可以是多個

handlers=consolehandler,timefilehandler

qualname=timefilelogger

propagate=0

[logger_rotatingfilelogger]#logger,rotatingfilelogger為該logger的名稱,對應loggers中宣告的名稱

level=debug

#指定該logger的處理器的名稱,可以是多個

handlers=consolehandler,rotatingfilehandler

qualname=rotatingfilelogger

propagate=0

[handler_consolehandler]#處理器,consolehandler為該處理器的名稱,對應handlers中宣告的名稱

#指定處理器類,該類一般為控制台列印輸出

class=streamhandler

level=debug

#指定該處理器的日誌格式(名稱)

formatter=******formatter

#該處理器streamhandler的引數,在該類中有具體說明

args=(sys.stdout,)

[handler_rotatingfilehandler]#處理器,rotatingfilehandler為該處理器的名稱,對應handlers中宣告的名稱

#指定處理器類,該類用於日誌檔案的轉儲

class=handlers.rotatingfilehandler

level=debug

#指定該處理器的日誌格式

formatter=******formatter

#handlers.rotatingfilehandler類的引數,意義在該類中說的很明確

args=("tools/logs/access.log", "a", 1*1024*1024, 5)

[handler_timefilehandler]#處理器,timefilehandler為該處理器的名稱,對應handlers中宣告的名稱

#指定處理器類,該類以時間為基礎進行日誌轉儲

class=handlers.timedrotatingfilehandler

formatter=detailformatter

#handlers.timedrotatingfilehandler的引數,意義在該類中說的很明確

args=('tools/logs/errors.log','d',1,5)

[formatter_******formatter]#設定格式,******formatter該格式的名稱,對應formatters中宣告的格式名稱

#format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

#日誌的具體格式,在logging.formatter類中有具體說明

format=%(asctime)s - %(thread)d - line %(lineno)d - in module: %(module)s, funcname:%(funcname)s - %(levelname)s : %(message)s

#日期格式,在logging.formatter類中有具體說明

datefmt=%y-%m-%d %h:%m:%s

[formatter_detailformatter]#設定格式,detailformatter該格式的名稱,對應formatters中宣告的格式名稱

#format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

format=%(asctime)s -file "%(pathname)s", line %(lineno)d, in %(funcname)s - %(levelname)s : %(message)s

datefmt=%y-%m-%d %h:%m:%s

說明:以上屬於個人配置,可以自行配置

二、使用

class loggerconfig:

def __init__(self):

'''完成配置檔案的載入和初始化

'''# 以時間為轉儲標準轉儲log日誌到檔案error.log,級別waning

self.logger_error = self.logger_load(logger_name='timefilelogger',path='logger.ini')

# 以檔案大小為轉儲標準轉儲log日誌到檔案access.log,級別debug

self.logger_access = self.logger_load(logger_name='rotatingfilelogger',path='logger.ini')

# 僅僅控制台或者終端輸出

self.console = self.logger_load(path='logger.ini')

def logger_load(self,path,logger_name=''):

'''載入log日誌配置檔案

:param logger_name: logger名字,預設root

:return: logger物件

'''config.fileconfig(path)

return logging.getlogger(logger_name)

#單例logger_config = loggerconfig()

console = logger_config.console

access = logger_config.logger_access

error = logger_config.logger_error

說明:需要配合logging的級別函式使用,比如warning():

try:

self.driver.get(url)#獲取路徑

except exception as e:

access.warning(e)

Django專案如何正確配置日誌 logging

當django專案正式部署上線後,我們需要設定debug false。這時開發者應怎樣檢查django程式在生產環境執行時有什麼異常或錯誤呢?答案就是日誌 logging 在生產環境中,django預設是不會在伺服器上自動生成log檔案的,即使程式出現error級別的故障也不會通知管理員。本文將教你...

python 將路徑作為可配置化 os

1 專案中如何將路徑作為可配置 知識點 1 os.path.split path 返回路徑的目錄和檔名,即將目錄和檔名分開,而不是乙個整體。此處只是把前後兩部分分開而已。就是找最後乙個 2 os.path.join project path,result test report 拼接路徑import...

可配置 可配置雙通道的L6364收發器

l6364收發器,為連線io link裝置帶來更多靈活性。除了dc dc變換器和雙模uart收發器外,與此同時還提供兩條通訊通道,可以配置為雙輸出,提高驅動電流強度。l6364支援io link的com2 38.4 kbaud 和com3 230.4 kbaud 兩種通訊速率,以及標準單輸入 輸出 ...