• flask日志配置


    flask日志设置

    在App/utils/ 新建loggings.py文件

    from flask import request
    import logging
    import logging.handlers
    import os
    
    
    class RequestFormatter(logging.Formatter):
        """
        针对请求信息的日志格式
        """
        def format(self, record):
            record.url = request.url
            record.remote_addr = request.remote_addr
            return super().format(record)
    
    
    def create_logger(app):
        """
        设置日志
        :param app: Flask app对象
        :return:
        """
        logging_file_dir = app.config['LOGGING_FILE_DIR']
        logging_file_max_bytes = app.config['LOGGING_FILE_MAX_BYTES']
        logging_file_backup = app.config['LOGGING_FILE_BACKUP']
        logging_level = app.config['LOGGING_LEVEL']
    
        flask_console_handler = logging.StreamHandler()
        flask_console_handler.setFormatter(logging.Formatter('%(levelname)s %(module)s %(lineno)d %(message)s'))
    
        request_formatter = RequestFormatter('%(levelname)s [%(asctime)s] %(remote_addr)s -> %(url)s '
                                             '%(module)s %(lineno)d: %(message)s')
    
        cida_formatter = RequestFormatter('%(levelname)s [%(asctime)s]  %(module)s %(lineno)d: %(message)s')
    
        flask_file_handler = logging.handlers.RotatingFileHandler(
            filename=os.path.join(logging_file_dir, 'flask.log'),
            maxBytes=logging_file_max_bytes,
            backupCount=logging_file_backup
        )
        flask_file_handler.setFormatter(request_formatter)
    
        log_flask_app = logging.getLogger('flask.app')
        log_flask_app.addHandler(flask_file_handler)
        log_flask_app.setLevel(logging_level)
    
        cida_file_handler = logging.handlers.RotatingFileHandler(
            filename=os.path.join(logging_file_dir, 'xxx_action.log'),
            maxBytes=logging_file_max_bytes,
            backupCount=logging_file_backup
        )
    
        cida_file_handler.setFormatter(cida_formatter)
        log_flask_cida = logging.getLogger('xxx.app')
        log_flask_cida.addHandler(cida_file_handler)
        log_flask_cida.setLevel(logging_level)
    
        if app.debug:
            log_flask_app.addHandler(flask_console_handler)

    在App/__init__.py 的create_app 中新增配置

    def create_app(env):
        # 创建Flask的app对象
        app = Flask(__name__)
    
        ... ...
    
        # 配置日志
        from .utils.loggings import create_logger
        create_logger(app)

    在App/settings.py中新增相关配置

    # 日志
        LOGGING_LEVEL = 'DEBUG'
        LOGGING_FILE_DIR = './logs'
        LOGGING_FILE_MAX_BYTES = 300 * 1024 * 1024
        LOGGING_FILE_BACKUP = 10

    如何在flask中使用???

    在view页面,导入,使用

    from flask import Blueprint
    import logging
    logger = logging.getLogger('cida.app')
    
    blue = Blueprint('blue', __name__)
    
    
    def init_views(app):
        app.register_blueprint(blue)
    
    
    @blue.route('/')
    def index():
        logger.error('Error')
        logger.warning('Warning')
        logger.info("Info")
        return "Index"

    日志如下:

    转载请标明出处:http://www.cnblogs.com/duzhaoqi/
  • 相关阅读:
    prettier 与 eslint 对比
    vscode快捷键补充
    什么是函数式编程
    让Chrome看不了WWDC直播的HLS技术详解
    IPv6启动五年后,距离我们究竟还有多远?
    WebSocket+MSE——HTML5 直播技术解析
    为什么各大厂商要抢先跟进H.265?
    如何通过 WebP 兼容减少图片资源大小
    IPv6,AppStore 审核不是唯一选择它的原因
    为什么非全站升级HTTPS不可?
  • 原文地址:https://www.cnblogs.com/duzhaoqi/p/14408277.html
Copyright © 2020-2023  润新知