diff --git a/client/main.js b/client/main.js index 24048160922e65d0abe138e35f6394383dd4f208..2d1d9db1973ba58428dff9bcb281f47c9d1ad94a 100644 --- a/client/main.js +++ b/client/main.js @@ -4,7 +4,7 @@ const port = 3000; function launcher() { const app = express(); - logger.debug(`Express started on localhost:${port}`); + logger.debug('express', `Express started on localhost:${port}`); var publicRouter = require('./routes/public.js'); @@ -14,7 +14,7 @@ function launcher() { app.use('/', publicRouter); app.listen(port, () => { - logger.info(`Express listening on port ${port}`); + logger.info('express', `Express listening on port ${port}`); }); } diff --git a/common/db.js b/common/db.js index c0a666547df546f283f3b9c2ff03f47862836c2d..03a4026bb23837127037ed63a2b362046e862d03 100644 --- a/common/db.js +++ b/common/db.js @@ -46,13 +46,13 @@ class KaraDatabase { constructor(karaPath) { this.m_karaPath = karaPath; this.m_db = new sqlite3.Database(this.m_karaPath); - logger.log('info', 'Create database from file ' + karaPath); + logger.info('db', 'Create database from file ' + karaPath); } /* Call this as a destructor */ close() { this.m_db.close(); - logger.log('info', `Close database ${this.m_karaPath}`); + logger.info('db', `Close database ${this.m_karaPath}`); } /* Search from the kara table, a string. Can be anything (query, name, @@ -76,7 +76,7 @@ class KaraDatabase { [`%${queryString}%`, queryString], (err, rows) => { if (err) { - logger.error(err); + logger.error('db', err); throw err; } rows.forEach(row => { @@ -107,7 +107,7 @@ class KaraDatabase { return new Promise(resolv => { db.all(__sqlQuery, [], (err, rows) => { if (err) { - logger.error(err); + logger.error('db', err); throw err; } rows.forEach(row => { @@ -147,7 +147,7 @@ class KaraDatabase { return new Promise(resolv => { db.all(__sqlQuery, [], (err, rows) => { if (err) { - logger.error(err); + logger.error('db', err); throw err; } rows.forEach(row => { diff --git a/common/lkt.js b/common/lkt.js index c62ac0d55d97b5f5f7a101c0aa2eba4c9c2701a4..9b3dd4e99af48d86ecab37e77313383c2fa024a9 100644 --- a/common/lkt.js +++ b/common/lkt.js @@ -27,28 +27,35 @@ class LktClient { writable: true, }; - logger.debug('Creating the lektor client'); + logger.debug('lkt', 'Creating the lektor client'); this.m_socket.setTimeout(3000); this.m_socket.setEncoding('utf8'); this.m_socket.on('timeout', () => { logger.error( + 'lkt', `Got timeout while connecting to localhost:${this.m_port}` ); this.m_socket.end(); }); this.m_socket.on('ready', () => { - logger.debug(`Ready to use socker with localhost:${this.m_port}`); + logger.debug( + 'lkt', + `Ready to use socker with localhost:${this.m_port}` + ); this.m_online = true; }); this.m_socket.on('end', () => { - logger.info(`Disconnected from server localhost:${this.m_port}`); + logger.info( + 'lkt', + `Disconnected from server localhost:${this.m_port}` + ); this.m_online = false; }); this.m_socket.on('error', err => { - logger.error(`${err}`); + logger.error('lkt', `${err}`); if (this.m_online) { this.m_socket.destroy(); this.m_online = false; @@ -56,12 +63,12 @@ class LktClient { }); this.m_socket.on('close', () => { - logger.info(`Socket localhost:${this.m_port} closed`); + logger.info('lkt', `Socket localhost:${this.m_port} closed`); this.m_online = false; }); this.m_socket.connect(sockopt, () => { - logger.info(`Socket connected to localhost:${this.m_port}`); + logger.info('lkt', `Socket connected to localhost:${this.m_port}`); this.m_online = true; }); @@ -72,10 +79,10 @@ class LktClient { * Note: Prefere using the static methods. */ close() { if (this.m_online) { - logger.debug('Requesting socket shutdown'); + logger.debug('lkt', 'Requesting socket shutdown'); this.m_socket.destroy(); } else { - logger.debug('Socket already closed'); + logger.debug('lkt', 'Socket already closed'); } this.m_closed = true; } diff --git a/common/logger.js b/common/logger.js index 995a80717855bdf7ddd642d78b58a6449830e3cb..29a747676f1022f00291c433e5eb94401d206772 100644 --- a/common/logger.js +++ b/common/logger.js @@ -18,7 +18,6 @@ const __loggerCustomLevels = { levels: { debug: 3, info: 2, - warn: 1, warning: 1, error: 0, }, @@ -31,7 +30,7 @@ const __loggerCustomLevels = { }, }; -var logger = winston.createLogger({ +var __logger = winston.createLogger({ transports: [ new winston.transports.File({ eol: '\n', @@ -55,6 +54,23 @@ var logger = winston.createLogger({ ), }); -Object.assign(logger, { logfile: './lektor-app.log' }); +var logger = { + logfile: './lektor-app.log', + debug: (cat, lg) => { + __logger.debug(`${cat.padEnd(10)} | ${lg}`); + }, + info: (cat, lg) => { + __logger.info(`${cat.padEnd(10)} | ${lg}`); + }, + warn: (cat, lg) => { + __logger.warning(`${cat.padEnd(10)} | ${lg}`); + }, + warning: (cat, lg) => { + __logger.warning(`${cat.padEnd(10)} | ${lg}`); + }, + error: (cat, lg) => { + __logger.error(`${cat.padEnd(10)} | ${lg}`); + }, +}; module.exports = global.logger = module.exports = logger; diff --git a/instance/main.js b/instance/main.js index c70b2e1c487d24d908a0b75f32fc7c874fe7e6fe..38d8b0c61a4fc6c5aecf47a0f6b4298a9d05151a 100644 --- a/instance/main.js +++ b/instance/main.js @@ -46,13 +46,14 @@ window.onload = () => { addIpcToButton('reloadQueue', ['reload-queue-request']); addIpcToButton('reloadDb', ['reload-db-request', 'reload-queue-request']); - logger.debug('Window loaded'); + logger.debug('instance', 'Window loaded'); }; /* Create the button list */ function createButtonList(list) { function action(ipc, argument) { logger.error( + 'instance', 'The action function builder for control buttons is not implemented' ); } @@ -65,6 +66,7 @@ function createButtonList(list) { <button id="${btn[2]}" type="button" class="btn btn-primary p-2 bd-highlight" data-toggle="tooltip" data-placement="bottom" title="${btn[3]}">${btn[1]}</button>`; logger.debug( + 'instance', `Create button for "${btn[1]}" with id "${btn[2]} at the left"` ); } else if (btn[0] == 'right') { @@ -72,6 +74,7 @@ function createButtonList(list) { <button id="${btn[2]}" type="button" class="btn btn-secondary p-2 bd-highlight" data-toggle="tooltip" data-placement="bottom" title="${btn[3]}">${btn[1]}</button>`; logger.debug( + 'instance', `Create button for "${btn[1]}" with id "${btn[2]} at the right"` ); } else if (btn[0] == 'sleft') { @@ -79,26 +82,29 @@ function createButtonList(list) { <button id="${btn[2]}" type="button" class="btn btn-secondary p-2 bd-highlight" data-toggle="tooltip" data-placement="bottom" title="${btn[3]}">${btn[1]}</button>`; logger.debug( + 'instance', `Create button for "${btn[1]}" with id "${btn[2]} at the right"` ); } else { - logger.warn(`Unknown button type ${btn[0]} in top bar builder`); + logger.warn( + 'instance', + `Unknown button type ${btn[0]} in top bar builder` + ); } }); - document.getElementById( - 'buttonPanelListLeft' - ).innerHTML = `${renderHtmlLeft}${renderHtmlSLeft} - <div class="p-1 bd-highlight mb-1 w-75 mr-auto ml-auto"> - <input id="filterInput" type="text" class="form-control filterInput" - placeholder="Filter..."> - </div> - ${renderHtmlRight}`; + document.getElementById('buttonPanelListLeft').innerHTML = ` + <div class="btn-group" role="group">${renderHtmlLeft}</div> + <div class="btn-group" role="group">${renderHtmlSLeft}</div> + <div class="p-1 bd-highlight mb-1 mr-auto ml-auto" style="width: 60%;"> + <input id="filterInput" type="text" class="form-control filterInput" placeholder="Filter..."> + </div> + <div class="btn-group" role="group">${renderHtmlRight}</div>`; } /* Create the left panel */ ipcRenderer.on('reload-db-responce', (event, arg) => { var karaList = ''; - logger.debug(`Web page got reload-db`); + logger.debug('instance', `Web page got reload-db`); arg.forEach(kara => { karaList += `<li class="card p-2 bd-highlight shadow-none d-flex flex-row bd-highlight mb-3 karaCard"> <span class="karaElement text-uppercase p-2 bd-highlight badge badge-light"><b>${kara.language}</b></span> @@ -119,7 +125,7 @@ ipcRenderer.on('reload-db-responce', (event, arg) => { /* Create the right panel: the queue */ ipcRenderer.on('reload-queue-responce', (event, arg) => { var karaList = ''; - logger.debug(`Web page got reload-queue`); + logger.debug('instance', `Web page got reload-queue`); arg.forEach(kara => { karaList += `<li class="card p-2 bd-highlight shadow-none d-flex flex-row bd-highlight mb-3 karaCard"> <span class="karaElement text-uppercase p-2 bd-highlight badge badge-light"><b>${kara.language}</b></span> diff --git a/main.js b/main.js index 895eb3b9e2779446157a61adc3396315839ab3cc..84439502169ca8b46c5544105ba0f1bbd03594ba 100644 --- a/main.js +++ b/main.js @@ -51,7 +51,10 @@ ipcMain.on('close-app', (evt, arg) => { }); app.on('quit', () => { - logger.info('Send SIGTERM to express process, lektord and tailler process'); + logger.info( + 'main', + 'Send SIGTERM to express process, lektord and tailler process' + ); client.kill('SIGTERM'); if (!lektor_closed) { lektor.kill('SIGTERM'); @@ -63,7 +66,7 @@ app.on('quit', () => { *********************************/ app.on('ready', () => { - logger.info('Main window is ready'); + logger.info('main', 'Main window is ready'); createInstanceWindow(); client = fork('client/main.js'); lektor = spawn('lektord', ['-F']); @@ -73,7 +76,7 @@ app.on('ready', () => { if (win === null) { return; } - logger.info('Reloading DB'); + logger.info('main', 'Reloading DB'); let contents = win.webContents; myDb.all().then(karas => { contents.send('reload-db-responce', karas); @@ -95,25 +98,37 @@ app.on('ready', () => { if (!line) return; switch (line[0]) { case '*': - logger.warn(line.replace(/^\* (.*)$/g, '$1')); + logger.warn( + 'lektord', + line.replace(/^\* (.*)$/g, '$1') + ); break; case '!': - logger.error(line.replace(/^! (.*)$/g, '$1')); + logger.error( + 'lektord', + line.replace(/^! (.*)$/g, '$1') + ); break; case '.': if (line.length >= 2 && line[1] != '.') { - logger.info(line.replace(/^\. (.*)$/g, '$1')); + logger.info( + 'lektord', + line.replace(/^\. (.*)$/g, '$1') + ); break; } /* Fallthrough case */ default: - logger.debug(line.replace(/^\.\.\. (.*)$/g, '\t$1')); + logger.debug( + 'lektord', + line.replace(/^\.\.\. (.*)$/g, '\t$1') + ); break; } }); }); lektor.on('close', code => { - logger.warn(`Lektor exited with code ${code}`); + logger.warn('main', `Lektor exited with code ${code}`); lektor_closed = true; app.quit(); }); @@ -125,29 +140,29 @@ app.on('ready', () => { ipcMain.on('cmd-play', (event, arg) => { lkt.commandPlay().then(arg => { - logger.debug('Returned from cmd-play'); + logger.debug('main', 'Returned from cmd-play'); }); }); ipcMain.on('cmd-stop', (event, arg) => { lkt.commandStop().then(arg => { - logger.debug('Returned from cmd-stop'); + logger.debug('main', 'Returned from cmd-stop'); }); }); ipcMain.on('cmd-clear', (event, arg) => { lkt.commandClear().then(arg => { - logger.debug('Cleared queue with cmd-clear'); + logger.debug('main', 'Cleared queue with cmd-clear'); }); }); /* Fill the pannel with the content of the DB. * The `arg` is the HTML object of the pannel */ ipcMain.on('reload-db-request', (event, arg) => { - logger.info('Reloading the DB content'); + logger.info('main', 'Reloading the DB content'); var callback = karas => { event.reply('reload-db-responce', karas); }; if (arg) { - logger.debug(`Reload DB with search '${arg}'`); + logger.debug('main', `Reload DB with search '${arg}'`); myDb.search(arg).then(callback); } else { myDb.all().then(callback); @@ -156,7 +171,7 @@ ipcMain.on('reload-db-request', (event, arg) => { /* Send the queue to the webpage when asked to */ ipcMain.on('reload-queue-request', (event, arg) => { - logger.info('Reloading next karas in queue'); + logger.info('main', 'Reloading next karas in queue'); myDb.queue(0, 100).then(karas => { event.reply('reload-queue-responce', karas); }); diff --git a/test/test_db.js b/test/test_db.js index ba3fad0a1290216ec30266cc0b99f888d3f96976..36094fa67c790738100a9a3a851ae052ae052a41 100644 --- a/test/test_db.js +++ b/test/test_db.js @@ -3,5 +3,5 @@ const KaraDatabase = require.main.require('./common/db.js'); var myDb = new KaraDatabase("/home/kara/kara.db"); -myDb.search(`kubat`).then( val => logger.log("debug", val) ) +myDb.search(`kubat`).then( val => logger.debug("test", val) ) myDb.close()