Skip to main content
Diese Dokumentation beschreibt, wie Sie Logging mit der AppSignal for Elixir-Integration konfigurieren.

Logging konfigurieren

🔐 Senden Sie keine personenbezogenen Daten (Personal Identifiable Information, PII) an AppSignal. Filtern Sie PII (z. B. Namen, E-Mail-Adressen) aus Logs und verwenden Sie stattdessen eine ID, einen Hash oder einen pseudonymisierten Bezeichner.

Für HIPAA-pflichtige Stellen finden Sie weitere Informationen zum Abschluss eines Business Associate Agreement (BAA) in unserer Business Add-Ons-Dokumentation.
Sie müssen keine Log-Quelle erstellen, um Logs aus der AppSignal for Elixir-Integration zu senden. Eine “application”-Log-Quelle wird automatisch erstellt.

Logger Handler

Sie können den Erlang-:logger so konfigurieren, dass er das Modul Appsignal.Logger.Handler als Handler verwendet, indem Sie die Funktion Appsignal.Logger.Handler.add/2 in Ihrem Application.start/2-Callback aufrufen:
@impl true
def start(_type, _args) do
  Appsignal.Logger.Handler.add("phoenix")
end
Das angegebene Argument ist der Gruppenname, der beschreibt, von wo aus Sie loggen. Dieser Gruppenname kann in AppSignal verwendet werden, um Ihre Logs zu filtern.

Logger Backend

Ab Elixir-Version 1.15 werden Elixir-Logger-Backends nicht mehr empfohlen. Siehe den Abschnitt Logger Handler oben für die empfohlene Alternative.
Anstatt einen Elixir-Logger-Handler zu verwenden, können Sie das Elixir-Logger-Backend so konfigurieren, dass es das Modul Appsignal.Logger.Backend als Backend verwendet, indem Sie den folgenden Code in die Datei config/runtime.exs einfügen:
config :logger, backends: [:console, {Appsignal.Logger.Backend, [group: "phoenix"]}]
Die Option group beschreibt, von wo aus Sie loggen. Dieser Gruppenname kann in AppSignal verwendet werden, um Ihre Logs zu filtern. Sie können das Backend auch mit der Funktion add_backend/2 in Ihrem Application.start/2-Callback hinzufügen:
@impl true
def start(_type, _args) do
  Logger.add_backend(Appsignal.Logger.Backend, group: "phoenix")
end

Elixir Logger

Um Logs an AppSignal zu senden, ohne das Elixir-Logger-Backend zu verwenden, können Sie eine der Logging-Funktionen von Appsignal.Logger verwenden und ihr einen groupname übergeben, der definiert, von wo aus Sie loggen. Wenn wir beispielsweise aus einem Helper zum Rechnungsstellen an Kunden loggen würden:
Appsignal.Logger.info(
  "invoice_helper",
  "Generating invoice for customer 129"
)

Verwendung

Logs senden

Wie bei der Logger-Klasse von Elixir/Phoenix können Sie die Severity-Stufe Ihrer Logs mit fatal, error, warning, info und debug definieren:
Appsignal.Logger.warning(
  "app",
  "Something's gone terribly wrong here"
)
Sie können benutzerdefinierte Attribute als letztes Argument übergeben, um Log-Informationen zu senden, die beim Filtern und Abfragen von Logs verwendet werden können:
Appsignal.Logger.info(
  "invoice_helper",
  "Generated invoice for customer #{customer.id}",
  %{ customer_id: customer.id, invoice_id: invoice.id }
)
Sie können Nachrichteninhalte und Attributwerte mit unserer Abfragesyntax abfragen und filtern. Nach der Konfiguration werden die gewünschten Attribute als Log-Tags an AppSignal gesendet und sind in der AppSignal Logging-Oberfläche abfragbar.

Formate

Automatisch erkanntes Format

Das AppSignal for Elixir-Paket erkennt das Format der Log-Zeile standardmäßig automatisch als JSON, Logfmt oder Plaintext und parst die Attribute daraus. Sie müssen das Log-Format nicht manuell einstellen, es sei denn, es wird nicht ordnungsgemäß erkannt. Bitte benachrichtigen Sie uns auch, wenn dies nicht automatisch funktioniert.
# 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

Der AppSignal Logger kann explizit so konfiguriert werden, dass er erwartet, dass die Zeile als Logfmt formatiert ist, und Attribute daraus parst. Verwenden Sie diese Option, wenn Sie eine ältere Version des AppSignal for Elixir-Pakets verwenden, die keine automatische Formaterkennung unterstützt. Das Logfmt-Format kann beim Aufruf des AppSignal-Loggers angegeben werden, indem der Wert :logfmt als letztes Argument hinzugefügt wird.
Appsignal.Logger.info(
  "invoice_helper",
  "Generated invoice invoice_id=A145 for customer customer_id=123",
  :logfmt
)

JSON

Der AppSignal Logger kann explizit so konfiguriert werden, dass er erwartet, dass die Zeile als JSON formatiert ist, und Attribute daraus parst. Verwenden Sie diese Option, wenn Sie eine ältere Version des AppSignal for Elixir-Pakets verwenden, die keine automatische Formaterkennung unterstützt. Das JSON-Format kann beim Aufruf des AppSignal-Loggers angegeben werden, indem der Wert :json als letztes Argument hinzugefügt wird.
Appsignal.Logger.info(
  "invoice_helper",
  ~s({"message": "Generated invoice for customer", "invoice_id": "A145", "customer_id": "123"}),
  :json
)
Nur primitive, nicht verschachtelte Werte (Zahlen, Strings, Booleans und null) werden als Log-Attribute angezeigt. Alle anderen Attribute werden verworfen.

Logs filtern

Sie können die Konfigurationsoption ignore_logs verwenden, um Log-Zeilen anhand ihrer Nachricht zu ignorieren. Lesen Sie unseren Leitfaden zum Ignorieren von Logs, um mehr zu erfahren.

Brauchen Sie Hilfe?

Nachdem Sie Ihre Elixir-Anwendung so konfiguriert haben, dass sie Logs sendet, sollten die Logs in AppSignal erscheinen. Wenn Sie sich bei diesem Schritt unsicher sind oder AppSignal keine Logs empfängt, können Sie sich jederzeit für Unterstützung an uns wenden. Wir helfen Ihnen, wieder auf Kurs zu kommen!