Skip to content

geekcups-team/winston-transport-mongodb

Repository files navigation

winston

A MongoDB transport for [winston][0].

Current version supports only mongodb driver version 3.x and winston 3.x.

Usage

const { MongoDBTransport, LogSplitEnum } = require('@geekcups/winston-transport-mongodb');

const mongoTransport = new MongoDBTransport({
  db: dbUrl,
  dbOptions: {
    poolSize: 3,
    useNewUrlParser: true,
    useUnifiedTopology: true,
  },
  logSplit: LogSplitEnum.DAY,
});

const logger = winston.createLogger({
  level: 'info',
  transports: [
    mongoTransport,
  ]
});

name?: string, db: string | MongoClient dbOptions?: MongoClientOptions metaCollectionName?: string logCollectionPrefix?: string additionalLogIndexes?: IndexSpecification[] logSplit?: LogSplitEnum | number,

The MongoDB transport takes the following options. 'db' is required:

  • db: MongoDB connection uri or pre-connected MongoClient.
  • options: MongoDB connection parameters (optional, defaults to {poolSize: 2, autoReconnect: true, useNewUrlParser: true}).
  • metaCollectionName: The name of the meta collection that contain the split information, defaults to 'meta'.
  • name: Transport instance identifier. Useful if you need to create multiple MongoDB transports.
  • logCollectionPrefix: Prefix name for log collections, defaults to 'log'.
  • additionalLogIndexes: MongoDB IndexSpecification array for additional log collection indexes (usefull if you need to index meta fields).
  • logSplit: Strategy for split log collection. You can split for default enums (LogSplitEnum.NONE, LogSplitEnum.DAY, LogSplitEnum.MONTH, LogSplitEnum.YEAR) or with number of milliseconds. The transport create a new log collection when a new log entry exceeds the logSplit time

Metadata: Logged as a native JSON object in 'meta' property.

Querying

Besides supporting the main options from winston, this transport supports the following extra options:

  • from: Start date of query. Can be null.
  • to: End date of query. Can be null.
  • query: Extra query for log collection. For example you can query for meta field here. If you specify from and to you don't need to specify timestamp query here.

Installation

  $ npm install winston
  $ npm install mongodb
  $ npm install @geekcups/winston-transport-mongodb

About

MongoDB transport for winston with log split options

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published