# -*- 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")

 

原文地址:http://www.cnblogs.com/hudieren/p/16792174.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性