Первые шаги

Установка

Для datacloud нужен Rust 1.70+. Добавьте библиотеку в проект:

cargo add datacloud

Быстрый старт

В примере ниже создаётся Logger с парой настроек и сразу используется.

use datacloud::{Logger, Error};

#[tokio::main]
async fn main() -> Result<(), Error> {
    let logger = Logger::builder()
        .level("info")
        .format("json")
        .build()?;

    logger.info("сервер запущен").await?;

    let ok = logger.set_level("debug").await?;
    println!("{ok:?}");
    Ok(())
}

Поля

У каждой записи есть время, уровень и сообщение, плюс любые добавленные поля. Предпочитайте поля форматированию строк: по ним проще искать, и они дешевле.

Уровни

Записи ниже заданного уровня отбрасываются до кодирования полей. Меняйте уровень на лету через set_level(), например из служебного эндпоинта.

Дочерние логгеры

with() возвращает логгер, добавляющий поля к каждой записи. Создавайте такой на каждый запрос с его id и передавайте дальше.

Дочерние логгеры делят вывод и уровень с родителем.

Сэмплирование

Под нагрузкой одно и то же сообщение может писаться тысячи раз в секунду. Сэмплирование сохраняет первые записи каждой секунды, а дальше — одну из N, так что логи остаются читаемыми и дешёвыми.

Вывод

По умолчанию логи идут в стандартный вывод — этого ждут контейнерные платформы. При необходимости пишите в файл или сразу в несколько мест.