diff --git a/src/createApp.js b/src/createApp.js index c622bca348860a419cc40474d7eb3bdf196d4690..e4cca76a12cfa3fae792725785b9532d902a248d 100644 --- a/src/createApp.js +++ b/src/createApp.js @@ -6,7 +6,7 @@ import express from 'express' import helmet from 'helmet' // Fastest HTTP logger for Node.js in town -import { logger } from './logger.js' +import { getLogger } from './logger.js' import pinoHttp from 'pino-http' // Readiness and liveness checks middleware import health from '@cloudnative/health-connect' @@ -21,7 +21,6 @@ import fs from 'fs' import { getDependencies, getOxManifests } from './manifests.js' const ignorePaths = ['/ready', '/healthy'] -const httpLogger = pinoHttp({ logger, autoLogging: { ignorePaths } }) const swaggerDocument = yaml.load(fs.readFileSync('./src/swagger.yaml', 'utf8')) const bypass = (request) => ignorePaths.includes(request.path) const metricsMiddleware = promBundle({ bypass }) @@ -31,6 +30,9 @@ export function createApp () { const app = express() + const logger = getLogger() + const httpLogger = pinoHttp({ logger, autoLogging: { ignorePaths } }) + const healthCheck = new health.HealthChecker() // Application-level middleware diff --git a/src/index.js b/src/index.js index 6a77b125a9aa24b6b013debb58d721b659ee089e..84dbe3a22f15697c74a58529cc99c58b4a268039 100644 --- a/src/index.js +++ b/src/index.js @@ -1,7 +1,7 @@ // Add env vars from files // Note: actual env vars supersede .env file and .env file supersedes .env.defaults file import { config } from 'dotenv-defaults' -import { logger } from './logger.js' +import { getLogger } from './logger.js' import { createApp } from './createApp.js' config() @@ -10,5 +10,5 @@ const app = createApp() // Binds and listens for connections on the specified host and port app.listen(process.env.PORT, () => { - logger.info(`manifest-service listening on port ${process.env.PORT}`) + getLogger().info(`manifest-service listening on port ${process.env.PORT}`) }) diff --git a/src/logger.js b/src/logger.js index 2d6267c83f8f41a79866b6ab28bbc7270dd83c8c..ba77c1f44cc6f478a147f5cee4ed49b49503ec1d 100644 --- a/src/logger.js +++ b/src/logger.js @@ -1,6 +1,14 @@ // Very low overhead Node.js logger. Logs in json use pino-pretty for dev. import Logger from 'pino' -export const logger = new Logger({ - level: process.env.LOG_LEVEL -}) +export const getLogger = (() => { + let logger + return function getLogger () { + if (!logger) { + logger = new Logger({ + level: process.env.LOG_LEVEL + }) + } + return logger + } +})()