Skip to content

Commit 93fb566

Browse files
authored
Merge pull request #509 from DEFRA/feat/df-1026-max-listeners
feat/df-1026: createLogger() as singleton
2 parents 81fd41b + 31750f1 commit 93fb566

36 files changed

Lines changed: 59 additions & 96 deletions

src/api/server.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { ProxyAgent } from 'proxy-agent'
77

88
import { config } from '~/src/config/index.js'
99
import { failAction } from '~/src/helpers/fail-action.js'
10-
import { createLogger } from '~/src/helpers/logging/logger.js'
10+
import { logger } from '~/src/helpers/logging/logger.js'
1111
import { requestTracing } from '~/src/helpers/request-tracing.js'
1212
import { prepareDb } from '~/src/mongo.js'
1313
import { auth } from '~/src/plugins/auth/index.js'
@@ -21,8 +21,6 @@ import { prepareSecureContext } from '~/src/secure-context.js'
2121
import { runTask as runSaveAndExitTask } from '~/src/tasks/receive-save-and-exit-messages.js'
2222
import { runTask as runSubmissionTask } from '~/src/tasks/receive-submission-messages.js'
2323

24-
const logger = createLogger()
25-
2624
const isProduction = config.get('isProduction')
2725

2826
const proxyAgent = new ProxyAgent()

src/helpers/logging/logger.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ import { loggerOptions } from '~/src/helpers/logging/logger-options.js'
55
/**
66
* Create a logger instance.
77
*/
8-
export function createLogger() {
8+
function createPinoLogger() {
99
return pino(loggerOptions)
1010
}
11+
12+
// Singleton logger instance - pino adds 'exit' listeners to process,
13+
// so we reuse a single instance to avoid MaxListenersExceededWarning
14+
export const logger = createPinoLogger()

src/index.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@ import { chdir } from 'node:process'
22

33
import { getErrorMessage } from '@defra/forms-model'
44

5-
import { createLogger } from '~/src/helpers/logging/logger.js'
6-
7-
const logger = createLogger()
5+
import { logger } from '~/src/helpers/logging/logger.js'
86

97
// Move working directory to build output
108
chdir(import.meta.dirname)

src/messaging/event.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,14 @@ import {
55
} from '@aws-sdk/client-sqs'
66

77
import { config } from '~/src/config/index.js'
8-
import { createLogger } from '~/src/helpers/logging/logger.js'
8+
import { logger } from '~/src/helpers/logging/logger.js'
99
import { sqsClient } from '~/src/tasks/sqs.js'
1010

1111
export const receiveMessageTimeout = config.get('receiveMessageTimeout')
1212

1313
const maxNumberOfMessages = config.get('maxNumberOfMessages')
1414
const visibilityTimeout = config.get('visibilityTimeout')
1515

16-
const logger = createLogger()
17-
1816
/**
1917
* @param {string} dlqName
2018
*/

src/plugins/auth/index.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Boom from '@hapi/boom'
22
import Jwt from '@hapi/jwt'
33

44
import { config } from '~/src/config/index.js'
5-
import { createLogger } from '~/src/helpers/logging/logger.js'
5+
import { logger } from '~/src/helpers/logging/logger.js'
66
import { getUserScopes } from '~/src/services/entitlements-service.js'
77

88
const oidcJwksUri = config.get('oidcJwksUri')
@@ -30,8 +30,6 @@ const cognitoClientIds = Object.fromEntries(
3030
])
3131
)
3232

33-
const logger = createLogger()
34-
3533
/**
3634
* @satisfies {ServerRegisterPluginObject<void>}
3735
*/

src/plugins/scheduler.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ const mockWarnFn = jest.fn()
33
const mockInfoFn = jest.fn()
44

55
jest.mock('~/src/helpers/logging/logger.js', () => ({
6-
createLogger: jest.fn().mockReturnValue({
6+
logger: {
77
error: mockErrorFn,
88
warn: mockWarnFn,
99
info: mockInfoFn
10-
})
10+
}
1111
}))
1212

1313
const mockInitialiseEmailExpiringSoonScheduler = jest.fn()

src/repositories/file-repository.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
import { createLogger } from '~/src/helpers/logging/logger.js'
1+
import { logger } from '~/src/helpers/logging/logger.js'
22
import { FILES_COLLECTION_NAME, db } from '~/src/mongo.js'
33

4-
const logger = createLogger()
5-
64
/**
75
* Adds a file status to the database
86
* @param {FormFileUploadStatus} fileStatus - file status

src/repositories/save-and-exit-repository.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@ import Boom from '@hapi/boom'
55

66
import { config } from '~/src/config/index.js'
77
import { addDays } from '~/src/helpers/date-helper.js'
8-
import { createLogger } from '~/src/helpers/logging/logger.js'
8+
import { logger } from '~/src/helpers/logging/logger.js'
99
import { createTimer } from '~/src/helpers/timer.js'
1010
import { SAVE_AND_EXIT_COLLECTION_NAME, db } from '~/src/mongo.js'
1111

12-
const logger = createLogger()
1312
const expiryInDays = config.get('saveAndExitExpiryInDays')
1413

1514
export const saveAndExitLabel = 'save-and-exit'

src/repositories/submission-repository.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import { getErrorMessage } from '@defra/forms-model'
22

3-
import { createLogger } from '~/src/helpers/logging/logger.js'
3+
import { logger } from '~/src/helpers/logging/logger.js'
44
import { SUBMISSIONS_COLLECTION_NAME, db } from '~/src/mongo.js'
55

6-
const logger = createLogger()
7-
86
/**
97
* Gets submission records based on formId
108
* @param {string} formId - the form id

src/routes/admin.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Scopes, idSchema } from '@defra/forms-model'
22
import Joi from 'joi'
33

4-
import { createLogger } from '~/src/helpers/logging/logger.js'
4+
import { logger } from '~/src/helpers/logging/logger.js'
55
import {
66
deleteDlqMessage,
77
receiveDlqMessages,
@@ -24,8 +24,6 @@ import {
2424

2525
const OK_RESPONSE = 200
2626

27-
const logger = createLogger()
28-
2927
export default [
3028
/**
3129
* @satisfies {ServerRoute<ResetSaveAndExit>}

0 commit comments

Comments
 (0)