Skip to content

Commit

Permalink
Merge pull request #40 from ph0bos/request-tracing
Browse files Browse the repository at this point in the history
published 0.6.7
  • Loading branch information
ph0bos authored Feb 15, 2018
2 parents c664e1e + c79c20e commit 65bc5f7
Show file tree
Hide file tree
Showing 7 changed files with 64 additions and 20 deletions.
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,10 @@ app.use(micro([options]));
- `monitorsPath`: `String` Path to load monitors. Defaults to `monitors`.
- `partialResponseQuery`: `String` The query parameter to use for partial reponse. Defaults to `fields`.
- `correlationHeaderName`: `String` The name of your correlation header. Defaults to `X-CorrelationID`.
- `enableBodyParsing`: `boolean` Enable or disable body parsing, useful to disable when dealign with content other than JSON. Enables express-validator. Defaults to `true`.
- `validatorOptions`: `object` Enable express-validator with these options. Defaults to `null`.
- `etag`: `boolean` Activate etag.
- `enableBodyParsing`: `boolean` Enable or disable body parsing, useful to disable when dealing with content other than JSON. Enables express-validator. Defaults to `true`.
- `enableEtag`: `boolean` Activate etag. Defaults to `false`.
- `enableRequestTracing`: `boolean` Enabled request log trace. Defaults to `false`.

## SWAGGER Integration

Expand Down
3 changes: 2 additions & 1 deletion example/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ app.use(micro({
discoverable: true,
debug: true,
controllersPath: './controllers',
monitorsPath: './monitors'
monitorsPath: './monitors',
enableRequestTracing: true
}));

app.on('service:registered', function (data) {
Expand Down
7 changes: 5 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,12 @@ var buildOptions = function(options) {
options.zookeeper = { connectionString: 'localhost:2181', retry: { count: 5 } };
options.partialResponseQuery = options.partialResponseQuery || 'fields';
options.correlationHeaderName = options.correlationHeaderName || 'X-CorrelationID';
options.enableBodyParsing = options.enableBodyParsing || true;
options.validatorOptions = options.validatorOptions || null;
options.etag = options.etag || false;

// Feature Flags
options.enableBodyParsing = options.enableBodyParsing || true;
options.enableEtag = options.enableEtag || false;
options.enableRequestTracing = options.enableRequestTracing || false;

// Return now if we have no config
if (!config.app) {
Expand Down
30 changes: 18 additions & 12 deletions lib/bootstrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,19 @@
/*
* Dependencies
*/
var path = require('path');
var fs = require('fs');
var enrouten = require('express-enrouten');
var bodyParser = require('body-parser');
var cors = require('cors');
var cache = require('express-cache-response-directive');
var zoologist = require('./zoologist');
var log = require('./logger');
var partialRes = require('express-partial-response');
var validator = require('express-validator');
var correlate = require('./middleware/correlate');
var swagger = require('./swagger');
var path = require('path');
var fs = require('fs');
var enrouten = require('express-enrouten');
var bodyParser = require('body-parser');
var cors = require('cors');
var cache = require('express-cache-response-directive');
var zoologist = require('./zoologist');
var log = require('./logger');
var partialRes = require('express-partial-response');
var validator = require('express-validator');
var correlate = require('./middleware/correlate');
var requestTracing = require('./middleware/request-tracing');
var swagger = require('./swagger');

/**
* Bootstrap the microservice.
Expand Down Expand Up @@ -56,6 +57,11 @@ module.exports = function (app, options) {
// Correlation
app.use(correlate({ headerName: options.correlationHeaderName }));

// Enable request Tracing
if (options.enableRequestTracing) {
app.use(requestTracing);
}

// Starter routes (e.g. actuator)
app.use('/' + options.serviceName, enrouten({ directory: '../controllers' }));

Expand Down
19 changes: 19 additions & 0 deletions lib/middleware/request-tracing.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const ip = require('request-ip');

/**
* Middleware to Log Request Detail
*/
module.exports = function(req, res, next) {

var meta = {
request: {
client: {ip: ip.getClientIp(req)},
method: req.method,
path: req.originalUrl,
headers: req.headers
}
};

req.log.info(meta, 'Request Trace');
next();
};
15 changes: 14 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"name": "express-microservice-starter",
"version": "0.6.6",
"version": "0.6.7",
"description": "An express-based Node.js API bootstrapping module for microservices.",
"main": "index.js",
"scripts": {
"test": "NODE_ENV=test ./node_modules/.bin/mocha 'test/**/*.test.js'",
"test": "NODE_ENV=test ./node_modules/.bin/mocha 'test/**/*.test.js'",
"security": "node ./node_modules/nsp/bin/nsp check --output checkstyle"
},
"repository": {
Expand Down Expand Up @@ -40,6 +40,7 @@
"ip": "1.1.5",
"konfig": "0.2.1",
"optional": "0.1.4",
"request-ip": "2.0.2",
"swagger-tools": "0.10.3",
"uuid": "3.1.0",
"vitalsigns": "0.4.3",
Expand Down

0 comments on commit 65bc5f7

Please sign in to comment.