開發過Java的應該都知道Log4j的重要性,尤爲是在開發測試中,可以讓開發和測試人員方便找的bug,Python也有和Log4j相同功能的庫那就是logging庫,其功能很是強大,在開發測試中很方便,我是將其做爲工具使用的,代碼syslog.py以下:python
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/11/27 15:39 # @Desc : 系統日誌,主要用來打印測試 # @File : syslog.py # @Software: PyCharm from lxml import etree import logging.handlers import logging import os import sys # 提供日誌功能 class syslogger: # 先讀取XML文件中的配置數據 # 因爲config.xml放置在與當前文件相同的目錄下,所以經過 __file__ 來獲取XML文件的目錄,而後再拼接成絕對路徑 # 這裏利用了lxml庫來解析XML root = etree.parse(os.path.join(os.path.dirname(__file__), '../LogConfig.xml')).getroot() # 讀取日誌文件保存路徑 logpath = root.find('logpath').text # 讀取日誌文件容量,轉換爲字節 logsize = 1024*1024*int(root.find('logsize').text) # 讀取日誌文件保存個數 lognum = int(root.find('lognum').text) # 日誌文件名:由用例腳本的名稱,結合日誌保存路徑,獲得日誌文件的絕對路徑 logname = os.path.join(logpath, sys.argv[0].split('/')[-1].split('.')[0]) # 初始化logger log = logging.getLogger() # 日誌格式,能夠根據須要設置 fmt = logging.Formatter('[%(asctime)s][%(filename)s][line:%(lineno)d][%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S') # 日誌輸出到文件,這裏用到了上面獲取的日誌名稱,大小,保存個數 handle1 = logging.handlers.RotatingFileHandler(logname, maxBytes=logsize, backupCount=lognum) handle1.setFormatter(fmt) # 同時輸出到屏幕,便於實施觀察 handle2 = logging.StreamHandler(stream=sys.stdout) handle2.setFormatter(fmt) log.addHandler(handle1) log.addHandler(handle2) # 設置日誌基本,這裏設置爲INFO,表示只有INFO級別及以上的會打印 log.setLevel(logging.INFO) # 日誌接口,用戶只需調用這裏的接口便可,這裏只定位了INFO, WARNING, ERROR三個級別的日誌,可根據須要定義更多接口 @classmethod def info(cls, msg): cls.log.info(msg) return @classmethod def warning(cls, msg): cls.log.warning(msg) return @classmethod def error(cls, msg): cls.log.error(msg) return syslogger=syslogger()
其配置文件LogConfig.xml以下:app
<?xml version="1.0" encoding="utf-8"?> <!--系統日誌配置文件--> <config> <!-- 日誌保存路徑 --> <logpath>/home/</logpath> <!-- 每一個腳本對應的日誌文件大小,單位MB --> <logsize>100</logsize> <!-- 每一個腳本保存的日誌文件個數 --> <lognum>3</lognum> </config>
若無Python logging庫,安裝命令pip install logging工具