Я предполагаю, что экспресс-логин pino явно используется для записи уникальных идентификаторов запросов.Существует альтернативный подход, использующий http-context и node-uuid (хотя я не уверен насчет результатов тестирования)
Вы можете создать уникальный uuid перед вызовом каждого запроса, например
const uuid = require('node-uuid');
const httpContext = require('express-http-context');
....
app.use(httpContext.middleware);
app.use((req, res, next) => {
httpContext.set('reqId', uuid.v4());
next();
});
.. requestId можно получить где угодно из httpContext.Нет необходимости полагаться на передаваемый объект req. Пример использования в пользовательской реализации службы PinoLogger
public infoLogService (fileName): pino.Logger {
return pino({
level: 'info',
name: this.appService.getApp_name(),
messageKey: 'feedback-Logs',
base: {pid: process.pid, hostname: os.hostname,
timestamp: this.getTimeStamp(),
appName: this.appService.getApp_name(),
fileName: fileName,
request_id: isNullOrUndefined(httpContext.get('reqId')) ? 'Not an actual request ' : httpContext.get('reqId')
},
enabled: true,
useLevelLabels: true,
});
}
Для каждого http-вызова мы получаем UUID.для других типов журналов, таких как вызов регистратора до того, как приложение начнет обнаруживать, если соединение с базой данных прошло успешно, uuid не будет и, следовательно, было передано сообщение по умолчанию