import {Logger as TsLogger} from "tslog"; import {AsyncLocalStorage} from "async_hooks"; import {RequestHandler} from "express"; import {nanoid} from "nanoid"; const requestIdStorage: AsyncLocalStorage = new AsyncLocalStorage(); export const logger = new TsLogger({ requestId: (): string => { return requestIdStorage.getStore() as string; }, }); export const loggingContextMiddleware: RequestHandler = (req, res, next) => { requestIdStorage.run(nanoid(8), () => { next(); }); };