Skip to content

Commit

Permalink
Add Express ALS example
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrey Melikhov committed Jan 17, 2021
1 parent 767105f commit e50c260
Show file tree
Hide file tree
Showing 6 changed files with 742 additions and 0 deletions.
30 changes: 30 additions & 0 deletions express-als/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const express = require('express');
const app = express();
const logic = require('./logic');
const { v4: uuidv4 } = require('uuid');
const logger = require('./logger');
const {asyncLocalStorage} = require('./async-storage');

app.use((req, res, next) => {
const traceId = req.headers['x-request-id'] || uuidv4();
asyncLocalStorage.run(new Map(), () => {
logger.init(traceId)
next();
})
});

app.use((req, res, next) => {
logger.get().info('Middleware');
next();
});

app.get('/', (req, res) => {
logger.get().info('start request');
logic.foo();
logger.get().info('end request');
res.end('ok');
});

app.listen(8800, () => {
logger.get().info('Application Start...')
});
6 changes: 6 additions & 0 deletions express-als/async-storage.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const { AsyncLocalStorage } = require('async_hooks');
const asyncLocalStorage = new AsyncLocalStorage();

module.exports = {
asyncLocalStorage
}
19 changes: 19 additions & 0 deletions express-als/logger.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const logger = require('pino')({
prettyPrint: true
});
const {asyncLocalStorage} = require('./async-storage');

module.exports = {
init(traceId) {
const store = asyncLocalStorage.getStore();
const childLogger = logger.child({
traceId
})
store.set('logger', childLogger);
},
get() {
const store = asyncLocalStorage.getStore();
const childLogger = store?.get('logger');
return childLogger ? childLogger : logger;
}
}
7 changes: 7 additions & 0 deletions express-als/logic.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const logger = require('./logger');

module.exports = {
foo() {
logger.get().info('foo')
}
}
Loading

0 comments on commit e50c260

Please sign in to comment.