import logging
import os
from logging import handlers

# 项目绝对路径
path = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))


class Logger(logging.Logger):

    def __init__(self,
                 name,
                 file_name="{}/logs/all.log".format(path),
                 when='S',
                 interval=0,
                 backupCount=5,
                 level=0,
                 fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',
                 encoding='utf-8',
                 **kw):
        # 初始化logger,并设置日志级别
        self.logger = logging.Logger(name)
        self.logger.setLevel(level)
        # 设置日志格式
        log_format = logging.Formatter(fmt)
        # 判断以什么格式输出
        if not file_name:
            handler = logging.StreamHandler()
        else:
            # 往文件里写入,指定间隔时间自动生成文件的处理器
            handler = handlers.TimedRotatingFileHandler(filename=file_name,when=when,backupCount=backupCount,encoding=encoding)
            # 实例化TimedRotatingFileHandler
            # interval是时间间隔，backupCount是备份文件的个数，如果超过这个个数，就会自动删除，when是间隔的时间单位，单位有以下几种：
            # S 秒
            # M 分
            # H 小时
            # D 天
            # W{0-6} 星期几（interval=0时代表星期一）
            # midnight 每天凌晨
        # 设置处理器的级别
        handler.setLevel(level)
        # 设置处理器的格式
        handler.setFormatter(log_format)
        # 处理器添加到收集器里面
        self.logger.addHandler(handler)
        print(handler)


logger = Logger("hahhahaha")
logger.info("")


