Skip to content

datalust/winston-seq

Repository files navigation

winston-seq npm

A Winston v3 transport that sends structured logs to the Seq log server.

Structured logging with Seq

Install @datalust/winston-seq

$ npm install @datalust/winston-seq winston
# Or with yarn
$ yarn add @datalust/winston-seq winston

Configure Logging

const winston = require('winston');
const { SeqTransport } = require('@datalust/winston-seq');
// or import { SeqTransport } from '@datalust/winston-seq';

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.combine(  /* This is required to get errors to log with stack traces. See https://github.com/winstonjs/winston/issues/1498 */
    winston.format.errors({ stack: true }),
    winston.format.json(),
  ),
  defaultMeta: { /* application: 'your-app-name' */ },
  transports: [
    new winston.transports.Console({
        format: winston.format.simple(),
    }),
    new SeqTransport({
      serverUrl: "https://your-seq-server:5341",
      apiKey: "your-api-key",
      onError: (e => { console.error(e) }),
      handleExceptions: true,
      handleRejections: true,
    })
  ]
});

Send Log Events

Send structured log events, with properties that can be used later for filtering and analysis:

logger.info("Hello {name}", {name: "World"});

Attach context by creating child loggers:

const taskLogger = logger.child({ activity: "purchase" });
taskLogger.debug(
    "User {user} purchase product {product} at ${price}", 
    {
        user: "Millie Gilbert",
        product: "Yardtime Garden Shears",
        price: 29.99
    });

An event in Seq

Contributing

Install Yarn if you don't already have it. Next, add a .env file with content like:

SEQ_INGESTION_URL=http://192.168.98.99:5341
SEQ_API_URL=http://192.168.98.99
SEQ_API_KEY=fsf7sa9f9sf7s9df7

Where SEQ_INGESTION_URL is the ingestion address of a test Seq server, SEQ_API_URL is the API address of the test server and SEQ_API_KEY is an API key with the Ingest and Read permissions.

Scripts

  • To build:
$ yarn build
  • To test:
$ yarn test

NB. One test will fail if the Seq server is configured to require an API key.

  • Calculate test coverage:
$ yarn test:coverage
  • Lint source
$ yarn lint

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •