Skip to content

Commit 10fcebb

Browse files
committed
Merge branch 'winston3'
2 parents 4aa4557 + c5d55b5 commit 10fcebb

File tree

3 files changed

+348
-125
lines changed

3 files changed

+348
-125
lines changed

conf/loggers.js

Lines changed: 65 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* # loggers.js
3-
* Copyright(c) 2020 Stefano Balietti
3+
* Copyright(c) 2021 Stefano Balietti
44
* MIT Licensed
55
*
66
* Configuration file for Winston.js in nodegame-server
@@ -13,81 +13,86 @@ const winston = require('winston');
1313

1414
// Variable loggers is winston.loggers.
1515
function configure(loggers, logDir) {
16+
let format = winston.format;
1617
let logLevel = winston.level;
18+
let transports = winston.transports;
19+
20+
const logFormatter = format.printf((info) => {
21+
let { timestamp, level, stack, message } = info;
22+
message = stack || message;
23+
return `${timestamp} ${level}: ${message}`;
24+
});
25+
26+
let consoleFormat = format.combine(format.colorize(), format.simple(),
27+
format.timestamp(), logFormatter);
1728

1829
// ServerNode.
1930
loggers.add('servernode', {
20-
console: {
21-
level: logLevel,
22-
colorize: true
23-
},
24-
file: {
25-
level: logLevel,
26-
timestamp: true,
27-
filename: path.join(logDir, 'servernode.log'),
28-
maxsize: 1000000,
29-
maxFiles: 10
30-
}
31+
// format: format.errors({ stack: true }),
32+
transports: [
33+
new transports.Console({
34+
level: logLevel,
35+
// colorize: true
36+
format: consoleFormat
37+
}),
38+
new transports.File({
39+
level: logLevel,
40+
timestamp: true,
41+
filename: path.join(logDir, 'servernode.log'),
42+
maxsize: 1000000,
43+
maxFiles: 10
44+
})
45+
]
46+
3147
});
3248

3349
// Channel.
3450
loggers.add('channel', {
35-
console: {
36-
level: logLevel,
37-
colorize: true,
38-
},
39-
file: {
40-
level: logLevel,
41-
timestamp: true,
42-
filename: path.join(logDir, 'channels.log'),
43-
maxsize: 1000000,
44-
maxFiles: 10
45-
}
51+
format: format.errors({ stack: true }),
52+
transports: [
53+
new transports.Console({
54+
level: logLevel,
55+
// colorize: true
56+
format: consoleFormat
57+
}),
58+
new transports.File({
59+
level: logLevel,
60+
timestamp: true,
61+
filename: path.join(logDir, 'channels.log'),
62+
maxsize: 1000000,
63+
maxFiles: 10
64+
})
65+
]
4666
});
4767

4868
// Messages.
4969
// Make custom levels and only File transports for messages.
50-
let msgLogger = loggers.add('messages');
51-
msgLogger.remove(winston.transports.Console);
52-
msgLogger.add(winston.transports.File, {
53-
timestamp: true,
54-
maxsize: 1000000,
55-
filename: path.join(logDir, 'messages.log')
70+
let msgLogger = loggers.add('messages', {
71+
format: format.errors({ stack: true }),
72+
transports: [
73+
new transports.File({
74+
timestamp: true,
75+
maxsize: 1000000,
76+
filename: path.join(logDir, 'messages.log')
77+
})
78+
]
5679
});
5780

58-
// Do not change, or logging might be affected.
59-
// Logger.js hardcodes the values for speed.
60-
msgLogger.setLevels({
61-
// Log none.
62-
none: 0,
63-
// All DATA msgs.
64-
data: 1,
65-
// All SET and DATA msgs.
66-
set: 3,
67-
// All SET, GET and DATA msgs.
68-
get: 5,
69-
// All SETUP, SET, GET and DATA msgs.
70-
setup: 7,
71-
// All messages, but **not** PLAYER_UPDATE, SERVERCOMMAND and ALERT.
72-
game: 9,
73-
// All messages.
74-
all: 11
75-
});
76-
77-
// Set default logging level for messages.
78-
msgLogger.level = 'all';
79-
8081
// Clients.
8182
loggers.add('clients', {
82-
console: {
83-
level: logLevel,
84-
colorize: true,
85-
},
86-
file: {
87-
level: 'silly',
88-
timestamp: true,
89-
filename: path.join(logDir, 'clients.log')
90-
}
83+
format: format.errors({ stack: true }),
84+
transports: [
85+
new transports.Console({
86+
level: logLevel,
87+
// colorize: true
88+
format: consoleFormat
89+
}),
90+
new transports.File({
91+
level: 'silly',
92+
timestamp: true,
93+
filename: path.join(logDir, 'clients.log')
94+
})
95+
]
9196
});
9297

9398
return true;

lib/ServerNode.js

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -333,23 +333,28 @@ ServerNode.prototype.init = function(options) {
333333
}
334334
});
335335

336-
337336
// Loading default config files.
338-
this.logger.verbose('ServerNode.init: loading default conf files');
339337
if (options.logDir) this.logDir = resolvePath(options.logDir);
338+
// Loggers first.
340339
this.loadConfFile(path.join(this.defaultConfDir, 'loggers.js'),
341-
this.configureLoggers);
340+
this.configureLoggers, false);
341+
// Setting servernode logger.
342342
this.logger = winston.loggers.get('servernode');
343+
// Print what loadConfFile could not.
344+
this.logger.debug('ServerNode.loadConfFile: loaded ' +
345+
path.join(this.defaultConfDir, 'loggers.js'));
346+
// Loading remaining conf.
343347
this.loadConfDir(this.defaultConfDir, { loggers: false });
344348

345-
// Loading user configuration files
349+
// Loading user configuration files.
346350
if (options.confDir) {
347351
this.logger.verbose('ServerNode.init: loading user conf files');
348-
// We load the loggers configuration file first, so that
349-
// the the output is nicely formatted.
352+
// Loggers first
350353
let dir = resolvePath(options.confDir);
351354
this.loadConfFile(path.join(dir, 'loggers.js'), this.configureLoggers);
355+
// Re-setting servernode logger.
352356
this.logger = winston.loggers.get('servernode');
357+
// Loading remaining conf.
353358
this.loadConfDir(dir, { loggers: false });
354359
}
355360

@@ -959,14 +964,15 @@ ServerNode.prototype.loadConfDir = function(dir, mask, force) {
959964
*
960965
* @param {string} file The path to the configuration file
961966
* @param {function} cb The callback function (e.g. ServerNode.configureHTTP)
967+
* @param {boolean} silent If FALSE, do not call logger (might not be ready)
962968
*
963969
* @see ServerNode.loadConfDir
964970
* @see ServerNode.configure
965971
* @see ServerNode.configureHTTP
966972
* @see ServerNode.confiureSIO
967973
* @see ServerNode.confiureLoggers
968974
*/
969-
ServerNode.prototype.loadConfFile = function(file, cb) {
975+
ServerNode.prototype.loadConfFile = function(file, cb, log = true) {
970976
if ('string' !== typeof file) {
971977
throw new TypeError('ServerNode.loadConfFile: file must be string.' +
972978
'Found: ' + file);
@@ -994,7 +1000,8 @@ ServerNode.prototype.loadConfFile = function(file, cb) {
9941000
// care of passing the right parameters to it.
9951001
cb.call(this, conf);
9961002

997-
this.logger.debug('ServerNode.loadConfFile: loaded ' + file)
1003+
// The first time it is called, this.logger is not yet set.
1004+
if (log) this.logger.debug('ServerNode.loadConfFile: loaded ' + file);
9981005
};
9991006

10001007
/**

0 commit comments

Comments
 (0)