Перейти к содержанию

Засыпка данных

Когда 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

本文总阅读量次