@saucesteals/winston-transport-sentry-node

@sentry/node transport for the winston v3 logger

Usage no npm install needed!

<script type="module">
  import saucestealsWinstonTransportSentryNode from 'https://cdn.skypack.dev/@saucesteals/winston-transport-sentry-node';
</script>

README

winston-transport-sentry-node

CircleCI node winston license

@Sentry/node transport for the winston v3 logger.

Index

Install

npm install @saucesteals/winston-transport-sentry-node

Usage

You can configure winston-transport-sentry-node in two different ways.

With winston.createLogger:

const winston = require("winston");
const SentryTransport = require("winston-transport-sentry-node").default;

const options = {
  sentry: YourSentryInstance,
  level: "info",
};

const logger = winston.createLogger({
  transports: [new SentryTransport(options)],
});

Or with winston's add method:

const winston = require("winston");
const Sentry = require("winston-transport-sentry-node").default;

const logger = winston.createLogger();

logger.add(new Sentry(options));

See Options below for custom configuration.

Options (options)

Transport related options

  • sentry (Sentry) - A Sentry Instance that is initialized (ex. require("@sentry/node"))
  • silent (Boolean) - suppress logging (defaults to false)
  • level (String) - transport's level of messages to log (defaults to info)
  • format (Object) - custom log format (see Winston Formats)
  • levelsMap (Object) - optional custom mapping between Winston's log levels and Sentry's log levels (default)

Info object (See more)

If info.tags is an object, it will be sent as Sentry Tags.

logger.error("some error", { tags: { tag1: "yo", tag2: "123" } });

Additional properties of info are sent as Sentry Extra Context.

logger.error("some error", { whatever: "is sent as extra" });

Tip! If you already have logging in place and want to use Sentry tags but don’t want to update all places where you log something, use a format function.

const sentryFormat = format((info) => {
  const { path, label, ...extra } = info;
  return {
    ...extra,
    tags: {
      path: path || "",
      request_id: label,
    },
  };
});

new SentryTransport({
  format: sentryFormat(),
  // ...
});

Log Level Mapping

Winston logging levels are mapped by default to Sentry's acceptable levels.

{
  silly: 'debug',
  verbose: 'debug',
  info: 'info',
  debug: 'debug',
  warn: 'warning',
  error: 'error'
}

See available Sentry's levels. Matching is done with Sentry.Severity.fromString() method and will defaults to log

License

MIT License