Python利用logging包记录、打印日志

封装日志操作类:

以下是已经封装好logging的日志类文件,直接调用即可。
可以根据自己的需求,自行调整封装的内容。

# logger.py

import os, sys
from datetime import datetime


class Logger(object):
    """
    日志操作类
    """
    import logging.handlers
    import logging

    # 日志目录
    __LOG_PATH = os.path.abspath(os.path.dirname(os.path.dirname(__file__)) + os.sep + 'logs' + os.sep)
    # 日志大小(单位:M),超过后最老日志被自动覆盖
    __LOG_SIZE = 8
    # 日志保存个数
    __LOG_NUM = 1

    # 读取目录路径
    logpath = __LOG_PATH
    # 读取日志文件容量,转换为字节
    logsize = 1024 * 1024 * __LOG_SIZE
    # 读取日志文件保存个数
    lognum = __LOG_NUM

    # 判断目录路径是否存在,假如不存在,则创建
    if not os.path.exists(logpath):
        os.mkdir(logpath)
    # 日志文件名:由用例脚本的名称,结合日志保存路径,得到日志文件的绝对路径
    logname = os.path.join(logpath, sys.argv[0].split('/')[-1].split('.')[0] + '_' + datetime.now().strftime("%Y%m%d") + '.log')

    # 初始化logger
    log = logging.getLogger()
    # 日志格式,可以根据需要设置
    fmt = logging.Formatter('[%(asctime)s][%(levelname)s] %(message)s',
                            '%Y-%m-%d %H:%M:%S')

    # 日志输出到文件,这里用到了上面获取的日志名称,大小,保存个数
    handle1 = logging.handlers.RotatingFileHandler(logname, maxBytes=logsize, backupCount=lognum, encoding='utf-8')
    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(self, msg):
        self.log.info(msg)
        return

    @classmethod
    def warning(self, msg):
        self.log.warning(msg)
        return

    @classmethod
    def error(self, msg):
        self.log.error(msg)
        return

使用方法:

# testLog.py

import logger

# 实例化操作对象
logger = Logger()

# 记录日志信息
logger.info("提示信息")
logger.warning("警告信息")
logger.error("错误信息")

可以根据自己的需要,自行调整Logger()的封装内容,如日志格式、存放等。

你可能感兴趣的:(Python利用logging包记录、打印日志)