跳转至

回填数据

当Logfire无法向服务器发送日志时,它会将数据转储到磁盘上,以避免数据丢失。

Logfire支持批量加载数据,既可以从其他系统导入数据,也可以加载已经转储到磁盘的数据。

要回填数据,您可以使用 logfire 回填命令:

$ logfire 回填 --help

默认情况下,logfire backfill 将从默认的回退文件中读取,因此,如果您只是在网络故障后尝试上传数据,则可以运行:

$ logfire 回填

批量加载数据

同样的机制也可用于批量加载数据,例如,如果您从另一个系统导入数据。

首先创建一个转储文件:

from datetime import datetime

from logfire.backfill import Log, PrepareBackfill, StartSpan

with PrepareBackfill('logfire_spans123.bin') as backfill:
    span = StartSpan(
        start_timestamp=datetime(2023, 1, 1, 0, 0, 0),
        span_name='session',
        msg_template='session {user_id=} {path=}',
        service_name='docs.pydantic.dev',
        log_attributes={'user_id': '123', 'path': '/test'},
    )
    child = StartSpan(
        start_timestamp=datetime(2023, 1, 1, 0, 0, 1),
        span_name='query',
        msg_template='ran db query',
        service_name='docs.pydantic.dev',
        log_attributes={'query': 'SELECT * FROM users'},
        parent=span,
    )
    backfill.write(
        Log(
            timestamp=datetime(2023, 1, 1, 0, 0, 2),
            msg_template='GET {path=}',
            level='info',
            service_name='docs.pydantic.dev',
            attributes={'path': '/test'},
        )
    )
    backfill.write(child.end(end_timestamp=datetime(2023, 1, 1, 0, 0, 3)))
    backfill.write(span.end(end_timestamp=datetime(2023, 1, 1, 0, 0, 4)))

这将创建一个包含数据的logfire_spans123.bin文件。

然后使用回填命令行工具加载它:

$ logfire backfill --file logfire_spans123.bin

本文总阅读量