From cdfb7f73117125e67b3f32f7c9d65182dbbc577a Mon Sep 17 00:00:00 2001 From: emad-salah Date: Thu, 22 Jul 2021 11:36:54 +0100 Subject: [PATCH 1/2] Complete refactor of Winston logging --- config/log.js | 94 +++++++++++++++++++++++++-------------------------- src/server.js | 5 +-- 2 files changed, 48 insertions(+), 51 deletions(-) diff --git a/config/log.js b/config/log.js index aaf62fe6..06214472 100644 --- a/config/log.js +++ b/config/log.js @@ -1,58 +1,58 @@ -// config/log.js +/** @prettier */ -const winston = require("winston"); -const util = require("util") -require("winston-daily-rotate-file"); +const { createLogger, transports, format } = require('winston') +const util = require('util') +require('winston-daily-rotate-file') -const winstonAttached = new Map(); - -const transform = (info) => { - const args = info[Symbol.for('splat')]; - if (args) { - return {...info, message: util.format(info.message, ...args)}; +// @ts-ignore +const transform = info => { + const args = info[Symbol.for('splat')] + if (args) { + return { ...info, message: util.format(info.message, ...args) } } - return info; + return info } const logFormatter = () => ({ transform }) -/** - * @param {string} logFileName - * @param {string} logLevel - * @returns {import("winston").Logger} - */ -module.exports = (logFileName, logLevel) => { - if (!winstonAttached.has(logFileName)) { - winston.add(new (winston.transports.DailyRotateFile)({ - filename: logFileName, - datePattern: "yyyy-MM-DD", +const formatter = format.combine( + format.colorize(), + format.errors({ stack: true }), + logFormatter(), + format.prettyPrint(), + format.timestamp(), + format.simple(), + format.align(), + format.printf(info => { + const { timestamp, level, message, stack, exception } = info + + const ts = timestamp.slice(0, 19).replace('T', ' ') + const isObject = typeof message === 'object' + const formattedJson = isObject ? JSON.stringify(message, null, 2) : message + const formattedException = exception ? exception.stack : '' + const errorMessage = stack || formattedException + const formattedMessage = errorMessage ? errorMessage : formattedJson + + return `${ts} [${level}]: ${formattedMessage}` + }) +) + +const Logger = createLogger({ + format: formatter, + transports: [ + new transports.DailyRotateFile({ + filename: 'shockapi.log', + datePattern: 'yyyy-MM-DD', // https://github.com/winstonjs/winston-daily-rotate-file/issues/188 - json: true, + json: false, maxSize: 1000000, maxFiles: 7, - level: logLevel - })) - winston.add(new winston.transports.Console({ - format: winston.format.combine( - winston.format.colorize(), - logFormatter(), - winston.format.prettyPrint(), - winston.format.timestamp(), - winston.format.simple(), - winston.format.align(), - winston.format.printf((info) => { - const { - timestamp, level, message - } = info; + handleExceptions: true + }), + new transports.Console({ + handleExceptions: true + }) + ] +}) - const ts = timestamp.slice(0, 19).replace('T', ' '); - return `${ts} [${level}]: ${typeof message === "object" ? JSON.stringify(message, null, 2) : message}`; - }), - ) - })) - winston.level = logLevel - winstonAttached.set(logFileName, winston) - } - - return winstonAttached.get(logFileName) -} \ No newline at end of file +module.exports = Logger diff --git a/src/server.js b/src/server.js index cd0edcba..64255072 100644 --- a/src/server.js +++ b/src/server.js @@ -47,10 +47,7 @@ const server = program => { const tunnelHost = process.env.LOCAL_TUNNEL_SERVER || defaults.localtunnelHost // setup winston logging ========== - const logger = require('../config/log')( - program.logfile || defaults.logfile, - program.loglevel || defaults.loglevel - ) + const logger = require('../config/log') CommonLogger.setLogger(logger) From 2eb61783cdbcabc9020bb16e5704724dffc7c3a7 Mon Sep 17 00:00:00 2001 From: emad-salah Date: Thu, 22 Jul 2021 11:37:58 +0100 Subject: [PATCH 2/2] Fix logger imports --- services/auth/auth.js | 2 +- services/gunDB/Mediator/index.js | 2 +- services/gunDB/contact-api/actions.js | 2 +- services/gunDB/contact-api/getters/follows.js | 2 +- services/gunDB/contact-api/jobs/lastSeenNode.js | 2 +- services/gunDB/contact-api/jobs/onOrders.js | 2 +- services/gunDB/contact-api/utils/index.js | 2 +- services/gunDB/sockets/index.js | 2 +- services/schema/index.js | 2 +- src/routes.js | 2 +- src/sockets.js | 2 +- utils/ECC/socket.js | 2 +- utils/encryptionStore.js | 2 +- utils/lightningServices/channelRequests.js | 2 +- utils/lightningServices/v2.js | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/services/auth/auth.js b/services/auth/auth.js index 8ffd8c1c..d44ac608 100644 --- a/services/auth/auth.js +++ b/services/auth/auth.js @@ -6,7 +6,7 @@ const jwt = require('jsonwebtoken') const uuidv1 = require('uuid/v1') const jsonfile = require('jsonfile') const path = require('path') -const logger = require('winston') +const logger = require('../../config/log') const Storage = require('node-persist') const FS = require('../../utils/fs') diff --git a/services/gunDB/Mediator/index.js b/services/gunDB/Mediator/index.js index d7e813a6..7bd6c0ca 100644 --- a/services/gunDB/Mediator/index.js +++ b/services/gunDB/Mediator/index.js @@ -5,7 +5,7 @@ const Common = require('shock-common') const Gun = require('gun') // @ts-ignore require('gun/nts') -const logger = require('winston') +const logger = require('../../../config/log') // @ts-ignore Gun.log = () => {} // @ts-ignore diff --git a/services/gunDB/contact-api/actions.js b/services/gunDB/contact-api/actions.js index d278bc62..9312f864 100644 --- a/services/gunDB/contact-api/actions.js +++ b/services/gunDB/contact-api/actions.js @@ -2,7 +2,7 @@ * @format */ const uuidv1 = require('uuid/v1') -const logger = require('winston') +const logger = require('../../../config/log') const Common = require('shock-common') const { Constants, Schema } = Common const Gun = require('gun') diff --git a/services/gunDB/contact-api/getters/follows.js b/services/gunDB/contact-api/getters/follows.js index da7de6e1..e7972276 100644 --- a/services/gunDB/contact-api/getters/follows.js +++ b/services/gunDB/contact-api/getters/follows.js @@ -2,7 +2,7 @@ * @format */ const Common = require('shock-common') -const Logger = require('winston') +const Logger = require('../../../../config/log') const size = require('lodash/size') const Utils = require('../utils') diff --git a/services/gunDB/contact-api/jobs/lastSeenNode.js b/services/gunDB/contact-api/jobs/lastSeenNode.js index 4bd070ee..c05c4738 100644 --- a/services/gunDB/contact-api/jobs/lastSeenNode.js +++ b/services/gunDB/contact-api/jobs/lastSeenNode.js @@ -2,7 +2,7 @@ * @format */ -const logger = require('winston') +const logger = require('../../../../config/log') const { Constants: { diff --git a/services/gunDB/contact-api/jobs/onOrders.js b/services/gunDB/contact-api/jobs/onOrders.js index 7435e2b1..3c33f2ed 100644 --- a/services/gunDB/contact-api/jobs/onOrders.js +++ b/services/gunDB/contact-api/jobs/onOrders.js @@ -2,7 +2,7 @@ * @format */ // @ts-check -const logger = require('winston') +const logger = require('../../../../config/log') const isFinite = require('lodash/isFinite') const isNumber = require('lodash/isNumber') const isNaN = require('lodash/isNaN') diff --git a/services/gunDB/contact-api/utils/index.js b/services/gunDB/contact-api/utils/index.js index 84efa706..19fdce65 100644 --- a/services/gunDB/contact-api/utils/index.js +++ b/services/gunDB/contact-api/utils/index.js @@ -2,7 +2,7 @@ * @format */ /* eslint-disable init-declarations */ -const logger = require('winston') +const logger = require('../../../../config/log') const { Constants, Utils: CommonUtils } = require('shock-common') const Key = require('../key') diff --git a/services/gunDB/sockets/index.js b/services/gunDB/sockets/index.js index 5477cab1..e2f4d999 100644 --- a/services/gunDB/sockets/index.js +++ b/services/gunDB/sockets/index.js @@ -2,7 +2,7 @@ * @format */ -const logger = require('winston') +const logger = require('../../../config/log') const Common = require('shock-common') const uuidv4 = require('uuid/v4') diff --git a/services/schema/index.js b/services/schema/index.js index 145bf326..468c56a4 100644 --- a/services/schema/index.js +++ b/services/schema/index.js @@ -1,5 +1,5 @@ const Crypto = require('crypto') -const logger = require('winston') +const logger = require('../../config/log') const Common = require('shock-common') const getGunUser = () => require('../gunDB/Mediator').getUser() const isAuthenticated = () => require('../gunDB/Mediator').isAuthenticated() diff --git a/src/routes.js b/src/routes.js index 46fb6e99..44b23076 100644 --- a/src/routes.js +++ b/src/routes.js @@ -6,7 +6,7 @@ const Axios = require('axios') const Crypto = require('crypto') const Storage = require('node-persist') -const logger = require('winston') +const logger = require('../../config/log') const httpsAgent = require('https') const responseTime = require('response-time') const uuid = require('uuid/v4') diff --git a/src/sockets.js b/src/sockets.js index 9273d1a5..281b3eec 100644 --- a/src/sockets.js +++ b/src/sockets.js @@ -3,7 +3,7 @@ */ // @ts-check -const logger = require('winston') +const logger = require('../config/log') const Common = require('shock-common') const mapValues = require('lodash/mapValues') diff --git a/utils/ECC/socket.js b/utils/ECC/socket.js index 2f25e568..58539a67 100644 --- a/utils/ECC/socket.js +++ b/utils/ECC/socket.js @@ -2,7 +2,7 @@ * @format */ const Common = require('shock-common') -const logger = require('winston') +const logger = require('../../config/log') const { safeParseJSON } = require('../JSON') const ECC = require('./index') diff --git a/utils/encryptionStore.js b/utils/encryptionStore.js index 78745d1f..eb32f369 100644 --- a/utils/encryptionStore.js +++ b/utils/encryptionStore.js @@ -3,7 +3,7 @@ */ const Crypto = require('crypto') const { Buffer } = require('buffer') -const logger = require('winston') +const logger = require('../config/log') const APIKeyPair = new Map() const authorizedDevices = new Map() diff --git a/utils/lightningServices/channelRequests.js b/utils/lightningServices/channelRequests.js index 0d54c521..cf0583f0 100644 --- a/utils/lightningServices/channelRequests.js +++ b/utils/lightningServices/channelRequests.js @@ -1,4 +1,4 @@ -const logger = require('winston') +const logger = require('../../config/log') const fetch = require('node-fetch') const Storage = require('node-persist') const { listPeers, connectPeer,getInfo } = require('./v2') diff --git a/utils/lightningServices/v2.js b/utils/lightningServices/v2.js index 5efede9c..edcee251 100644 --- a/utils/lightningServices/v2.js +++ b/utils/lightningServices/v2.js @@ -2,7 +2,7 @@ * @format */ const Crypto = require('crypto') -const logger = require('winston') +const logger = require('../../config/log') const Common = require('shock-common') const Ramda = require('ramda')