4 django logger封装

1 封装

  • self.logger.setLevel(LEVELS["INFO"])  # 修改此处可以控制日志级别
import logging
import logging.handlers
import os
import time


class Logger(object):
    def __init__(self):
        self.logger = logging.getLogger("")

        # 设置输出的等级
        LEVELS = {'NOSET': logging.NOTSET,
                  'DEBUG': logging.DEBUG,
                  'INFO': logging.INFO,
                  'WARNING': logging.WARNING,
                  'ERROR': logging.ERROR,
                  'CRITICAL': logging.CRITICAL}

        # 创建文件目录
        log_path = os.path.abspath(os.path.join(os.getcwd(), "../logs"))  # logs 文件夹
        if os.path.exists(log_path) and os.path.isdir(log_path):
            pass
        else:
            os.mkdir(log_path)

        # 修改log保存位置
        # log_path = os.path.abspath(os.path.join(os.getcwd(), "../logs"))  # logs 文件夹
        timestamp = time.strftime("%Y-%m-%d", time.localtime())
        log_file_name = '{}.txt'.format(timestamp)
        log_file = os.path.join(log_path, log_file_name)    # 日志文件
        rotatingFileHandler = logging.handlers.RotatingFileHandler(filename=log_file,
                                                                   maxBytes=1024 * 1024 * 5,    # 5M
                                                                   backupCount=10,
                                                                   encoding='utf-8')

        # 设置输出格式
        formatter = logging.Formatter('[%(asctime)s][%(filename)s][%(funcName)s][%(lineno)d][%(levelname)s] > %(message)s')
        rotatingFileHandler.setFormatter(formatter)

        # 控制台句柄
        console = logging.StreamHandler()
        console.setLevel(logging.NOTSET)
        console.setFormatter(formatter)

        # 添加内容到日志句柄中
        self.logger.addHandler(rotatingFileHandler)
        self.logger.addHandler(console)
        self.logger.setLevel(LEVELS["INFO"])  # 修改此处可以控制日志级别

    def info(self, message):
        self.logger.info(message)

    def debug(self, message):
        self.logger.debug(message)

    def warning(self, message):
        self.logger.warning(message)

    def error(self, message):
        self.logger.error(message)

 

2 setting 中初始化

from utils.logger3 import Logger

logger = Logger()

 

3 测试

from lizi_auto_test.settings import logger

logger.info("this is info")
logger.debug("this is debug")
logger.error("this is error")
logger.warning("this is warning")

文件和控制台输出结果:------------------------
[2021-05-09 15:33:45,828][logger3.py][info][51][INFO] > this is info
[2021-05-09 15:33:45,828][logger3.py][error][60][ERROR] > this is error
[2021-05-09 15:33:45,828][logger3.py][warning][57][WARNING] > this is warning
[2021-05-09 15:35:26,042][logger3.py][error][60][ERROR] > this is error
[2021-05-09 15:35:26,042][logger3.py][warning][57][WARNING] > this is warning
[2021-05-09 15:35:47,360][logger3.py][error][60][ERROR] > this is error

 

posted @ 2021-05-09 15:40  栗子测试开发  阅读(127)  评论(0)    收藏  举报