Skip to content

添加字段使用 loguru 的 patch 方法/format中使用extra[field]方式来引用 #54

@guoxiaod

Description

@guoxiaod

_logger.add(sys.stderr, filter=self.__filter, format=format_str, enqueue=True)

参考如下的代码, 现在 filter 的方法,可能可以实现同样的功能,但是语法检查会提示错误:

@staticmethod
def __patcher(record):
    """
    自定义日志格式化器,添加trace_id
    """
    if 'trace_id' not in record['extra']:
        record['extra']['trace_id'] = getattr(
            record['extra'], 'trace_id', TraceCtx.get_id())

def init_log(self):
    """
    初始化日志配置
    """
    # 自定义日志格式
    format_str = (
        '<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | '
        '<cyan>{extra[trace_id]}</cyan> | '
        '<level>{level: <8}</level> | '
        '<cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - '
        '<level>{message}</level>'
    )
    _logger.remove()
    # 移除后重新添加sys.stderr, 目的: 控制台输出与文件日志内容和结构一致
    _logger.add(sys.stderr, format=format_str, enqueue=True)
    _logger.add(
        self.log_path_error,
        format=format_str,
        rotation='50MB',
        encoding='utf-8',
        enqueue=True,
        compression='zip',
    )

    return _logger.patch(self.__patcher)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions