Skip to main content
Deze documentatie beschrijft hoe u logging configureert met de AppSignal for Node.js-integratie.

Logging configureren

🔐 Stuur geen Persoonlijk Identificeerbare Informatie (PII) naar AppSignal. Filter PII (bijv. namen, e-mailadressen) uit logs en gebruik in plaats daarvan een ID, hash of gepseudonimiseerde identificator.

Voor onder HIPAA vallende entiteiten vindt u meer informatie over het ondertekenen van een Business Associate Agreement (BAA) in onze documentatie over Business Add-Ons.
U hoeft geen logbron aan te maken om logs te versturen vanuit de AppSignal for Node.js-integratie. Er wordt automatisch een “application”-logbron aangemaakt.

Zelfstandig gebruik

Om de logger te gebruiken, moet u AppSignal importeren en de logger instellen met de functie .logger(). De functie .logger() accepteert twee argumenten: group en optioneel severityThreshold. Als severityThreshold niet wordt opgegeven, is de standaardwaarde info.
const { Appsignal } = require("@appsignal/nodejs");

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

// with a severity threshold:
const logger = Appsignal.logger("app", "info");
Er zijn zes severity-niveaus beschikbaar: trace, debug, info, log, warn en error, elk met zijn eigen functie met dezelfde naam. Deze functies accepteren twee argumenten: message en attributes. Attributes wordt gebruikt voor metadata en is optioneel. Berichten worden alleen gelogd als hun severity-niveau boven de severity-drempel ligt.
logger.info("Log message line");
logger.debug("User logged in", { user_id: 123 });
Houd er rekening mee dat als de severity van het bericht onder de severity-drempel ligt die is ingesteld bij het initialiseren van de logger, het niet naar AppSignal wordt verstuurd. U kunt op berichtinhoud en attribuutwaarden filteren en opvragen met behulp van onze zoeksyntaxis.

Meerdere logging-backends gebruiken

Het is momenteel niet mogelijk om logs naar meerdere backends te sturen met de standaard logger van Node.js. Voor complexere opstellingen raden wij u aan een logging-bibliotheek zoals Winston of Pino te gebruiken.

Gebruik met Winston

Als u Winston gebruikt om berichten in uw applicatie te loggen, kunt u onze Winston-transport gebruiken om die logs naar AppSignal te sturen. Nadat u de transport vanuit de AppSignal-integratie hebt geïmporteerd, voegt u deze toe aan de lijst met transports in uw Winston-logger:
const winston = require("winston");
const { WinstonTransport } = require("@appsignal/nodejs");

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

Child Logger

U kunt een child logger gebruiken om aanvullende tags aan logberichten toe te voegen. U definieert tags bij het aanmaken van de child logger-constante of geeft tags als metadata door bij het schrijven van een logbericht. Stel dat wij meer context willen in onze logs van de acties van een bepaalde gebruiker binnen een specifieke sessie. In het onderstaande voorbeeld wordt een child logger voor de background-groep gebruikt om sessionID toe te voegen met de aanvullende tags drinkID en paymentID die als metadata worden verstrekt bij het aanmaken van een logbericht, en als een groep aan de child wordt meegegeven, overschrijft die de groep die in de transport is ingesteld.
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");

Meerdere logging-backends gebruiken

Om logs naar zowel de logger van AppSignal als naar STDOUT te sturen, voegt u nog een transport toe:
const winston = require("winston");
const { WinstonTransport } = require("@appsignal/nodejs");

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

Gebruik met Pino

Als Pino uw voorkeur logging-bibliotheek is, kunt u de AppSignal Pino-transport gebruiken om logs naar AppSignal te sturen. Het group-argument is standaard “app” als het niet wordt opgegeven.
import pino from "pino";

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

Meerdere logging-backends gebruiken

Om logs naar zowel de logger van AppSignal als naar STDOUT te sturen, voegt u nog een target toe:
import pino from "pino";

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

Formaten

Automatisch gedetecteerd formaat

Het AppSignal for Node.js-pakket detecteert het formaat van de logregel standaard automatisch als JSON, Logfmt of plaintext en parseert er attributen uit. U hoeft het logformaat niet handmatig in te stellen, tenzij het niet correct wordt gedetecteerd. Laat het ons ook weten als dit niet automatisch werkt.
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

De AppSignal Logger kan expliciet worden geconfigureerd om te verwachten dat de regel in Logfmt-formaat is en hier attributen uit te parsen. Gebruik deze optie wanneer u een oudere versie van het AppSignal for Node.js-pakket gebruikt die geen automatische formaatdetectie ondersteunt. Het logformaat kan worden opgegeven bij het aanmaken van een logger. Geef bij het initialiseren van de AppSignal-logger de waarde "logfmt" als derde argument door.
const { Appsignal } = require("@appsignal/nodejs");

const logger = Appsignal.logger("app", "info", "logfmt");
logger.info("category=blog this is about the blog");
In het bovenstaande voorbeeld wordt een filterbaar category-attribuut met de waarde “blog” gelogd.

JSON

De AppSignal Logger kan expliciet worden geconfigureerd om te verwachten dat de regel in JSON-formaat is en hier attributen uit te parsen. Gebruik deze optie wanneer u een oudere versie van het AppSignal for Node.js-pakket gebruikt die geen automatische formaatdetectie ondersteunt. Het logformaat kan worden opgegeven bij het aanmaken van een logger. Geef bij het initialiseren van de AppSignal-logger de waarde "json" als derde argument door.
const { Appsignal } = require("@appsignal/nodejs");

const logger = Appsignal.logger("app", "info", "json");
logger.info('{"category": "blog", "message": "this is about the blog"}');
In het bovenstaande voorbeeld wordt een filterbaar category-attribuut met de waarde “blog” gelogd.

Logs filteren

U kunt de configuratieoptie ignoreLogs gebruiken om logregels op basis van hun bericht te negeren. Zie onze gids Logs negeren voor meer informatie.

Hulp nodig?

Nadat u uw Node.js-applicatie hebt geconfigureerd om logs te versturen, zouden er logs in AppSignal moeten verschijnen. Als u twijfelt over deze stap of AppSignal geen logs ontvangt, kunt u altijd contact opnemen voor hulp. Wij helpen u graag weer op weg!