From 1ede078154213d3426cc492612ce41bdb1eda43b Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Mon, 11 Jan 2021 09:20:21 -0600 Subject: [PATCH] fix(Logger): Handle interpolating stdout (#7114) * fix(Logger): Handle interpolating stdout * Update CHANGELOG.md --- CHANGELOG.md | 1 + spec/WinstonLoggerAdapter.spec.js | 11 +++++++++++ src/Adapters/Logger/WinstonLogger.js | 2 +- src/LiveQuery/ParseLiveQueryServer.js | 2 +- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0980a9c215..251f179237 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ ___ - IMPROVE: Optimize queries on classes with pointer permissions. [#7061](https://github.com/parse-community/parse-server/pull/7061). Thanks to [Pedro Diaz](https://github.com/pdiaz) - FIX: request.context for afterFind triggers. [#7078](https://github.com/parse-community/parse-server/pull/7078). Thanks to [dblythy](https://github.com/dblythy) - NEW: Added convenience method Parse.Cloud.sendEmail(...) to send email via email adapter in Cloud Code. [#7089](https://github.com/parse-community/parse-server/pull/7089). Thanks to [dblythy](https://github.com/dblythy) +- FIX: Winston Logger interpolating stdout to console [#7114](https://github.com/parse-community/parse-server/pull/7114). Thanks to [dplewis](https://github.com/dplewis) - NEW: LiveQuery support for $and, $nor, $containedBy, $geoWithin, $geoIntersects queries [#7113](https://github.com/parse-community/parse-server/pull/7113). Thanks to [dplewis](https://github.com/dplewis) ### 4.5.0 diff --git a/spec/WinstonLoggerAdapter.spec.js b/spec/WinstonLoggerAdapter.spec.js index 7f69660e91..ca18be3739 100644 --- a/spec/WinstonLoggerAdapter.spec.js +++ b/spec/WinstonLoggerAdapter.spec.js @@ -258,4 +258,15 @@ describe('verbose logs', () => { const log = results.find(x => x.message === 'testing verbose logs with 123'); expect(log); }); + + it('verbose logs should interpolate stdout', async () => { + await reconfigureServer({ verbose: true, silent: false, logsFolder: null }); + spyOn(process.stdout, 'write'); + const winstonLoggerAdapter = new WinstonLoggerAdapter(); + winstonLoggerAdapter.log('verbose', 'testing verbose logs with %j', { + hello: 'world', + }); + const firstLog = process.stdout.write.calls.first().args[0]; + expect(firstLog).toBe('verbose: testing verbose logs with {"hello":"world"}\n'); + }); }); diff --git a/src/Adapters/Logger/WinstonLogger.js b/src/Adapters/Logger/WinstonLogger.js index 98a86610c0..fe28660056 100644 --- a/src/Adapters/Logger/WinstonLogger.js +++ b/src/Adapters/Logger/WinstonLogger.js @@ -52,7 +52,7 @@ function configureTransports(options) { colorize: true, name: 'console', silent, - format: consoleFormat, + format: format.combine(format.splat(), consoleFormat), }, options ); diff --git a/src/LiveQuery/ParseLiveQueryServer.js b/src/LiveQuery/ParseLiveQueryServer.js index 0f00635cab..0913f0a22d 100644 --- a/src/LiveQuery/ParseLiveQueryServer.js +++ b/src/LiveQuery/ParseLiveQueryServer.js @@ -79,7 +79,7 @@ class ParseLiveQueryServer { // Register message handler for subscriber. When publisher get messages, it will publish message // to the subscribers and the handler will be called. this.subscriber.on('message', (channel, messageStr) => { - logger.verbose('Subscribe messsage %j', messageStr); + logger.verbose('Subscribe message %j', messageStr); let message; try { message = JSON.parse(messageStr);