python之log模块封装

# CreateTime: 2019/5/8 20:03
# Author: li jianhua
import logging
import time
import os


class Log(object):
    def __init__(self, log_dir):
        """
          指定保存日志的文件路径,日志级别,以及调用文件将日志存入到指定的文件中
        """
        self.log_dir = log_dir
        if not os.path.exists(self.log_dir):
            os.mkdir(self.log_dir)

    def get_log(self, log_name, mode='a'):
        # 创建一个logger
        logger_name = log_name[:-4] if log_name.endswith('.log') else log_name
        logger = logging.getLogger(logger_name)
        logger.setLevel(logging.DEBUG)
        # 创建一个handler,用于写入日志文件
        log_path = os.path.join(self.log_dir, log_name)
        fh = logging.FileHandler(log_path, mode=mode, encoding='utf-8')
        fh.setLevel(logging.INFO)
        # 创建一个handler,用于输出到控制台
        ch = logging.StreamHandler()
        ch.setLevel(logging.INFO)
        # 定义handler的输出格式
        formatter = logging.Formatter(
            '[%(asctime)s] %(filename)s->%(funcName)s line:%(lineno)d [%(levelname)s]%(message)s')
        fh.setFormatter(formatter)
        ch.setFormatter(formatter)
        # 给logger添加handler
        logger.addHandler(fh)
        logger.addHandler(ch)
        # 关闭打开的文件
        fh.close()
        ch.close()
        return logger


log_dir = r'/home/gzblue/ljh/virtual_proj/smoke/region/chengdu/output_data/log_data'
base_log = Log(log_dir)
check_config_logger = base_log.get_log('check_config.log', mode='w')
background_preprocess_logger = base_log.get_log('background_preprocess.log', mode='w')
main_logger = base_log.get_log('main.log', mode='a')

if __name__ == '__main__':
    log_dir = r'log_data'
    log_name = r'test.log'
    log = Log(log_dir)
    logger = log.get_log(log_name)
    logger.info('This is a')
    logger.info('This is b')
    logger.warning('This is c')

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值