Python實現日誌文件寫入或者打印--相似於Java的Log4j

開發過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工具

相關文章
相關標籤/搜索