介面自動化之實現日誌記錄封裝

一:參考官方文檔:

 

二:日誌的級別:

日誌記錄級別的數值在下表中給出。如果你想要定義自己的級別,並且需要它們具有相對於預定義級別的特定值,那麼這你可能對以下內容感興趣。如果你定義具有相同數值的級別,它將覆蓋預定義的值;預定義的名稱將失效。

 

 

在工作中常用的日誌級別:

 

三:基本使用

import logging

logging.debug("this is debug。。。")

logging.info('this is info ....')

logging.warning('this is warning....')

 

 

 

 

默認logging記錄日誌的級別為 warning級別。也就是說當級別為warning 或者比warning級別更高的時候,才會顯示
 

四:配置日誌級別

import logging
# 設置日誌級別為 DEBUG
logging.basicConfig(level=logging.DEBUG)

logging.debug("this is debug。。。")

logging.info('this is info ....')

logging.warning('this is warning....')

 

 

 

默認日誌列印在控制台,也可以將日誌的保存到文件當中。

import logging
# 設置日誌級別為 DEBUG ,文件名為my.log 文件模式為追加模式
logging.basicConfig(level=logging.DEBUG,filename='my.log',filemode='a',encoding='utf8')

logging.debug("this is debug。。。")
logging.info('this is info ....')
logging.warning('this is warning....')

 

 

 

如果配置到文件中,那麼命令行就不再輸出列印資訊。

 

五:配置同時控制台和文件中列印

 

在項目中 應該是將日誌同時輸出到控制台以及在文件中列印。

配置日誌格式

 

屬性名稱

格式

描述

args

此屬性不需要用戶進行格式化。

合併到 msg 以產生 message 的包含參數的元組,或是其中的值將被用於合併的字典(當只有一個參數且其類型為字典時)。

asctime

%(asctime)s

表示 LogRecord 何時被創建的供人查看時間值。 默認形式為 ‘2003-07-08 16:49:45,896’ (逗號之後的數字為時間的毫秒部分)。

created

%(created)f

LogRecord 被創建的時間(即 time.time() 的返回值)。

exc_info

此屬性不需要用戶進行格式化。

異常元組(例如 sys.exc_info)或者如未發生異常則為 None

文件名

%(filename)s

pathname 的文件名部分。

funcName

%(funcName)s

函數名包括調用日誌記錄.

levelname

%(levelname)s

消息文本記錄級別('DEBUG''INFO''WARNING''ERROR''CRITICAL')。

levelno

%(levelno)s

消息數字的記錄級別 (DEBUGINFOWARNINGERRORCRITICAL).

lineno

%(lineno)d

發出日誌記錄調用所在的源行號(如果可用)。

message

%(message)s

記入日誌的消息,即 msg args 的結果。 這是在發起調用 Formatter.format() 時設置的。

module — 模組

%(module)s

模組 (filename 的名稱部分)。

msecs

%(msecs)d

LogRecord 被創建的時間的毫秒部分。

msg

此屬性不需要用戶進行格式化。

在原始日誌記錄調用中傳入的格式字元串。 與 args 合併以產生 message,或是一個任意對象 (參見 使用任意對象作為消息)。

名稱

%(name)s

用於記錄調用的日誌記錄器名稱。

pathname

%(pathname)s

發出日誌記錄調用的源文件的完整路徑名(如果可用)。

process

%(process)d

進程ID(如果可用)

processName

%(processName)s

進程名(如果可用)

relativeCreated

%(relativeCreated)d

以毫秒數表示的 LogRecord 被創建的時間,即相對於 logging 模組被載入時間的差值。

stack_info

此屬性不需要用戶進行格式化。

當前執行緒中從堆棧底部起向上直到包括日誌記錄調用並引發創建當前記錄堆棧幀創建的堆棧幀資訊(如果可用)。

thread

%(thread)d

執行緒ID(如果可用)

threadName

%(threadName)s

執行緒名(如果可用)

 
 

通過使用文件處理器和控制台處理器進行操作。

 

import logging

# 設置名字
logger = logging.getLogger("某項目的日誌")
# 設置級別
logger.setLevel(logging.DEBUG)

# 配置格式化樣式  文本內容格式
formater = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s: %(message)s')

# 添加控制台處理器
ls = logging.StreamHandler()
ls.setLevel(logging.DEBUG)
# 設置格式
ls.setFormatter(formater)
# 控制台處理器添加到logger中
logger.addHandler(ls)

# 添加文件處理器
import os
import time
logsdir = os.path.join( os.path.dirname( os.path.dirname(__file__)),'logs')
# 日誌目錄定義
if not os.path.exists(logsdir):
    os.mkdir(logsdir)
# 日誌文件 以當時運行的日誌格式
logfile = os.path.join(logsdir,time.strftime('%Y_%m_%d')+'.log')
lf = logging.FileHandler(filename=logfile,encoding='utf8')
lf.setLevel(logging.DEBUG)
lf.setFormatter(formater)
# 文件處理器添加到日誌當中
logger.addHandler(lf)

logger.debug('this is debug')

 

 

 

 

 

某項目的日誌