Skip to main content
Diese Dokumentation beschreibt, wie Sie Logging mit der AppSignal for Node.js-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 Node.js-Integration zu senden. Eine “application”-Log-Quelle wird automatisch erstellt.

Eigenständige Verwendung

Um den Logger zu verwenden, müssen Sie AppSignal importieren und den Logger über die Funktion .logger() einrichten. Die Funktion .logger() akzeptiert zwei Argumente: group und optional severityThreshold. Wenn severityThreshold nicht angegeben wird, ist der Standardwert info.
const { Appsignal } = require("@appsignal/nodejs");

const logger = Appsignal.logger("app");

// with a severity threshold:
const logger = Appsignal.logger("app", "info");
Es gibt sechs verfügbare Severity-Stufen: trace, debug, info, log, warn und error, jede mit einer eigenen Funktion gleichen Namens. Diese Funktionen akzeptieren zwei Argumente: message und attributes. attributes wird für Metadaten verwendet und ist optional. Nachrichten werden nur dann geloggt, wenn ihre Severity-Stufe über dem Severity-Schwellenwert liegt.
logger.info("Log message line");
logger.debug("User logged in", { user_id: 123 });
Beachten Sie, dass eine Nachricht nicht an AppSignal gesendet wird, wenn ihre Severity unter dem beim Initialisieren des Loggers festgelegten Severity-Schwellenwert liegt. Sie können Nachrichteninhalte und Attributwerte mit unserer Abfragesyntax abfragen und filtern.

Mehrere Logging-Backends verwenden

Derzeit ist es nicht möglich, mit dem Standard-Logger von Node.js Logs an mehrere Backends zu senden. Für komplexere Setups empfehlen wir die Verwendung einer Logging-Bibliothek wie Winston oder Pino.

Verwendung mit Winston

Wenn Sie Winston zum Loggen von Nachrichten in Ihrer gesamten Anwendung verwenden, können Sie unseren Winston-Transport verwenden, um diese Logs an AppSignal zu senden. Nachdem Sie den Transport aus der AppSignal-Integration importiert haben, fügen Sie ihn der Transportliste Ihres Winston-Loggers hinzu:
const winston = require("winston");
const { WinstonTransport } = require("@appsignal/nodejs");

const logger = winston.createLogger({
  transports: [new WinstonTransport({ group: "app" })],
});

Child Logger

Sie können einen Child Logger verwenden, um zusätzliche Tags zu Log-Nachrichten hinzuzufügen. Sie definieren Tags beim Erstellen der Child-Logger-Konstante oder übergeben Tags als Metadaten beim Schreiben einer Log-Nachricht. Angenommen, wir möchten mehr Kontext zu den Aktionen eines bestimmten Benutzers innerhalb einer bestimmten Sitzung in unseren Logs erhalten. Im folgenden Beispiel wird ein Child Logger für die Gruppe background verwendet, um sessionID hinzuzufügen. Die zusätzlichen Tags drinkID und paymentID werden beim Erstellen einer Log-Nachricht als Metadaten bereitgestellt, und wenn dem Child eine Gruppe übergeben wird, überschreibt sie die im Transport festgelegte.
const logger = winston.createLogger({...});

const sessionLogger = logger.child({
  group: "background",
  sessionID: user.id,
});

sessionLogger.debug("User logged in");
sessionLogger.info("User ordered coffee", { drinkID: 30, paymentID: 20082 });
sessionLogger.debug("User logged out");

Mehrere Logging-Backends verwenden

Um Logs sowohl an den AppSignal-Logger als auch an STDOUT zu senden, fügen Sie einen weiteren Transport hinzu:
const winston = require("winston");
const { WinstonTransport } = require("@appsignal/nodejs");

const logger = winston.createLogger({
  transports: [
    new WinstonTransport({ group: "app" }),
    new winston.transports.Console(),
  ],
});

Verwendung mit Pino

Wenn Pino Ihre bevorzugte Logging-Bibliothek ist, können Sie den AppSignal Pino-Transport verwenden, um Logs an AppSignal zu senden. Das Argument group wird auf “app” voreingestellt, wenn es nicht angegeben wird.
import pino from "pino";

const logger = pino({
  transport: {
    targets: [
      { target: "@appsignal/nodejs/pino", options: { group: "my-group" } }
    ],
  },
});

Mehrere Logging-Backends verwenden

Um Logs sowohl an den AppSignal-Logger als auch an STDOUT zu senden, fügen Sie ein weiteres Target hinzu:
import pino from "pino";

const logger = pino({
  transport: {
    targets: [
        { target: "@appsignal/nodejs/pino", options: { group: "my-group" } },
        { target: 'pino/file', options: {destination: 1} }
    ],
  },
});

Formate

Automatisch erkanntes Format

Das AppSignal for Node.js-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.
const { Appsignal } = require("@appsignal/nodejs");

// Plaintext format
const logger = Appsignal.logger("app", "info");
logger.info("This is about the blog");

// Logfmt format
const logger = Appsignal.logger("app", "info");
logger.info("category=blog This is about the blog");

// JSON format
const logger = Appsignal.logger("app", "info");
logger.info('{"category": "blog", "message": "This is about the blog"}');

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 Node.js-Pakets verwenden, die keine automatische Formaterkennung unterstützt. Das Log-Format kann beim Erstellen eines Loggers angegeben werden. Übergeben Sie beim Initialisieren des AppSignal-Loggers den Wert "logfmt" als drittes Argument.
const { Appsignal } = require("@appsignal/nodejs");

const logger = Appsignal.logger("app", "info", "logfmt");
logger.info("category=blog this is about the blog");
Im obigen Beispiel wird ein filterbares category-Attribut mit dem Wert “blog” geloggt.

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 Node.js-Pakets verwenden, die keine automatische Formaterkennung unterstützt. Das Log-Format kann beim Erstellen eines Loggers angegeben werden. Übergeben Sie beim Initialisieren des AppSignal-Loggers den Wert "json" als drittes Argument.
const { Appsignal } = require("@appsignal/nodejs");

const logger = Appsignal.logger("app", "info", "json");
logger.info('{"category": "blog", "message": "this is about the blog"}');
Im obigen Beispiel wird ein filterbares category-Attribut mit dem Wert “blog” geloggt.

Logs filtern

Sie können die Konfigurationsoption ignoreLogs 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 Node.js-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!