From 715600a51430a7548f4398eb73e4e9b6f965b78d Mon Sep 17 00:00:00 2001 From: Carlos Valente Date: Sat, 8 Jun 2024 22:58:06 +0200 Subject: [PATCH] refactor: improve console visibility --- apps/server/src/app.ts | 22 +++++++++++++--------- apps/server/src/classes/Logger.ts | 11 ++++++++--- apps/server/src/utils/console.ts | 15 +++++++++++++++ 3 files changed, 36 insertions(+), 12 deletions(-) create mode 100644 apps/server/src/utils/console.ts diff --git a/apps/server/src/app.ts b/apps/server/src/app.ts index eb6c2c589..71497058d 100644 --- a/apps/server/src/app.ts +++ b/apps/server/src/app.ts @@ -20,6 +20,7 @@ import { clearUploadfolder, } from './setup/index.js'; import { ONTIME_VERSION } from './ONTIME_VERSION.js'; +import { consoleGreen } from './utils/console.js'; // Import Routers import { appRouter } from './api-data/index.js'; @@ -44,6 +45,7 @@ import { populateDemo } from './setup/loadDemo.js'; import { getState } from './stores/runtimeState.js'; import { initRundown } from './services/rundown-service/RundownService.js'; import { generateCrashReport } from './utils/generateCrashReport.js'; +import { getNetworkInterfaces } from './utils/networkInterfaces.js'; console.log(`Starting Ontime version ${ONTIME_VERSION}`); @@ -158,11 +160,8 @@ export const startServer = async () => { const { serverPort } = DataProvider.getSettings(); - const returnMessage = `Ontime is listening on port ${serverPort}`; - expressServer = http.createServer(app); socket.init(expressServer); - logger.info(LogOrigin.Server, returnMessage); /** * Module initialises the services and provides initial payload for the store @@ -200,7 +199,15 @@ export const startServer = async () => { // eventStore set is a dependency of the services that publish to it messageService.init(eventStore.set.bind(eventStore)); - expressServer.listen(serverPort, '0.0.0.0'); + expressServer.listen(serverPort, '0.0.0.0', () => { + const nif = getNetworkInterfaces(); + for (const key of Object.keys(nif)) { + consoleGreen(`Ontime running on: http://${nif[key].address}:${serverPort}`); + } + }); + + const returnMessage = `Ontime is listening on port ${serverPort}`; + logger.info(LogOrigin.Server, returnMessage); return { message: returnMessage, serverPort }; }; @@ -251,7 +258,6 @@ export const shutdown = async (exitCode = 0) => { await restoreService.clear(); } - // TODO: Clear token expressServer?.close(); runtimeService.shutdown(); integrationService.shutdown(); @@ -263,16 +269,14 @@ export const shutdown = async (exitCode = 0) => { process.on('exit', (code) => console.log(`Ontime shutdown with code: ${code}`)); process.on('unhandledRejection', async (error) => { - console.error('Error: unhandled rejection', error); generateCrashReport(error); - logger.error(LogOrigin.Server, `Error: unhandled rejection ${error}`); + logger.error(LogOrigin.Server, `Uncaught exception | ${error}`); await shutdown(1); }); process.on('uncaughtException', async (error) => { - console.error('Error: uncaught exception', error); generateCrashReport(error); - logger.error(LogOrigin.Server, `Error: uncaught exception ${error}`); + logger.error(LogOrigin.Server, `Uncaught exception | ${error}`); await shutdown(1); }); diff --git a/apps/server/src/classes/Logger.ts b/apps/server/src/classes/Logger.ts index 200f42986..a42acb38e 100644 --- a/apps/server/src/classes/Logger.ts +++ b/apps/server/src/classes/Logger.ts @@ -4,6 +4,7 @@ import { generateId, millisToString } from 'ontime-utils'; import { clock } from '../services/Clock.js'; import { isProduction } from '../setup/index.js'; import { socket } from '../adapters/WebsocketAdapter.js'; +import { consoleRed } from '../utils/console.js'; class Logger { private queue: Log[]; @@ -34,8 +35,13 @@ class Logger { * @param log */ private _push(log: Log) { - if (!isProduction) { - console.log(`[${log.level}] \t ${log.origin} \t ${log.text}`); + if (!isProduction || log.level === LogLevel.Error) { + if (log.level === LogLevel.Error) { + consoleRed(`[${log.level}] \t ${log.origin} \t ${log.text}`); + } else { + // eslint-disable-next-line no-console + console.log(`[${log.level}] \t ${log.origin} \t ${log.text}`); + } } try { @@ -96,7 +102,6 @@ class Logger { * Shutdown logger */ shutdown() { - console.log('Shutting down logger'); this.queue = []; } } diff --git a/apps/server/src/utils/console.ts b/apps/server/src/utils/console.ts new file mode 100644 index 000000000..be1f3a6f2 --- /dev/null +++ b/apps/server/src/utils/console.ts @@ -0,0 +1,15 @@ +/* eslint-disable no-console */ + +/** + * Utility function to log messages in green + */ +export function consoleGreen(message: string) { + console.log(`\x1b[32m${message}\x1b[0m`); +} + +/** + * Utility function to log messages in red + */ +export function consoleRed(message: string) { + console.error(`\x1b[31m${message}\x1b[0m`); +}