1. 程式人生 > >Python之自定義封裝一個簡單的Log類

Python之自定義封裝一個簡單的Log類

實例對象 級別 port detail 問題 文件夾 相對 alt 腳本

參考:http://www.jb51.net/article/42626.htm

參考:http://blog.csdn.net/u011541946/article/details/70198676

介紹如何寫一個Python日誌類,用來輸出不同級別的日誌信息到本地文件夾下的日誌文件裏。我們需要記錄我們測試腳本到底做了什麽事情,最好的辦法是寫事件監聽。這個事件監聽,對我們現在來說,還是有點復雜去理解,所以我這裏,選擇封裝一個簡單的日誌類,同樣達到這個效果。
我們大概需要如下日誌輸出效果:

技術分享圖片

問題分析:
我們需要封裝一個簡單的日誌類,主要有以下內容:
1. 生成的日誌文件格式是 年月日時分秒.log
2. 生成的xxx.log文件存儲在項目根目錄下Logs文件夾下
3. 這個日誌類,支持INFO,ERROR兩種日誌級別
4. 日誌裏,每行日誌輸出,如上圖,時間日期+執行類名稱+日誌級別+日誌描述

解決問題思路:
1. 在根目錄下新建一個Logs的文件夾,如何獲取這個Log的相對路徑,前面介紹過。
2. 日誌的保存命名,需要系統時間,前面也介紹過時間格式化輸出
3. Python中有一個logging模塊來支持我們自定義封裝一個新日誌類。
4. 在腳本裏,初始化一個日誌類的實例對象,然後去控制輸出INFO還是ERROR日誌信息。

如果你想開發一個日誌系統, 既要把日誌輸出到控制臺, 還要寫入日誌文件,只要這樣使用:

 1 # _*_ coding: utf-8 _*_
 2 import logging
 3 import os.path
 4 import time
 5 
 6 
 7 class Logger(object):
 8     def __init__(self, logger):
 9         """
10         指定保存日誌的文件路徑,日誌級別,以及調用文件
11             將日誌存入到指定的文件中
12         :param logger:
13         """
14 # 創建一個logger 15 self.logger = logging.getLogger(logger) 16 self.logger.setLevel(logging.DEBUG) 17 18 # 創建日誌名稱。 19 rq = time.strftime(%Y%m%d%H%M, time.localtime(time.time())) 20 # os.getcwd()獲取當前文件的路徑,os.path.dirname()獲取指定文件路徑的上級路徑 21 log_path = os.path.dirname(os.getcwd()) +
/Logs/ 22 log_name = log_path + rq + .log 23 # 創建一個handler,用於寫入日誌文件 24 fh = logging.FileHandler(log_name) 25 fh.setLevel(logging.INFO) 26 27 # 再創建一個handler,用於輸出到控制臺 28 ch = logging.StreamHandler() 29 ch.setLevel(logging.INFO) 30 31 # 定義handler的輸出格式 32 formatter = logging.Formatter(%(asctime)s - %(name)s - %(levelname)s - %(message)s) 33 fh.setFormatter(formatter) 34 ch.setFormatter(formatter) 35 36 # 給logger添加handler 37 self.logger.addHandler(fh) 38 self.logger.addHandler(ch) 39 40 def getlog(self): 41 return self.logger

Python之自定義封裝一個簡單的Log類