如何实现每次调用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
相关产品推荐
相关产品推荐

