コンテンツにスキップ

データを埋め戻す

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

本文总阅读量次