Adds possible extra pino logger options through env vars (#10911)

* Added missing data field to sessions yaml

* rebased sessions.yaml

* Added custom pino logger options from env vars

* Added LOGGER_ explanation to docs

* Added similar functionality for pino http, so level of request logs can be set
This commit is contained in:
keesvanbemmel
2022-01-12 16:41:28 +01:00
committed by GitHub
parent b13afc7445
commit ee7e678f24
2 changed files with 42 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
import { Request, RequestHandler } from 'express';
import pino, { LoggerOptions } from 'pino';
import pinoHTTP, { stdSerializers } from 'pino-http';
import { getConfigFromEnv } from './utils/get-config-from-env';
import { URL } from 'url';
import env from './env';
@@ -17,11 +18,37 @@ if (env.LOG_STYLE !== 'raw') {
pinoOptions.prettifier = require('pino-colada');
}
const logger = pino(pinoOptions);
const loggerEnvConfig = getConfigFromEnv('LOGGER_', 'LOGGER_HTTP');
// Expose custom log levels into formatter function
if (loggerEnvConfig.levels) {
const customLogLevels: { [key: string]: string } = {};
for (const el of loggerEnvConfig.levels.split(',')) {
const key_val = el.split(':');
customLogLevels[key_val[0].trim()] = key_val[1].trim();
}
pinoOptions.formatters = {
level(label: string, number: any) {
return {
severity: customLogLevels[label] || 'info',
level: number,
};
},
};
delete loggerEnvConfig.levels;
}
const logger = pino(Object.assign(pinoOptions, loggerEnvConfig));
const httpLoggerEnvConfig = getConfigFromEnv('LOGGER_HTTP', ['LOGGER_HTTP_LOGGER']);
export const expressLogger = pinoHTTP(
{
logger,
...httpLoggerEnvConfig,
},
{
serializers: {