Skip to content

d-knafo/mongoose-morgan-body-response

Repository files navigation

mongoose-morgan-body-response

NPM

Is an npm package which is combining mongoose and morgan packages by adding an additional functionality to log morgan data into MongoDB.

Install

To install this package just run:

npm install mongoose-morgan-body-response

Basic usage example

Here is an example of using mongoose-morgan-body-response together with the express app:

// express
const express = require('express');
const app = express();
const originalSend = app.response.send

app.response.send = function sendOverWrite(body) {
  originalSend.call(this, body)
  this.__custombody__ = body
}

// mongoose-morgan-body-response
const morgan = require('mongoose-morgan-body-response');

// connection-data
const port = process.env.port || 8080;

// Logger
app.use(morgan({
    connectionString: 'mongodb://localhost:27017/logs-db'
}));

// run
app.listen(port);
console.log('works... ' + port);

The example from the above will create inside logs-db database collection called logs and will store data inside it.

Detailed usage

mongoose-morgan-body-response is accepting three parameters:

  • mongoData : object type with next properties
    • required {string} connectionString
      • optional {string} collection
      • optional {string} user
      • optional {string} pass
      • optional {bool} capped (pull req by @Ni55aN)
      • optional {int} cappedSize (pull req by @Ni55aN)
      • optional {int} cappedMax (pull req by @Ni55aN)
      • optional {string} dbName (pull req by @pmstss)
      • optional {bool} useNewUrlParser (default: true)
      • optional {bool} useUnifiedTopology (default: true) (issue #8)
  • options : object type - standrad morgan options
  • format : string type - standrad mrogan format

Example without morgan options:

app.use(morgan({
    connectionString: 'mongodb://localhost:27017/logs-db'
   }, {}, 'short'
));

Full example:

app.use(morgan({
    collection: 'error_logger',
    connectionString: 'mongodb://localhost:27017/logs-db',
    user: 'admin',
    pass: 'test12345'
   },
   {
    skip: function (req, res) {
        return res.statusCode < 400;
    }
   },
    ':method :url :status :response-time ms - :res[content-length] :body - :req[content-length]'
));

If you want to store data in db in seperate fields,

format: ':method === :url === :status === :response-time ms === :res[content-length] === :body === :resBody === :req[content-length]'

Data will store in following format in DB:

        date: {
            type: Date,
            default: Date.now
        },
        log: String,
        endpoint: String,
        method: String,
        bodySize: String,
        responseCode: String,
        responseTime: String,
        requestBody: Object,
        responseBody: Object,

The code above will log only data in dev format and will skip all the logs if the response status code is less than 400. Data will be stored in logs-db database in error_logger collection.

Feel free to contribute by forking this repository, making some changes, and submitting pull requests. For any questions or advice place an issue on this repository.

License

MIT

About

Used to log morgan stream data with request and response body into MongoDb database.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published