@neohotsauce/mongoose-winston
TypeScript icon, indicating that this package has built-in type declarations

1.0.8 • Public • Published

mongoose-winston

mongoose-winston is a logging library built on top of mongoose, winston and socket.io. The library works with express.

Installation

$ npm install --save @neohotsauce/mongoose-winston

Usage

Initialize the logger.

const Logger = require("@neohotsauce/mongoose-winston");
Logger.config({
  level: "debug",
  consoleTp: process.env.NODE_ENV === "development", // If we're in development then log to the `console`
  mongooseTp: process.env.NODE_ENV === "production", // If we're in production then log to `mongoDB`
  emailSender: sendEmail,
  logRetention: 172800
});

Logging

The logger accepts the following parameters:

Name Default Type Description
level 'silly' String Log only if info.silly is less than or equal to this level
consoleTp true Boolean Enable console.log() for logs
mongooseTp false Boolean Save logs to mongodDB
emailSender undefined Function Function to send emails
logRetention 50400 Number Expiration in seconds for a log (will be permanently deleted if the log is not archived)
// Logging
logger.log({
  level: 'info',
  message: 'Hello distributed log files!'
});

logger.info('Hello again distributed logs');

Usage with morgan:

const morgan = require("morgan");

// Custom token to get specific data
morgan.token("user", function getUserId(req) {
  return req.user && req.user.id;
});

// initialize morgan
const morganMiddleware = morgan(
  function (tokens, req, res) {
    return JSON.stringify({
      method: tokens.method(req, res),
      url: tokens.url(req, res),
      user_id: tokens.user(req),
      referrer: tokens.referrer(req, res),
      ip: tokens["remote-addr"](req, res),
      http_version: tokens["http-version"](req, res),
      user_agent: tokens["user-agent"](req, res),
      status: Number.parseFloat(tokens.status(req, res)),
      content_length: tokens.res(req, res, "content-length"),
      response_time: Number.parseFloat(tokens["response-time"](req, res)),
      total_time: Number.parseFloat(tokens["total-time"](req, res))
    });
  },
  {
    stream: {
      // Configure Morgan to use our logger with the http severity
      write: message => {
        const data = JSON.parse(message);
        logger.http(`incoming-request`, data);
      }
    }
  }
);

app.use(morganMiddleware);

updated read me. test.

License

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i @neohotsauce/mongoose-winston

Weekly Downloads

1

Version

1.0.8

License

ISC

Unpacked Size

63.3 kB

Total Files

23

Last publish

Collaborators

  • neohotsauce