You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现每次调用loguru的logger.trace后自动执行log_list.append操作?

解决方案

可以通过Loguru原生支持的自定义Handler机制实现,无需手动修改每次调用的代码,示例如下:

from loguru import logger

log_list = []

# 自定义日志处理函数,符合条件的日志产生时会自动触发
def append_to_list(record):
    # 取格式化后的日志内容,可按需调整提取的字段
    log_content = record["message"]
    log_list.append(log_content)

# 注册自定义Handler,仅处理TRACE级别的日志
handler_id = logger.add(
    append_to_list,
    level="TRACE",
    # 过滤规则:仅保留TRACE级别日志,避免其他等级日志被追加到列表
    filter=lambda record: record["level"].name == "TRACE"
)

# 测试:无需手动执行append操作
logger.trace("Log first time")
# ...执行其他业务逻辑...
logger.trace("Log second time")

# 验证列表内容
print(log_list)
# 输出:['Log first time', 'Log second time']

补充说明

  • 不需要自动追加功能时,调用logger.remove(handler_id)即可移除当前自定义Handler,不会影响其他日志输出逻辑
  • 如果需要保存带时间、行号等信息的完整日志,可以自行拼接处理函数内的日志内容:
    def append_to_list(record):
        log_content = f"{record['time']:%Y-%m-%d %H:%M:%S} | {record['level'].name} | {record['message']}(行号:{record['line']})"
        log_list.append(log_content)
    

内容的提问来源于stack exchange,提问作者EnergyBoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 22:15:07