@neohotsauce/mongoose-winston
v1.0.8
Published
Winston logging using mongoose, express and morgan
Downloads
40
Readme
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.