Parcourir la source

Fix server error logging

rigwild il y a 5 ans
Parent
commit
66adcdab39
2 fichiers modifiés avec 9 ajouts et 11 suppressions
  1. 6 8
      server/functions.js
  2. 3 3
      server/winston.config.js

+ 6 - 8
server/functions.js

@@ -28,12 +28,9 @@ export const errorHandler = (err, req, res, next) => {
   const { output: { payload } } = err
 
   // Pass the error to the logging handler
-  let logMsg = `Error ${payload.statusCode} - ${payload.error}` +
-    ` - Message :\n${payload.message}`
-  if (err.data) logMsg += `\nData : \n${JSON.stringify(err.data, null, 2) || err.data}`
-  logMsg += `\nStack trace : \n${err.stack}`
-
-  logger.error(logMsg)
+  let errorLogged = new Error(`Error ${payload.statusCode} - ${payload.error} - Message :\n${payload.message}`)
+  errorLogged.stack = err.stack
+  logger.error(formatError(errorLogged, err.data))
 
   // Send the error to the client
   res.status(payload.statusCode).json({
@@ -179,7 +176,7 @@ export const getSceneFilesData = async sceneName => {
  * @param {('info'|'message'|'error'|any|undefined)} event the type of event
  * @returns {string} the log object stringified
  */
-export const formatLog = (data, event = undefined) => (JSON.stringify({
+export const formatLog = (data, event = undefined) => (({
   event,
   log: data,
   date: new Date()
@@ -189,6 +186,7 @@ export const formatLog = (data, event = undefined) => (JSON.stringify({
  * Format an error object
  *
  * @param {Error} errObj an Error object
+ * @param {any} data any data to pass to the formatter
  * @returns {string} formatted log object stringified
  */
-export const formatError = errObj => formatLog({ error: errObj.message, stack: errObj.stack })
+export const formatError = (errObj, data = undefined) => formatLog({ error: errObj.message, stack: errObj.stack, data })

+ 3 - 3
server/winston.config.js

@@ -12,7 +12,7 @@ export const logger = winston.createLogger({
     new winston.transports.Console({
       level: 'debug',
       handleExceptions: true,
-      format: winston.format.simple()
+      format: winston.format.json()
     })
   ],
   exitOnError: false
@@ -28,7 +28,7 @@ export const wsLogger = winston.createLogger({
     new winston.transports.Console({
       level: 'debug',
       handleExceptions: true,
-      format: winston.format.simple()
+      format: winston.format.json()
     })
   ],
   exitOnError: false
@@ -44,7 +44,7 @@ export const dbLogger = winston.createLogger({
     new winston.transports.Console({
       level: 'debug',
       handleExceptions: true,
-      format: winston.format.simple()
+      format: winston.format.json()
     })
   ],
   exitOnError: false