加日志的使用方法

# -*- coding: utf-8 -*-
# @Author  : 107
# @File    : logdriver.py
# @explain : 日志

import logging
import logging.config
import os
import time


class LogDriver:
    def __init__(self, log_path=None):
        """
        :param log_path: 日志存储路径
        """
        if log_path:
            self.log_path = log_path
        else:
            self.BASE_DIR = os.path.dirname(os.path.abspath(__file__))
            # self.today = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
            self.today = time.strftime("%Y-%m-%d", time.localtime(time.time()))
            self.log_path = os.path.join(self.BASE_DIR, "logs", self.today)

        if not os.path.exists(self.log_path):
            os.makedirs(self.log_path)

        self.logger = self.__config()

    def __config(self):
        _ = self
        """
        formatters:
            %(asctime)s -> 时间
            %(msecs)s -> 毫秒
            %(thread)s -> 进程号
            %(filename)s -> 文件名
            %(levelname)s -> 日志等级
            %(lineno)s -> 哪一行错了
            %(funcName)s -> 函数名
            %(message)s -> 报错信息
        """
        config = {
            'version': 1,
            'formatters': {
                'log_format': {
                    'format': '[%(asctime)s.%(msecs)d] [%(levelname)s] [ %(filename)s -> %(lineno)d] [%(message)s]',
                    'datefmt': '%Y-%m-%d %H:%M:%S'
                },
            },
            'filters': {
            },
            'handlers': {
                'console': {
                    'level': 'DEBUG',
                    'class': 'logging.StreamHandler',
                    'formatter': 'log_format'
                },
                'default': {
                    'level': 'INFO',
                    'class': 'logging.handlers.RotatingFileHandler',  # 将日志消息发送到磁盘文件,并支持日志文件按大小切割
                    'filename': os.path.join(self.log_path, "log.log"),  # 日志输出文件
                    'maxBytes': 1024 * 1024 * 5,  # 文件大小
                    'formatter': 'log_format',  # 使用哪种formatters日志格式
                    'backupCount': 1,
                    'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
                },
            },
            'loggers': {
                'zhang3': {
                    'handlers': ['default', 'console'],
                    'level': 'DEBUG',
                    'propagate': True
                }
            }
        }

        logging.config.dictConfig(config)
        logger = logging.getLogger('zhang3')
        return logger


if __name__ == "__main__":
    logger = LogDriver().logger
    # logger.info("info")
    # logger.error("error")
    # logger.debug("debug")
    # try:
    #     a = 0 / 0
    # except Exception as e:
    #     logger.exception(e)
    # logger.warning("warning")
    # logger.critical("critical")

 

posted @ 2022-10-14 16:52  167  阅读(57)  评论(0)    收藏  举报