Elixir:
Rejestrowanie zdarzeń

Jak to zrobić:

W Elixirze, podstawowym sposobem logowania informacji jest wbudowany moduł Logger. Oto jak można go użyć:

defmodule MyApplication do
  require Logger

  def do_something_important(param) do
    Logger.info("Rozpoczynanie ważnego procesu z parametrem: #{param}")

    # Symulacja wykonywanej pracy
    :timer.sleep(1000)

    Logger.debug("Proces zakończony.")
  rescue
    error -> Logger.error("Wystąpił błąd: #{inspect(error)}")
  end
end

# Aby zobaczyć swoje logi, wystarczy wywołać funkcję:
MyApplication.do_something_important("MyParam")

Ten prosty fragment kodu pokazuje, jak logować na różnych poziomach (info, debug i error). Gdy uruchomisz ten kod, nie zobaczysz wiadomości debug, chyba że skonfigurujesz poziom Loggera na :debug. Domyślnie, Logger Elixira filtruje komunikaty logów poniżej poziomu :info.

Przykładowe wyjście na poziomie :info może wyglądać tak:

14:32:40.123 [info]  Rozpoczynanie ważnego procesu z parametrem: MyParam
14:32:41.126 [error] Wystąpił błąd: %RuntimeError{message: "błąd czasu wykonania"}

Wgłębienie się:

Logger w Elixirze to wbudowane narzędzie, które jest częścią języka od jego wczesnych dni. Jest ono inspirowane systemami logowania z innych języków BEAM, takich jak Erlang. Logger dostarcza różne poziomy logowania – :debug, :info, :warn i :error – i jest rozszerzalny, co pozwala na podpięcie różnych backendów do obsługi komunikatów logów.

Alternatywą dla wbudowanego Loggera w bardziej złożonych scenariuszach jest użycie bibliotek logowania, takich jak Logstash lub Sentry dla Elixira, które mogą dostarczyć dodatkowe funkcje, takie jak śledzenie błędów i agregacja w bardziej wizualnym formacie. Do lokalnego rozwoju, deweloperzy Elixira często polegają na wbudowanej funkcjonalności Loggera ze względu na jego prostotę i integrację z maszyną wirtualną BEAM.

W modułach, Logger oferuje asynchroniczne i synchroniczne logowanie. Domyślne logowanie asynchroniczne nie blokuje wykonania aplikacji podczas rejestrowania komunikatów. Zapewnia to, że logowanie nie wpływa negatywnie na wydajność. Jednak logowanie synchroniczne może być włączone w przypadkach, gdy potrzebna jest gwarancja, że komunikaty są logowane w kolejności ich wysłania.

Konfiguracja Loggera może być dostosowana w pliku config/config.exs aplikacji Elixira, gdzie można ustawić poziom logowania, format, metadane i więcej. Zawsze pamiętaj, aby dostosować swoje poziomy logowania i wyjścia dla różnych środowisk; nie chciałbyś przecież, aby szczegółowe logi debugowania zalały twoje systemy produkcyjne.

Zobacz również: