Security News
RubyGems.org Adds New Maintainer Role
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
winston-mongodb
Advanced tools
A MongoDB transport for winston.
Current version supports only mongodb driver version 3.x and newer and winston 3.x and newer. If you want to use winston-mongodb with mongodb version 1.4.x use winston-mongodb <1.x. For mongodb 2.x use winston-mongodb <3.x.
tldr;?
: To break the winston codebase into small modules that work
together.
The winston codebase has been growing significantly with contributions and other logging transports. This is awesome. However, taking a ton of additional dependencies just to do something simple like logging to the Console and a File is overkill.
const winston = require('winston');
// Requiring `winston-mongodb` will expose winston.transports.MongoDB`
require('winston-mongodb');
const log = winston.createLogger({
level: 'info',
transports: [
// write errors to console too
new winston.transports.Console({format: winston.format.simple(), level:'error'})
],
});
// logging to console so far
log.info('Connecting to database...');
const MongoClient = require('mongodb').MongoClient;
const url = "mongodb://localhost:27017/mydb";
const client = new MongoClient(url);
await client.connect();
const transportOptions = {
db: await Promise.resolve(client),
collection: 'log'
};
log.add(new winston.transports.MongoDB(transportOptions));
// following entry should appear in log collection and will contain
// metadata JSON-property containing url field
log.info('Connected to database.',{url});
The MongoDB transport takes the following options. Only option db
is required:
Option | Description |
---|---|
db | REQUIRED. MongoDB connection uri, pre-connected MongoClient object or promise which resolves to a pre-connected MongoClient object. |
dbname | The database name to connect to, defaults to DB name based on connection URI if not provided, ignored if using a pre-connected connection. |
options | MongoDB connection parameters. Defaults to {maxPoolSize: 2} ). |
collection | The name of the collection you want to store log messages in. Defaults to log . |
level | Level of messages that this transport should log. Defaults to info . |
silent | Boolean flag indicating whether to suppress output. Defaults to false . |
storeHost | Boolean indicating if you want to store machine hostname in logs entry, if set to true it populates MongoDB entry with 'hostname' field, which stores os.hostname() value. |
label | If set to true, then label attribute content will be stored in label field, if detected in meta-data. |
name | Transport instance identifier. Useful if you need to create multiple MongoDB transports. |
capped | In case this property is true, winston-mongodb will try to create new log collection as capped. Defaults to false . |
cappedSize | Size of logs capped collection in bytes. Defaults to 10,000,000. |
cappedMax | Size of logs capped collection in number of documents. |
tryReconnect | Will try to reconnect to the database in case of fail during initialization. Works only if db is a string. Defaults to false . |
decolorize | Will remove color attributes from the log entry message. Defaults to false . |
leaveConnectionOpen | Will leave MongoClient connected after transport shuts down. |
metaKey | Configure name of the field which is used to store metadata in the logged info object. Defaults to metadata to remain compatible with the metadata format |
expireAfterSeconds | Seconds before the entry is removed. Works only if capped is not set. |
Logging unhandled exceptions: For logging unhandled exceptions specify
winston-mongodb as handleExceptions
logger according to winston documentation.
Besides supporting the main options from winston, this transport supports the following extra options:
_id
attribute
settled by mongodb, defaults to false
. $ npm install winston
$ npm install winston-mongodb
FAQs
A MongoDB transport for winston
The npm package winston-mongodb receives a total of 20,700 weekly downloads. As such, winston-mongodb popularity was classified as popular.
We found that winston-mongodb demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.
Security News
Research
Socket's threat research team has detected five malicious npm packages targeting Roblox developers, deploying malware to steal credentials and personal data.