Elixir:
Логування

Як це зробити:

У мові програмування Elixir основний спосіб запису інформації - використання вбудованого модуля Logger. Ось як ви можете це здійснити:

defmodule MyApplication do
  require Logger

  def do_something_important(param) do
    Logger.info("Починаємо важливий процес з параметром: #{param}")

    # Симуляція виконання роботи
    :timer.sleep(1000)

    Logger.debug("Процес завершено.")
  rescue
    error -> Logger.error("Сталася помилка: #{inspect(error)}")
  end
end

# Щоб побачити ваші логи, просто викличте функцію:
MyApplication.do_something_important("MyParam")

Цей простий фрагмент коду показує, як вести логи різних рівнів (info, debug, error). Коли ви запустите це, ви не побачите повідомлення debug, якщо не налаштуєте рівень Logger на :debug. За замовчуванням, Logger в Elixir фільтрує повідомлення логів, які нижче :info.

Прикладний вивід на рівні :info може виглядати так:

14:32:40.123 [info]  Починаємо важливий процес з параметром: MyParam
14:32:41.126 [error] Сталася помилка: %RuntimeError{message: "runtime error"}

Поглиблений аналіз:

Logger у Elixir - це вбудований інструмент, який був частиною мови з самого початку. Він був створений під впливом систем логування інших мов BEAM, таких як Erlang. Logger надає різні рівні логування – :debug, :info, :warn та :error – і є плаґіновим, що дозволяє підключення різних бекендів для обробки повідомлень логів.

Одна з альтернатив вбудованого Logger для складніших сценаріїв - використання бібліотек логування, таких як Logstash або Sentry для Elixir, які можуть забезпечити додаткові функції, такі як відстеження помилок і агрегація у більш наочному форматі. Для локальної розробки, розробники Elixir часто покладаються на функціональність вбудованого Logger, за його простоту і інтеграцію з віртуальною машиною BEAM.

Під капотом модуль Logger пропонує асинхронне та синхронне логування. Асинхронне логування, яке є типовим, не блокує виконання вашого додатку під час запису повідомлень. Це забезпечує, що логування не впливає негативно на продуктивність. Однак, синхронне логування можна включити для випадків, коли потрібно гарантувати, що повідомлення логування будуть записані в тому порядку, в якому вони були відправлені.

Конфігурацію Logger можна налаштувати у файлі config/config.exs вашого додатка Elixir, де можна встановити рівень логування, формат, метадані та багато іншого. Завжди пам’ятайте про необхідність регулювання рівнів логування та виводу для різних середовищ; ви точно не хочете, щоб велика кількість деталізованих логів захлиснула ваші продуктивні системи.

Дивіться також: