diff --git a/dotcom-rendering/src/server/lib/logging.ts b/dotcom-rendering/src/server/lib/logging.ts index 2e316dd6e1d..4f87080a203 100644 --- a/dotcom-rendering/src/server/lib/logging.ts +++ b/dotcom-rendering/src/server/lib/logging.ts @@ -3,16 +3,13 @@ import type { LoggingEvent } from 'log4js'; import { addLayout, configure, getLogger, shutdown } from 'log4js'; import { loggingStore } from './logging-store'; +const logName = `dotcom-rendering.log`; + const logLocation = process.env.NODE_ENV === 'production' && !process.env.DISABLE_LOGGING_AND_METRICS - ? '/var/log/dotcom-rendering/dotcom-rendering.log' - : `${path.resolve('logs')}/dotcom-rendering.log`; - -const stage = - typeof process.env.GU_STAGE === 'string' - ? process.env.GU_STAGE.toUpperCase() - : 'DEV'; + ? `/var/log/dotcom-rendering/${logName}` + : `${path.resolve('logs')}/${logName}`; const logFields = (logEvent: LoggingEvent): unknown => { const { request } = loggingStore.getStore() ?? { @@ -22,12 +19,17 @@ const logFields = (logEvent: LoggingEvent): unknown => { const coreFields = { stack: 'frontend', app: 'dotcom-rendering', - stage, + stage: + typeof process.env.GU_STAGE === 'string' + ? process.env.GU_STAGE.toUpperCase() + : 'DEV', '@timestamp': logEvent.startTime, '@version': 1, level: logEvent.level.levelStr, level_value: logEvent.level.level, request, + // NODE_APP_INSTANCE is set by pm2 + thread_name: process.env.NODE_APP_INSTANCE ?? '0', }; // log4js uses any[] to type data but we want to coerce it here // because we now depend on the type to log the result properly @@ -79,6 +81,10 @@ const enableLog4j = { development: { appenders: ['console'], level: 'info' }, }, pm2: true, + // log4js cluster mode handling does not work as it prevents + // logs from processes other than the main process from + // writing to the log. + disableClustering: true, }; if (process.env.DISABLE_LOGGING_AND_METRICS === 'true') {