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


參考: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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM