Merge pull request #430 from shocknet/bug/winston-errors

Winston logging refactored
This commit is contained in:
CapDog 2021-07-22 09:13:16 -04:00 committed by GitHub
commit 879547c101
17 changed files with 63 additions and 66 deletions

View file

@ -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')];
// @ts-ignore
const transform = info => {
const args = info[Symbol.for('splat')]
if (args) {
return {...info, message: util.format(info.message, ...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)
}
module.exports = Logger

View file

@ -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')

View file

@ -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

View file

@ -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')

View file

@ -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')

View file

@ -2,7 +2,7 @@
* @format
*/
const logger = require('winston')
const logger = require('../../../../config/log')
const {
Constants: {

View file

@ -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')

View file

@ -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')

View file

@ -2,7 +2,7 @@
* @format
*/
const logger = require('winston')
const logger = require('../../../config/log')
const Common = require('shock-common')
const uuidv4 = require('uuid/v4')

View file

@ -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()

View file

@ -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')

View file

@ -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)

View file

@ -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')

View file

@ -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')

View file

@ -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()

View file

@ -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')

View file

@ -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')