Pino Sentry Transport allows you to send logs from Pino directly to Sentry.
npm i pino-sentry-transport
import pino from "pino";
const logger = pino({
transport: {
target: "pino-sentry-transport",
options: {
sentry: {
dsn: "https://<key>:<secret>@sentry.io/<project>",
// additional options for sentry
},
withLogRecord: true, // default false - send the entire log record to sentry as a context.(FYI if its more then 8Kb Sentry will throw an error)
tags: ['level'], // sentry tags to add to the event, uses lodash.get to get the value from the log record
context: ['hostname'], // sentry context to add to the event, uses lodash.get to get the value from the log record,
minLevel: 40, // which level to send to sentry
expectPinoConfig: true, // default false - pass true if pino configured with custom messageKey or errorKey see below
}
},
});
withLogRecord
: When set totrue
, sends the entire log record as context to Sentry. Be cautious of log records larger than 8KB, as Sentry will throw an error.tags
: An array specifying which fields from the log record should be added as tags in Sentry. Useslodash.get
to extract values.context
: An array specifying which fields from the log record should be added as context in Sentry. Also useslodash.get
for value extraction.minLevel
: The minimum log level required for a message to be sent to Sentry. Log levels follow Pino's conventions (e.g., 40 for 'error').expectPinoConfig
: If set totrue
, allows the transport to work with custommessageKey
orerrorKey
settings in Pino.
Because Pino transport runs in a separate worker thread, Sentry needs to be initialized in the transport.
This project is licensed under the MIT License - see the LICENSE file for details.