1.0.8 • Published 2 years ago

@neohotsauce/mongoose-winston v1.0.8

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

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

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

0.5.0

2 years ago

0.4.0

2 years ago

0.3.11

2 years ago

0.3.10

2 years ago

0.3.9

2 years ago

0.3.8

2 years ago

0.3.7

2 years ago

0.3.6

2 years ago

0.3.5

2 years ago

0.3.4

2 years ago

0.3.3

2 years ago

0.3.2

2 years ago

0.3.1

2 years ago

0.2.1

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago