Logging From Node.jsBETA
Configure Package
To use logging with your AppSignal integration for Node.js, you first need to install version 3.0
of the package or higher.
Configure Logging
Stand-alone usage
To use the logger, you need to import AppSignal and set up the logger using the .logger()
function.
The .logger()
function accepts two arguments: group
and optionally severityThreshold
. If severityThreshold
is not provided, it will default to info
.
const { Appsignal } = require("@appsignal/nodejs");
const logger = Appsignal.logger("app");
There are six severity levels available trace
, debug
, info
, log
, warn
, and error
each of them with its own function with the same name. These functions accept two arguments message
and attributes
. Attributes is used for metadata and is optional.
logger.info("Log message line");
logger.debug("User logged in", { user_id: 123 });
Note that if the message's severity is below the severity threshold set up when initializing the logger, it will not be sent to AppSignal.
You can query and filter on message contents and attribute values from within the Log Management tool.
Usage with Winston
If you use Winston to log messages throughout your application, you can use our Winston transport to send those logs to AppSignal. After importing the transport from the AppSignal integration, add it to the list of transports in your Winston logger:
const winston = require("winston");
const { WinstonTransport } = require("@appsignal/nodejs");
const logger = winston.createLogger({
transports: [new WinstonTransport({ group: "app" })],
});
Child Logger
You can use a child logger to add additional tags to log messages. You define tags when creating the child logger constant or pass tags as metadata when writing a log message. Say we want greater context in our logs of the actions of a particular user within a specific session. In the below example, a child logger is used to add sessionID
with the additional drinkID
, and paymentID
tags are provided as metadata when creating a log message.
const logger = winston.createLogger({...});
const sessionLogger = logger.child({
sessionID: user.id,
});
sessionLogger.debug("User logged in");
sessionLogger.info("User ordered coffee", { drinkID: 30, paymentID: 20082 });
sessionLogger.debug("User logged out");
Need Help?
After configuring your Node.js application to send logs, logs should appear in AppSignal. If you are unsure about this step or AppSignal is not receiving any logs, you can always reach out for assistance. We'll help get you back on track!