Skip to main content
Cette documentation décrit comment configurer la journalisation avec l’intégration AppSignal for Elixir.

Configurer la journalisation

🔐 N’envoyez pas d’informations personnelles identifiables (PII) à AppSignal. Filtrez les PII (par exemple, noms, e-mails) des journaux et utilisez un identifiant, un hash ou un identifiant pseudonymisé à la place.

Pour les entités couvertes par la HIPAA, plus d’informations sur la signature d’un Business Associate Agreement (BAA) sont disponibles dans notre documentation Business Add-Ons.
Vous n’avez pas besoin de créer une source de journaux pour envoyer des journaux depuis l’intégration AppSignal for Elixir. Une source de journaux “application” sera créée automatiquement.

Logger Handler

Vous pouvez configurer le :logger Erlang pour utiliser le module Appsignal.Logger.Handler comme handler, en appelant la fonction Appsignal.Logger.Handler.add/2 dans votre callback Application.start/2 :
@impl true
def start(_type, _args) do
  Appsignal.Logger.Handler.add("phoenix")
end
L’argument fourni est le nom de groupe qui décrit d’où vous journalisez. Ce nom de groupe peut être utilisé dans AppSignal pour filtrer vos journaux.

Logger Backend

À partir de la version 1.15 d’Elixir, les backends de logger Elixir ne sont plus recommandés. Voir la section Logger Handler ci-dessus pour l’alternative recommandée.
Au lieu d’utiliser un handler de logger Elixir, vous pouvez configurer le backend du logger Elixir pour utiliser le module Appsignal.Logger.Backend comme backend en plaçant le code ci-dessous dans le fichier config/runtime.exs :
config :logger, backends: [:console, {Appsignal.Logger.Backend, [group: "phoenix"]}]
L’option group décrit d’où vous journalisez. Ce nom de groupe peut être utilisé dans AppSignal pour filtrer vos journaux. Vous pouvez également ajouter le backend en utilisant la fonction add_backend/2 dans votre callback Application.start/2 :
@impl true
def start(_type, _args) do
  Logger.add_backend(Appsignal.Logger.Backend, group: "phoenix")
end

Elixir Logger

Pour envoyer des journaux à AppSignal sans utiliser le backend Elixir Logger, vous pouvez utiliser l’une des fonctions de journalisation de Appsignal.Logger et lui fournir un groupname qui définit d’où vous journalisez. Par exemple, si nous journalisions depuis un helper pour facturer des clients :
Appsignal.Logger.info(
  "invoice_helper",
  "Generating invoice for customer 129"
)

Utilisation

Envoi de journaux

Comme la classe logger Elixir/Phoenix, vous pouvez définir le niveau de sévérité de vos journaux en utilisant fatal, error, warning, info et debug :
Appsignal.Logger.warning(
  "app",
  "Something's gone terribly wrong here"
)
Vous pouvez passer des attributs personnalisés comme dernier argument, pour envoyer des informations de journal qui peuvent être utilisées lors du filtrage et de l’interrogation des journaux :
Appsignal.Logger.info(
  "invoice_helper",
  "Generated invoice for customer #{customer.id}",
  %{ customer_id: customer.id, invoice_id: invoice.id }
)
Vous pouvez interroger et filtrer le contenu des messages et les valeurs d’attribut en utilisant notre syntaxe de requête. Une fois configurés, les attributs souhaités seront envoyés à AppSignal en tant que tags de journal, et seront interrogeables dans l’interface de journalisation d’AppSignal.

Formats

Format détecté automatiquement

Le package AppSignal for Elixir détectera automatiquement le format de la ligne de journal comme JSON, Logfmt ou plaintext par défaut, et en analysera les attributs. Vous n’avez pas besoin de définir manuellement le format du journal, sauf s’il n’est pas correctement détecté. Veuillez également nous le signaler si cela ne fonctionne pas automatiquement.
# Plaintext format
Appsignal.Logger.info(
  "invoice_helper",
  "Generated invoice"
)
# Logfmt format
Appsignal.Logger.info(
  "invoice_helper",
  "Generated invoice invoice_id=A145 for customer customer_id=123"
)
# JSON format
Appsignal.Logger.info(
  "invoice_helper",
  ~s({"message": "Generated invoice for customer", "invoice_id": "A145", "customer_id": "123"})
)

Logfmt

Le logger AppSignal peut être configuré explicitement pour attendre que la ligne soit formatée en Logfmt et en analyser les attributs. Utilisez cette option lorsque vous utilisez une version plus ancienne du package AppSignal for Elixir, qui ne prend pas en charge la détection automatique du format. Le format Logfmt peut être spécifié lorsque le logger AppSignal est appelé en ajoutant la valeur :logfmt comme dernier argument.
Appsignal.Logger.info(
  "invoice_helper",
  "Generated invoice invoice_id=A145 for customer customer_id=123",
  :logfmt
)

JSON

Le logger AppSignal peut être configuré explicitement pour attendre que la ligne soit formatée en JSON et en analyser les attributs. Utilisez cette option lorsque vous utilisez une version plus ancienne du package AppSignal for Elixir, qui ne prend pas en charge la détection automatique du format. Le format JSON peut être spécifié lorsque le logger AppSignal est appelé en ajoutant la valeur :json comme dernier argument.
Appsignal.Logger.info(
  "invoice_helper",
  ~s({"message": "Generated invoice for customer", "invoice_id": "A145", "customer_id": "123"}),
  :json
)
Seules les valeurs primitives non imbriquées (nombres, chaînes, booléens et null) seront affichées comme attributs de journal. Tous les autres attributs seront ignorés.

Filtrage des journaux

Vous pouvez utiliser l’option de configuration ignore_logs pour ignorer les lignes de journal en fonction de leur message. Consultez notre guide Ignore Logs pour en savoir plus.

Besoin d’aide ?

Après avoir configuré votre application Elixir pour envoyer des journaux, les journaux devraient apparaître dans AppSignal. Si vous avez des doutes sur cette étape ou si AppSignal ne reçoit aucun journal, vous pouvez toujours nous contacter pour obtenir de l’aide. Nous vous aiderons à remettre les choses sur la bonne voie !