Registry / storage / winston-mongodb

winston-mongodb

JSON →
library7.0.1jsnpmunverified

A MongoDB transport for winston logging library, enabling persistent log storage in MongoDB collections. Current stable version is 7.0.1, supporting winston 3.x and mongodb driver 3.x+. Requires Node.js >=14.20.1. Alternative to other winston transports with capped collection support, TTL indexes, and flexible database connection options (URI, pre-connected client, or promise). Includes TypeScript definitions.

npm install winston-mongodb
INSTALL
IMPORT
SIG · WINSTON-MONGODB
W
winston-mongodb
storagejavascriptv7.0.1
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

require('winston-mongodb')
const winston = require('winston'); require('winston-mongodb'); // side-effect import
import 'winston-mongodb'; // side-effect import works but may cause TypeScript issues
Does not export a module directly; registers MongoDB transport on winston.transports. Use require to ensure side effects.
winston.transports.MongoDB
new winston.transports.MongoDB({ db: client, collection: 'log' })
new (require('winston-mongodb').MongoDB)({...})
Access via winston.transports.MongoDB after requiring 'winston-mongodb'. Not directly exported.
MongoDB (type)
import type { MongoDBTransportOptions } from 'winston-mongodb'
import { MongoDB } from 'winston-mongodb'
TypeScript types are available under 'winston-mongodb' module. Use type import for options.

Shows basic setup with a pre-connected MongoClient, logger creation, and entry logging.

const winston = require('winston'); require('winston-mongodb'); const { MongoClient } = require('mongodb'); async function run() { const client = new MongoClient(process.env.MONGO_URI ?? 'mongodb://localhost:27017'); await client.connect(); const logger = winston.createLogger({ level: 'info', transports: [ new winston.transports.MongoDB({ db: client, collection: 'logs', level: 'info', storeHost: true, metaKey: 'metadata' }) ] }); logger.info('Application started', { service: 'example' }); await logger.close(); await client.close(); } run().catch(console.error);
Debug
Known issues
breakingVersion 6.0.0 dropped support for mongodb driver <3.0 and winston <3.0. The `db` option now accepts MongoClient object or promise; connection string still works but use with `tryReconnect: true`.
fix
Migrate to mongodb driver 3.0+ and winston 3.0+. Pass pre-connected MongoClient or a promise that resolves to one.
affects: >=6.0.0
deprecatedPassing a connection string (URI) directly to `db` option is deprecated in favor of providing a MongoClient instance or promise.
fix
Create MongoClient externally and pass it: `new MongoClient(uri); await client.connect(); transport.db = client;`
affects: >=5.0.0
gotchaIf `db` is a connection string (string), the transport tries to connect on every log entry, which is incredibly inefficient and may cause connection leaks. Avoid use with string.
fix
Always pass a pre-connected MongoClient object to `db`.
affects: *
gotchaThe `leaveConnectionOpen` option must be set if you manage the MongoClient lifecycle externally; otherwise the transport will close the connection on `close()` and subsequent log calls will fail.
fix
Set `leaveConnectionOpen: true` when passing externally managed MongoClient, and close client yourself after logger is done.
affects: *
gotchaTypeScript users: The module does not export `MongoDB` class but registers it on `winston.transports`. Importing `winston-mongodb` as ES module may cause side effects not executed, leading to missing transport. Use `require()` in CommonJS or configure bundler to handle side effects.
fix
Use `require('winston-mongodb')` instead of `import 'winston-mongodb'` to ensure side effects.
affects: *
Errors
Common errors & fixes
Cannot find module 'winston-mongodb'
Missing npm install or incorrect import path
fix
Run `npm install winston-mongodb` and ensure you are using `require('winston-mongodb')`
TypeError: winston.transports.MongoDB is not a constructor
Transport not registered because side-effect import failed (e.g., using `import 'winston-mongodb'` in ES module)
fix
Use `require('winston-mongodb')` which triggers side effects
MongoNetworkError: failed to connect to server
Invalid connection string or MongoDB server not reachable
fix
Verify MONGO_URI environment variable or pass correct URI to MongoClient; ensure server is running and accessible
TypeError: db.collection is not a function
Passed a promise that resolves to a database instead of a MongoClient object
fix
Ensure `db` option is a MongoClient instance, not a Db instance. The transport expects a client to call `.collection()`.
Upgrade
Version history
7.0.1latest on npm
Audit
Dependencies
winstonrequiredPeer dependency; transport relies on winston 3.x interface
Agent activity
47 hits · last 30 days
node
44
OpenAI (training)
1
Resources