日志记录:logs

import logging
from logging import handlers
from api.tools.handle_path import log_dir_name
class MyLogger:
    """
    1、日志记录用户行为
    2、理论上要能够根据日志输出,定位到bug
    3、不要输出敏感信息在日志里面:账号、密码、身份证、银行卡等
    4、使用场景:需要print的地方都可以用log进行替换
    5、通过日志能够知道整个执行过程中哪里报错了,就可以了(异常处理),需要将系统的报错信息收集到日志中,方便日后排查问题,找出原因
    """
    @classmethod
    def create_log(cls):
        """创建日志收集器"""
        # 1、创建一个log日志收集器
        my_log = logging.getLogger("my_log")
        # 2、创建一个输出渠道,输出到控制台的日志
        stream_handler = logging.StreamHandler()  # 控制台
        # 创建一个handler,用于写入日志文件(本地存储) when="D", interval=1 设置日志频率为1天
        file_handler = handlers.TimedRotatingFileHandler(filename=log_dir_name, when="D", interval=1, encoding='utf-8')
        # 3、设置日志的格式
        formatter = logging.Formatter(
            '%(asctime)s-[%(filename)s—->line:%(lineno)d] - %(name)s:%(levelname)s:%(message)s')
        # 4、渠道绑定日志格式,设置输出到控制台的格式
        stream_handler.setFormatter(fmt=formatter)
        file_handler.setFormatter(formatter)
        # 日志收集器设置日志级别
        my_log.setLevel(level=logging.DEBUG)
        stream_handler.setLevel("INFO")  # 渠道的日志级别
        file_handler.setLevel('DEBUG')
        # 日志收集器绑定渠道
        my_log.addHandler(file_handler)
        my_log.addHandler(stream_handler)
        return my_log
# 创建日志对象,用于外部调用
my_log = MyLogger.create_log()
if __name__ == '__main__':
    my_log.info("This is an info message")

 

posted on 2020-03-10 17:21  诚实的表达自己  阅读(462)  评论(0编辑  收藏  举报