JSPM

@datalust/winston-seq

1.0.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 41759
  • Score
    100M100P100Q166336F
  • License Apache-2.0

A Winston v3 transport for Seq

Package Exports

  • @datalust/winston-seq
  • @datalust/winston-seq/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@datalust/winston-seq) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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