回填数据¶
当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
本文总阅读量次