日志管理作為軟件項目的通用部分,無論是開發還是自動化測試過程中,都顯得尤為重要。
最初是打算利用python的logging模塊來管理日志的,后來看了些github及其他人的自動化框架設計,做了個比對后,還是決定使用logbook。
這篇博客,介紹下python中的logbook模塊的使用方法,僅供參考。。。
一、下載安裝
1、文件安裝
從官網下載logbook安裝文件,然后安裝即可。
官網鏈接:https://pypi.org/project/Logbook/
2、pip命令安裝
進入CMD命令行,輸入 pip install logbook 命令進行安裝,安裝成功后,輸入 pip show logbook 命令,查看相關信息。
二、logbook簡介
logbook的設計初衷,就是用來取代python的標准庫日志模塊:logging。具體內容可通過下方的鏈接查看官方文檔說明:
官方文檔:http://logbook.readthedocs.io/en/stable/index.html
三、用法說明
示例代碼如下:log.py
# coding=utf-8
import os import sys import logbook from logbook import Logger,StreamHandler,FileHandler,TimedRotatingFileHandler from logbook.more import ColorizedStderrHandler def log_type(record,handler): log = "[{date}] [{level}] [{filename}] [{func_name}] [{lineno}] {msg}".format( date = record.time, # 日志時間
level = record.level_name, # 日志等級
filename = os.path.split(record.filename)[-1], # 文件名
func_name = record.func_name, # 函數名
lineno = record.lineno, # 行號
msg = record.message # 日志內容
) return log # 日志存放路徑
LOG_DIR = os.path.join("Log") if not os.path.exists(LOG_DIR): os.makedirs(LOG_DIR) # 日志打印到屏幕
log_std = ColorizedStderrHandler(bubble=True) log_std.formatter = log_type # 日志打印到文件
log_file = TimedRotatingFileHandler( os.path.join(LOG_DIR, '%s.log' % 'log'),date_format='%Y-%m-%d', bubble=True, encoding='utf-8') log_file.formatter = log_type # 腳本日志
run_log = Logger("script_log") def init_logger(): logbook.set_datetime_format("local") run_log.handlers = [] run_log.handlers.append(log_file) run_log.handlers.append(log_std) # 實例化,默認調用
logger = init_logger()
代碼解析:
1、定義日志文件類型,依次按照時間、日志等級、測試文件名、函數方法名、行數、具體的信息來展示;
日志等級:
level | describe |
critical | 嚴重錯誤,會導致程序退出 |
error | 可控范圍內的錯誤 |
warning | 警告信息 |
notice | 大多情況下希望看到的記錄 |
info | 大多情況不希望看到的記錄 |
debug | 調試程序時詳細輸出的記錄 |
2、定義日志存放路徑為Log文件夾;
3、logbook的日志輸出方式有2種:打印到屏幕(比較適合調試時候,正式使用時可以將其注釋掉)和打印輸出到日志文件;
4、定義日志輸出;
5、實例化,方便其他模塊調用;
可以通過測試代碼來測試日志是否打印到了對應的路徑,測試代碼如下:test_log.py
# coding=utf-8
import os from log import run_log as logger if __name__ == '__main__': logger.info("測試log模塊,暫時就優化到這一步,后續再改進")
測試結果:
如上所示,即為logbook的基本使用方法,代碼僅供參考,具體使用請自行實踐。。。