diff --git a/api/config/parsers.js b/api/config/parsers.js index 9de54c2ae9..7cedd014cb 100644 --- a/api/config/parsers.js +++ b/api/config/parsers.js @@ -186,8 +186,29 @@ const debugTraverse = winston.format.printf(({ level, message, timestamp, ...met } }); +const jsonTruncateFormat = winston.format((info) => { + const truncateObject = (obj) => { + const newObj = {}; + Object.entries(obj).forEach(([key, value]) => { + if (typeof value === 'string') { + newObj[key] = truncateLongStrings(value, 255); + } else if (Array.isArray(value)) { + newObj[key] = value.map(condenseArray); + } else if (typeof value === 'object' && value !== null) { + newObj[key] = truncateObject(value); + } else { + newObj[key] = value; + } + }); + return newObj; + }; + + return truncateObject(info); +}); + module.exports = { redactFormat, redactMessage, debugTraverse, + jsonTruncateFormat, }; diff --git a/api/config/winston.js b/api/config/winston.js index 81e972fbbc..8f51b9963c 100644 --- a/api/config/winston.js +++ b/api/config/winston.js @@ -1,7 +1,7 @@ const path = require('path'); const winston = require('winston'); require('winston-daily-rotate-file'); -const { redactFormat, redactMessage, debugTraverse } = require('./parsers'); +const { redactFormat, redactMessage, debugTraverse, jsonTruncateFormat } = require('./parsers'); const logDir = path.join(__dirname, '..', 'logs'); @@ -112,7 +112,7 @@ if (useDebugConsole) { new winston.transports.Console({ level: 'debug', format: useConsoleJson - ? winston.format.combine(fileFormat, debugTraverse, winston.format.json()) + ? winston.format.combine(fileFormat, jsonTruncateFormat(), winston.format.json()) : winston.format.combine(fileFormat, debugTraverse), }), ); @@ -120,7 +120,7 @@ if (useDebugConsole) { transports.push( new winston.transports.Console({ level: 'info', - format: winston.format.combine(fileFormat, winston.format.json()), + format: winston.format.combine(fileFormat, jsonTruncateFormat(), winston.format.json()), }), ); } else {