flask log

作者: Joncc | 来源:发表于2022-06-23 10:49 被阅读0次
"""
日志
"""
import logging
import uuid
from functools import wraps
from flask import request


def get_request_id() -> str:
    """
    获取request_id,如果没有使用uuid
    """
    req_id = request.headers.get("Request-Id")
    request_id = req_id if req_id else str(uuid.uuid1())
    return request_id.replace("-", "").replace("_", "")


def add_request_id(func):
    """
    日志中输出额外参数字段request_id
    """

    @wraps(func)
    def wrapper(msg, *args, **kwargs):
        """
        添加extra
        """
        kwargs["extra"] = {
            "request_id": get_request_id(),
        }
        func(msg, *args, **kwargs)

    return wrapper


class Logger:
    """
    自定义日志处理, 往日志中输出额外参数字段(这里为request id)
    """

    def __init__(self, name=None):
        """
        初始化日志
        """
        self.logger = logging.getLogger(name)

    def setLevel(self, log_level):
        """
        设置日志级别
        """
        self.logger.setLevel(log_level)

    def addHandler(self, handler):
        """
        添加handler
        """
        self.logger.addHandler(handler)

    @add_request_id
    def debug(self, msg, *args, **kwargs):
        """
        debug
        """
        self.logger.debug(msg, *args, **kwargs)

    @add_request_id
    def info(self, msg, *args, **kwargs):
        """
        info
        """
        self.logger.info(msg, *args, **kwargs)

    @add_request_id
    def warn(self, msg, *args, **kwargs):
        """
        warning
        """
        self.logger.warning(msg, *args, **kwargs)

    @add_request_id
    def error(self, msg, *args, **kwargs):
        """
        warning
        """
        self.logger.error(msg, *args, **kwargs)

def logger(log_level):
    logger = Logger("AILogger")
    logger.setLevel(log_level=log_level)
    sh = logging.StreamHandler()
    formatter = logging.Formatter(
        fmt="[%(request_id)s]: %(asctime)s: %(levelname)s: [%(filename)s: %(lineno)d]: %(message)s",
        datefmt="%Y-%m-%d %H:%M:%S",
    )
    sh.setFormatter(formatter)
    logger.addHandler(sh)
    return logger

相关文章

网友评论

      本文标题:flask log

      本文链接:https://www.haomeiwen.com/subject/olwpvrtx.html