Elixir:
Registrazione Eventi (Logging)

Come fare:

In Elixir, il modo principale per registrare le informazioni è attraverso il modulo incorporato Logger. Ecco come puoi utilizzarlo:

defmodule MyApplication do
  require Logger

  def do_something_important(param) do
    Logger.info("Avvio processo importante con parametro: #{param}")

    # Simula il lavoro in corso
    :timer.sleep(1000)

    Logger.debug("Processo completato.")
  rescue
    error -> Logger.error("Si è verificato un errore: #{inspect(error)}")
  end
end

# Per vedere i tuoi log, basta chiamare la funzione:
MyApplication.do_something_important("MyParam")

Questo semplice frammento mostra come registrare informazioni a diversi livelli (info, debug ed error). Quando esegui questo codice, non vedrai il messaggio di debug a meno che tu non configurare il livello di Logger su :debug. Per impostazione predefinita, il Logger di Elixir filtra i messaggi di log al di sotto del livello :info.

Un esempio di output al livello :info potrebbe apparire così:

14:32:40.123 [info]  Avvio processo importante con parametro: MyParam
14:32:41.126 [error] Si è verificato un errore: %RuntimeError{message: "errore di runtime"}

Approfondimento:

Il Logger di Elixir è uno strumento incorporato che fa parte del linguaggio fin dai suoi primi giorni. È influenzato dai sistemi di logging di altri linguaggi BEAM come Erlang. Il logger offre diversi livelli di registrazione – :debug, :info, :warn ed :error – ed è pluggabile, consentendo di collegare diversi backend per la gestione dei messaggi di log.

Un’alternativa al Logger incorporato per scenari più complessi è l’uso di librerie di logging come Logstash o Sentry per Elixir, che possono offrire funzionalità aggiuntive come il tracciamento degli errori e l’aggregazione in un formato più visuale. Per lo sviluppo locale, gli sviluppatori Elixir si affidano spesso alla funzionalità del Logger incorporato per la sua semplicità e integrazione con la BEAM VM.

Sotto il cofano, il modulo Logger offre logging asincrono e sincrono. Il logging asincrono, che è quello predefinito, non blocca l’esecuzione della tua applicazione durante la registrazione dei messaggi. Questo assicura che il logging non influenzi negativamente le prestazioni. Tuttavia, il logging sincrono può essere abilitato per casi in cui è necessario garantire che i messaggi vengano registrati nell’ordine in cui sono stati inviati.

La configurazione del Logger può essere regolata nel file config/config.exs di un’applicazione Elixir, dove puoi impostare il livello di registrazione, il formato, i metadati e altro. Ricorda sempre di regolare i tuoi livelli di registrazione e gli output per i diversi ambienti; non vorresti che log di debug verbosi invadano i tuoi sistemi di produzione.

Vedi Anche: