From ce5f5380e180a484392a37cb6360327df429d203 Mon Sep 17 00:00:00 2001 From: Asraelite Date: Mon, 28 Mar 2016 11:13:19 +0100 Subject: [PATCH] improve logging --- server/index.js | 9 ++++++--- server/interface.js | 49 +++++++++++++++++++++++++++------------------ 2 files changed, 36 insertions(+), 22 deletions(-) diff --git a/server/index.js b/server/index.js index a8acb19..9a6eaa1 100644 --- a/server/index.js +++ b/server/index.js @@ -9,6 +9,8 @@ const packageJson = require('../package.json'); class WingbaseServer extends ServerInterface { constructor() { super(); + + process.on('SIGINT', this.stop.bind(this)); } start() { @@ -18,12 +20,13 @@ class WingbaseServer extends ServerInterface { this.webServer.start(); this.gameServer.start(); - this.log(`Wingbase version ${packageJson.version} running.`); + this.log(`Wingbase version ${packageJson.version} running.`, 'bold'); } stop() { - this.log('Server stopping.'); - process.exit(); + this.log('Server stopping.', 'bold'); + this.capLogfile(); + setTimeout(process.exit, 100); } } diff --git a/server/interface.js b/server/interface.js index 0805174..d39df48 100644 --- a/server/interface.js +++ b/server/interface.js @@ -2,6 +2,13 @@ const fs = require('fs'); +const pad = (str, len, right) => { + str = '' + str; + return (right ? str : '') + + Array(len > str.length ? 1 + len - str.length : 0) + .join('0') + (right ? '' : str); +}; + require('colors'); class ServerInterface { @@ -10,30 +17,13 @@ class ServerInterface { } log(msg) { - let pad = (str, len, right) => { - str = '' + str; - return (right ? str : '') + - Array(len > str.length ? 1 + len - str.length : 0) - .join('0') + (right ? '' : str); - } - - let d = new Date(); - let timestamp = - `<${pad(d.getUTCHours(), 2)}:` + - `${pad(d.getUTCMinutes(), 2)}:` + - `${pad(d.getUTCSeconds(), 2)}.` + - `${pad(('' + d.getUTCMilliseconds()).slice(0, 2), 2, true)}> `; + let timestamp = this.timestamp; let output = msg; Array.from(arguments).splice(1).forEach(a => output = output[a]); output = timestamp.gray + output; // Clear and go to start of line. console.log('\x1b[2K\x1b[999D' + output); - - let date = - `${pad(d.getUTCFullYear(), 2)}-` + - `${pad(d.getUTCMonth(), 2)}-` + - `${pad(d.getUTCDate(), 2)}`; - fs.appendFile('log/' + date + '.log', timestamp + msg + '\n'); + fs.appendFile(this.logfile, timestamp + msg + '\n'); } debug(msg) { @@ -43,6 +33,27 @@ class ServerInterface { error(msg) { this.log(msg, 'red'); } + + capLogfile() { + fs.appendFile(this.logfile, '-----------\n'); + } + + get timestamp() { + let d = new Date(); + return `<${pad(d.getUTCHours(), 2)}:` + + `${pad(d.getUTCMinutes(), 2)}:` + + `${pad(d.getUTCSeconds(), 2)}.` + + `${pad(('' + d.getUTCMilliseconds()).slice(0, 2), 2, true)}> `; + } + + get logfile() { + let d = new Date(); + let date = + `${pad(d.getUTCFullYear(), 2)}-` + + `${pad(d.getUTCMonth(), 2)}-` + + `${pad(d.getUTCDate(), 2)}`; + return 'log/' + date + '.log'; + } } module.exports = ServerInterface;