log — Логирование для Rust

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое библиотека log для Rust?

Библиотека log — это стандартная абстракция для логирования в экосистеме Rust. Она предоставляет легковесный фасад (facade), который позволяет разработчикам писать код, генерирующий логи, не привязываясь к конкретной реализации логгера (например, env_logger, simple_logger или slog). Это аналог популярных библиотек logging в Python, но с фокусом на производительность и безопасность памяти.

Зачем нужна библиотека log?

Основная цель log — разделить генерацию логов и их обработку. Вы можете использовать макросы info!, warn!, error! в своём коде, а позже, подключив один из бэкендов (например, env_logger), перенаправить вывод в консоль, файл или систему мониторинга. Это особенно полезно для:

  • Отладки сложных систем
  • Мониторинга продакшн-приложений
  • Создания библиотек, которые не должны диктовать пользователю способ логирования

Установка

Добавьте в Cargo.toml:

[dependencies]
log = "0.4"
env_logger = "0.10"  # для вывода в консоль

Затем выполните cargo build.

Основные функции

  • Макросы логирования: error!, warn!, info!, debug!, trace! — с поддержкой форматирования строк как в println!.
  • Уровни фильтрации: можно задать минимальный уровень (например, только ошибки) через переменную окружения RUST_LOG.
  • Расширяемость: поддержка кастомных логгеров через трейт Log.
  • Безопасность: логи не влияют на производительность, если уровень отключен.

Пример кода на Rust

use log::{info, warn, error};

fn main() {
    // Инициализация логгера (env_logger)
    env_logger::init();

    let user = "Alice";
    let status = 200;

    info!("Пользователь {} вошёл в систему", user);
    warn!("Статус ответа: {} — возможно, устаревший кэш", status);
    error!("Не удалось подключиться к базе данных: {}", "timeout");
}

Запустите с RUST_LOG=info cargo run, чтобы увидеть все сообщения уровня info и выше.

Когда использовать

Библиотека log идеальна для:

  • Любого Rust-приложения, где нужна стандартная система логирования (CLI, серверы, утилиты).
  • Библиотек — чтобы пользователь мог сам выбрать бэкенд.
  • Проектов, мигрирующих с Python: концепция похожа на logging.getLogger().

Избегайте log, если вам нужна асинхронная запись в файл или структурированные JSON-логи — в таких случаях лучше подойдут tracing или slog.

Рекомендаций