Skip to content

Commit feb7083

Browse files
committed
feat(middleware): add support for Express
1 parent b8b7b95 commit feb7083

File tree

10 files changed

+399
-21
lines changed

10 files changed

+399
-21
lines changed

.npmignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
*.spec.js
22
node_modules
33
.idea
4+
examples

README.md

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Simple JSON logger middleware that combines the namespaces of [debug] and the
55

66
It has the same logging levels as [bunyan].
77

8-
## Example
8+
## Example logging
99

1010
```javascript
1111
process.env.DEBUG = 'redis';
@@ -29,7 +29,23 @@ will output
2929
{"name":"redis","action":"query","level":50,"time":"2016-08-15T08:50:23.569Z","error_name":"Error","error_stack":"Error: Unauthorized\n at Object.<anonymous> (/home/blacksonic/workspace/bunyan-debug/example.js:15:32)\n at Module._compile (module.js:541:32)\n at Object.Module._extensions..js (module.js:550:10)\n at Module.load (module.js:458:32)\n at tryModuleLoad (module.js:417:12)\n at Function.Module._load (module.js:409:3)\n at Module.runMain (module.js:575:10)\n at run (bootstrap_node.js:352:7)\n at startup (bootstrap_node.js:144:9)\n at bootstrap_node.js:467:3","error_message":"Unauthorized","problem":"missmatch"}
3030
```
3131

32-
Examples can be found in ```example.js```.
32+
Examples can be found in ```examples/index.js```.
33+
34+
### Logging request identifier automatically
35+
36+
The library provides middlewares for both Koa and Express applications.
37+
These middlewares add the request identifiers coming from the header X-Request-Id to every log
38+
(in the log: `request_id`).
39+
40+
```javascript
41+
const Koa = require('koa');
42+
const logFactory = require('@emartech/json-logger');
43+
44+
app.use(logFactory.getMiddleware());
45+
```
46+
47+
The method `getMiddleware` creates a Koa middleware (alias for `getKoaMiddleware`).
48+
The `getExpressMiddleware` method does the same, but returns an Express middleware.
3349

3450
## Development
3551

examples/express.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
'use strict';
2+
3+
const express = require('express');
4+
const logFactory = require('../index');
5+
const logger = logFactory('example');
6+
const port = 3000;
7+
8+
const app = express();
9+
10+
app.use(logFactory.getExpressMiddleware());
11+
12+
app.get('/', (req, res) => {
13+
logger.info('before');
14+
15+
logFactory.setOnContext('customer_id', Math.round(Math.random() * 1000));
16+
17+
logger.info('after');
18+
res.send('It works')
19+
});
20+
21+
app.listen(port);
22+
console.log('listening on port: ' + port);

example.js renamed to examples/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use strict';
22

33
process.env.DEBUG = 'redis';
4-
const logger = require('./index');
4+
const logger = require('../index');
55

66
const mongoLogger = logger('mongo');
77
const redisLogger = logger('redis');

koa-example.js renamed to examples/koa.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,12 @@
11
'use strict';
22

33
const Koa = require('koa');
4-
const uuid = require('uuid');
5-
const logFactory = require('./index');
4+
const logFactory = require('../index');
65
const logger = logFactory('example');
76
const port = 3000;
87

98
const app = new Koa();
109

11-
app.use(async (ctx, next) => {
12-
ctx.request.header['x-request-id'] = uuid.v4();
13-
await next();
14-
});
15-
1610
app.use(logFactory.getMiddleware());
1711

1812
app.use(async (ctx) => {

index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ logFactory.Logger = Logger;
1919
logFactory.getNamespaces = function() {
2020
return process.env.DEBUG || '';
2121
};
22-
logFactory.getMiddleware = contextMiddlewareFactory.getMiddleware.bind(contextMiddlewareFactory);
22+
logFactory.getKoaMiddleware = contextMiddlewareFactory.getKoaMiddleware.bind(contextMiddlewareFactory);
23+
logFactory.getExpressMiddleware = contextMiddlewareFactory.getExpressMiddleware.bind(contextMiddlewareFactory);
24+
logFactory.getMiddleware = logFactory.getKoaMiddleware;
2325
logFactory.setOnContext = contextMiddlewareFactory.setOnContext.bind(contextMiddlewareFactory);
2426

2527
module.exports = logFactory;

0 commit comments

Comments
 (0)