From 52e8ab45ed69077c2224b6cbaf9959d285558ac2 Mon Sep 17 00:00:00 2001 From: Sam Stenvall Date: Thu, 8 Aug 2024 12:06:33 +0300 Subject: [PATCH] Add -v flag to enable debug logging --- src/eachwatt.ts | 10 +++++++++- src/logger.ts | 14 ++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/eachwatt.ts b/src/eachwatt.ts index cd080b0..02d1610 100644 --- a/src/eachwatt.ts +++ b/src/eachwatt.ts @@ -8,7 +8,7 @@ import { httpRequestHandler } from './http/server' import { WebSocketPublisherImpl } from './publisher/websocket' import { PublisherType } from './publisher' import { pollCharacteristicsSensors } from './characteristics' -import { createLogger } from './logger' +import { createLogger, LogLevel, setLogLevel } from './logger' import { setRequestTimeout as setHttpRequestTimeout } from './http/client' import { setRequestTimeout as setModbusRequestTimeout } from './modbus/client' import { applyFilters } from './filter/filter' @@ -26,10 +26,18 @@ const argv = yargs(process.argv.slice(2)) demandOption: true, alias: 'c', }, + 'verbose': { + description: 'Enable verbose logging', + alias: 'v', + }, }) .parseSync() const logger = createLogger('main') +if (argv.verbose) { + logger.info('Setting log level to DEBUG') + setLogLevel(LogLevel.DEBUG) +} const mainPollerFunc = async (config: Config) => { const now = Date.now() diff --git a/src/logger.ts b/src/logger.ts index 7c6e757..4979004 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -1,6 +1,9 @@ import winston, { Logger } from 'winston' -const DEFAULT_LOG_LEVEL = 'info' +export enum LogLevel { + INFO = 'info', + DEBUG = 'debug', +} // Define log transports here, so we can change the log level later const transports = [new winston.transports.Console()] @@ -9,14 +12,13 @@ const logFormat = winston.format.printf(({ level, message, label, timestamp }) = return `${timestamp} [${label}] ${level}: ${message}` }) -// export const setLogLevel = (logger: Logger, level: string) => { -// logger.info(`Setting log level to ${level}`) -// transports[0].level = level -// } +export const setLogLevel = (level: LogLevel) => { + transports[0].level = level +} export const createLogger = (module: string): Logger => { return winston.createLogger({ - 'level': DEFAULT_LOG_LEVEL, + 'level': LogLevel.INFO, 'format': winston.format.combine(winston.format.label({ label: module }), winston.format.timestamp(), logFormat), 'transports': transports, })