Первые шаги
Установка
Для 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, так что логи остаются читаемыми и дешёвыми.
Вывод
По умолчанию логи идут в стандартный вывод — этого ждут контейнерные платформы. При необходимости пишите в файл или сразу в несколько мест.