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: "временная ошибка"}

Подробнее:

Logger в Elixir является встроенным инструментом, который был частью языка с его ранних дней. Он подвергался влиянию систем логирования из других языков семейства BEAM, таких как Erlang. Logger предоставляет различные уровни логирования – :debug, :info, :warn и :error – и он модульный, позволяя подключать различные бэкенды для обработки сообщений лога.

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

Внутри, модуль Logger предлагает асинхронное и синхронное логирование. Асинхронное логирование, которое является настройкой по умолчанию, не блокирует выполнение вашего приложения во время записи сообщений. Это гарантирует, что логирование не влияет отрицательно на производительность. Однако синхронное логирование может быть включено для случаев, когда вам нужно гарантировать, что сообщения логируются в том порядке, в котором они были отправлены.

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

См. также: