mirror of
https://github.com/directus/directus.git
synced 2026-02-16 23:01:55 -05:00
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:
@@ -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: {
|
||||
|
||||
Reference in New Issue
Block a user