From 53bf68a6aff44bb7b2f40d40d6554809253a01a8 Mon Sep 17 00:00:00 2001 From: Saad Jutt Date: Mon, 23 May 2022 21:14:37 +0500 Subject: [PATCH] feat(env): added new env variable LOG_FORMAT_MORGAN --- README.md | 4 +++ api/.env.example | 2 ++ api/src/app.ts | 14 +++++++--- api/src/utils/verifyEnvVariables.ts | 40 +++++++++++++++++++++++++---- 4 files changed, 52 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 87aa620..a3a2024 100644 --- a/README.md +++ b/README.md @@ -125,6 +125,10 @@ HELMET_COEP= # } HELMET_CSP_CONFIG_PATH=./csp.config.json +# LOG_FORMAT_MORGAN options: [combined|common|dev|short|tiny] default: `common` +# Docs: https://www.npmjs.com/package/morgan#predefined-formats +LOG_FORMAT_MORGAN= + ``` ## Persisting the Session diff --git a/api/.env.example b/api/.env.example index 163af41..ab6de3e 100644 --- a/api/.env.example +++ b/api/.env.example @@ -19,3 +19,5 @@ DB_CONNECT=mongodb+srv://:@/?retryWr SAS_PATH=/opt/sas/sas9/SASHome/SASFoundation/9.4/sas SASJS_ROOT=./sasjs_root + +LOG_FORMAT_MORGAN=common \ No newline at end of file diff --git a/api/src/app.ts b/api/src/app.ts index a15b08b..33a1e27 100644 --- a/api/src/app.ts +++ b/api/src/app.ts @@ -37,10 +37,18 @@ if (verifyEnvVariables()) { const app = express() app.use(cookieParser()) -app.use(morgan('tiny')) -const { MODE, CORS, WHITELIST, PROTOCOL, HELMET_CSP_CONFIG_PATH, HELMET_COEP } = - process.env +const { + MODE, + CORS, + WHITELIST, + PROTOCOL, + HELMET_CSP_CONFIG_PATH, + HELMET_COEP, + LOG_FORMAT_MORGAN +} = process.env + +app.use(morgan(LOG_FORMAT_MORGAN as string)) export const cookieOptions = { secure: PROTOCOL === ProtocolType.HTTPS, diff --git a/api/src/utils/verifyEnvVariables.ts b/api/src/utils/verifyEnvVariables.ts index d4eb91e..9d82069 100644 --- a/api/src/utils/verifyEnvVariables.ts +++ b/api/src/utils/verifyEnvVariables.ts @@ -18,6 +18,14 @@ export enum HelmetCoepType { FALSE = 'false' } +export enum LOG_FORMAT_MORGANType { + Combined = 'combined', + Common = 'common', + Dev = 'dev', + Short = 'short', + tiny = 'tiny' +} + export enum ReturnCode { Success, InvalidEnv @@ -36,6 +44,8 @@ export const verifyEnvVariables = (): ReturnCode => { errors.push(...verifyHELMET_COEP()) + errors.push(...verifyLOG_FORMAT_MORGAN()) + if (errors.length) { process.logger?.error( `Invalid environment variable(s) provided: \n${errors.join('\n')}` @@ -173,9 +183,29 @@ const verifyHELMET_COEP = (): string[] => { return errors } -const DEFAULTS = { - MODE: 'desktop', - PROTOCOL: 'http', - PORT: '5000', - HELMET_COEP: 'true' +const verifyLOG_FORMAT_MORGAN = (): string[] => { + const errors: string[] = [] + const { LOG_FORMAT_MORGAN } = process.env + + if (LOG_FORMAT_MORGAN) { + const logFormatMorganTypes = Object.values(LOG_FORMAT_MORGANType) + if ( + !logFormatMorganTypes.includes(LOG_FORMAT_MORGAN as LOG_FORMAT_MORGANType) + ) + errors.push( + `- LOG_FORMAT_MORGAN '${LOG_FORMAT_MORGAN}'\n - valid options ${logFormatMorganTypes}` + ) + LOG_FORMAT_MORGAN + } else { + process.env.LOG_FORMAT_MORGAN = DEFAULTS.LOG_FORMAT_MORGAN + } + return errors +} + +const DEFAULTS = { + MODE: ModeType.Desktop, + PROTOCOL: ProtocolType.HTTP, + PORT: '5000', + HELMET_COEP: HelmetCoepType.TRUE, + LOG_FORMAT_MORGAN: LOG_FORMAT_MORGANType.Common }