From 395ea55b52a04fec086c2112ca7f576de421f081 Mon Sep 17 00:00:00 2001 From: Atanu Sarkar Date: Tue, 28 Feb 2023 20:10:08 +0530 Subject: [PATCH 1/4] install winston-daily-rotate-file --- package-lock.json | 29 +++++++++++++++++++++++++++++ package.json | 3 ++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 6523d82..d2e4e35 100644 --- a/package-lock.json +++ b/package-lock.json @@ -79,6 +79,14 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, + "file-stream-rotator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz", + "integrity": "sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ==", + "requires": { + "moment": "^2.29.1" + } + }, "fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", @@ -117,11 +125,21 @@ "triple-beam": "^1.3.0" } }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" + }, "one-time": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", @@ -204,6 +222,17 @@ "winston-transport": "^4.5.0" } }, + "winston-daily-rotate-file": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-4.7.1.tgz", + "integrity": "sha512-7LGPiYGBPNyGHLn9z33i96zx/bd71pjBn9tqQzO3I4Tayv94WPmBNwKC7CO1wPHdP9uvu+Md/1nr6VSH9h0iaA==", + "requires": { + "file-stream-rotator": "^0.6.1", + "object-hash": "^2.0.1", + "triple-beam": "^1.3.0", + "winston-transport": "^4.4.0" + } + }, "winston-transport": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", diff --git a/package.json b/package.json index 58291c9..19fca0a 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ }, "homepage": "https://github.com/mratanusarkar/NodeJS-Logging-Mechanism#readme", "dependencies": { - "winston": "^3.8.2" + "winston": "^3.8.2", + "winston-daily-rotate-file": "^4.7.1" } } From e59a0e09c799edabe94c06bcdf392b16d4e97ba3 Mon Sep 17 00:00:00 2001 From: Atanu Sarkar Date: Tue, 28 Feb 2023 23:45:17 +0530 Subject: [PATCH 2/4] added daily log rotate implementation --- logger/logger.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/logger/logger.js b/logger/logger.js index ef42144..72c42a9 100644 --- a/logger/logger.js +++ b/logger/logger.js @@ -1,4 +1,5 @@ const winston = require('winston'); +require('winston-daily-rotate-file'); // decide on log level based on environment [dev / qa / staging / prod] const environment = 'dev'; // to be added from process.env @@ -12,9 +13,8 @@ let location = 'local runtime' // output file let logDir = './logFiles/'; -let date = new Date().toISOString().split('T')[0]; -let errorFilePath = logDir + date + '-' + 'error.log'; -let comboFilePath = logDir + date + '-' + 'combined.log'; +let errorFileName = 'error.log'; +let comboFileName = 'combined.log'; /* @@ -37,9 +37,16 @@ const log = winston.createLogger({ ), defaultMeta: { project: project, repo: repo, type: type, location: location }, transports: [ - new winston.transports.File({ filename: errorFilePath, level: 'error' }), - new winston.transports.File({ filename: comboFilePath }), - // new winston.transports.Console({ format: winston.format.simple() }) + new winston.transports.DailyRotateFile({ + level: 'error', + filename: `${logDir}%DATE%-${errorFileName}`, + datePattern: 'YYYY-MM-DD' + }), + new winston.transports.DailyRotateFile({ + filename: `${logDir}%DATE%-${comboFileName}`, + datePattern: 'YYYY-MM-DD' + }), + // new winston.transports.Console({ format: winston.format.simple() }), new winston.transports.Console({ format: winston.format.printf(info => `[${info.timestamp}] (${info.level}): ${info.repo} > ${info.category} > ${info.subcategory} - ${info.message} ${info.stack ? '\n' + info.stack : ''}`) }) ] }); From f0b714da402a8ea45548dbfe01295470b27b50aa Mon Sep 17 00:00:00 2001 From: Atanu Sarkar Date: Tue, 28 Feb 2023 23:46:53 +0530 Subject: [PATCH 3/4] set file retention policy to 30 days with archive --- logger/logger.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/logger/logger.js b/logger/logger.js index 72c42a9..94962e4 100644 --- a/logger/logger.js +++ b/logger/logger.js @@ -40,11 +40,17 @@ const log = winston.createLogger({ new winston.transports.DailyRotateFile({ level: 'error', filename: `${logDir}%DATE%-${errorFileName}`, - datePattern: 'YYYY-MM-DD' + datePattern: 'YYYY-MM-DD', + zippedArchive: true, + maxSize: null, + maxFiles: '30d' }), new winston.transports.DailyRotateFile({ filename: `${logDir}%DATE%-${comboFileName}`, - datePattern: 'YYYY-MM-DD' + datePattern: 'YYYY-MM-DD', + zippedArchive: true, + maxSize: null, + maxFiles: '30d' }), // new winston.transports.Console({ format: winston.format.simple() }), new winston.transports.Console({ format: winston.format.printf(info => `[${info.timestamp}] (${info.level}): ${info.repo} > ${info.category} > ${info.subcategory} - ${info.message} ${info.stack ? '\n' + info.stack : ''}`) }) From 8ae6f8096bd4916dec91d5dbf39e1de244a91b74 Mon Sep 17 00:00:00 2001 From: Atanu Sarkar Date: Tue, 28 Feb 2023 23:55:10 +0530 Subject: [PATCH 4/4] update: gitignore with logFiles directory --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 6704566..ab9bcba 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,9 @@ yarn-debug.log* yarn-error.log* lerna-debug.log* +# Project Implementation Logs +logFiles + # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json