Skip to content

Commit 1ee4533

Browse files
committed
Adds silent option to disable console output
1 parent 975d9a6 commit 1ee4533

File tree

6 files changed

+26
-18
lines changed

6 files changed

+26
-18
lines changed

spec/Logger.spec.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,18 @@ describe('Logger', () => {
1414
});
1515
spyOn(testTransport, 'log');
1616
logging.addTransport(testTransport);
17+
expect(Object.keys(logging.logger.transports).length).toBe(4);
1718
logging.logger.info('hi');
1819
expect(testTransport.log).toHaveBeenCalled();
1920
logging.removeTransport(testTransport);
20-
expect(Object.keys(logging.logger.transports).length).toBe(2);
21+
expect(Object.keys(logging.logger.transports).length).toBe(3);
2122
});
2223

2324
it('should have files transports', (done) => {
2425
reconfigureServer().then(() => {
2526
let transports = logging.logger.transports;
2627
let transportKeys = Object.keys(transports);
27-
expect(transportKeys.length).toBe(2);
28+
expect(transportKeys.length).toBe(3);
2829
done();
2930
});
3031
});
@@ -35,24 +36,23 @@ describe('Logger', () => {
3536
}).then(() => {
3637
let transports = logging.logger.transports;
3738
let transportKeys = Object.keys(transports);
38-
expect(transportKeys.length).toBe(0);
39+
expect(transportKeys.length).toBe(1);
3940
done();
4041
});
4142
});
4243

4344
it('should enable JSON logs', (done) => {
4445
// Force console transport
45-
process.env.VERBOSE=1;
4646
reconfigureServer({
4747
logsFolder: null,
48-
jsonLogs: true
48+
jsonLogs: true,
49+
silent: false
4950
}).then(() => {
5051
let spy = spyOn(process.stdout, 'write');
5152
logging.logger.info('hi', {key: 'value'});
5253
expect(process.stdout.write).toHaveBeenCalled();
5354
var firstLog = process.stdout.write.calls.first().args[0];
5455
expect(firstLog).toEqual(JSON.stringify({key: 'value', level: 'info', message: 'hi' })+'\n');
55-
delete process.env.VERBOSE;
5656
return reconfigureServer({
5757
jsonLogs: false
5858
});

spec/helper.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ var defaultConfiguration = {
4646
webhookKey: 'hook',
4747
masterKey: 'test',
4848
fileKey: 'test',
49+
silent: true,
4950
push: {
5051
'ios': {
5152
cert: 'prodCert.pem',

src/Adapters/Logger/WinstonLogger.js

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ const additionalTransports = [];
1111
function updateTransports(options) {
1212
let transports = Object.assign({}, logger.transports);
1313
if (options) {
14+
let silent = options.silent;
15+
delete options.silent;
1416
if (_.isNull(options.dirname)) {
1517
delete transports['parse-server'];
1618
delete transports['parse-server-error'];
@@ -28,15 +30,12 @@ function updateTransports(options) {
2830
}, options));
2931
}
3032

31-
if (!process.env.TESTING || process.env.VERBOSE) {
32-
transports.console = new (winston.transports.Console)(
33-
Object.assign({
34-
colorize: true,
35-
name: 'console'
36-
}, options));
37-
} else {
38-
delete transports['console'];
39-
}
33+
transports.console = new (winston.transports.Console)(
34+
Object.assign({
35+
colorize: true,
36+
name: 'console',
37+
silent
38+
}, options));
4039
}
4140
// Mount the additional transports
4241
additionalTransports.forEach((transport) => {
@@ -51,7 +50,8 @@ export function configureLogger({
5150
logsFolder = defaults.logsFolder,
5251
jsonLogs = defaults.jsonLogs,
5352
logLevel = winston.level,
54-
verbose = defaults.verbose } = {}) {
53+
verbose = defaults.verbose,
54+
silent = defaults.silent } = {}) {
5555

5656
if (verbose) {
5757
logLevel = 'verbose';
@@ -70,6 +70,8 @@ export function configureLogger({
7070
}
7171
options.dirname = logsFolder;
7272
options.level = logLevel;
73+
options.silent = silent;
74+
7375
if (jsonLogs) {
7476
options.json = true;
7577
options.stringify = true;

src/ParseServer.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ class ParseServer {
107107
logsFolder = logging.defaults.logsFolder,
108108
verbose = logging.defaults.verbose,
109109
logLevel = logging.defaults.level,
110+
silent = logging.defaults.silent,
110111
databaseURI,
111112
databaseOptions,
112113
databaseAdapter,
@@ -179,7 +180,7 @@ class ParseServer {
179180
// Pass the push options too as it works with the default
180181
const pushControllerAdapter = loadAdapter(push && push.adapter, ParsePushAdapter, push || {});
181182

182-
const loggerControllerAdapter = loadAdapter(loggerAdapter, WinstonLoggerAdapter, { jsonLogs, logsFolder, verbose, logLevel });
183+
const loggerControllerAdapter = loadAdapter(loggerAdapter, WinstonLoggerAdapter, { jsonLogs, logsFolder, verbose, logLevel, silent });
183184

184185
logging.setLogger(loggerControllerAdapter);
185186

src/cli/cli-definitions.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,9 @@ export default {
201201
env: "PARSE_SERVER_LOGS_FOLDER",
202202
help: "Folder for the logs (defaults to './logs')",
203203
},
204+
"silent": {
205+
help: "Disables console output",
206+
},
204207
"revokeSessionOnPasswordReset": {
205208
env: "PARSE_SERVER_REVOKE_SESSION_ON_PASSWORD_RESET",
206209
help: "When a user changes their password, either through the reset password email or while logged in, all sessions are revoked if this is true. Set to false if you don't want to revoke sessions.",

src/logger.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ export const defaults = {
1919
jsonLogs: process.env.JSON_LOGS || false,
2020
logsFolder,
2121
verbose,
22-
level
22+
level,
23+
silent: false
2324
}
2425

2526
export function setLogger(aLogger) {

0 commit comments

Comments
 (0)