export enum LogLevel { INFO = 1, WARNING = 2, ERROR = 3, DEBUG = 4 } export class Logger { /** * Log a message to the console * @param message {string} * @param category {string} * @param level {LogLevel} */ static logMessage(message: string, category: string = "App", level: LogLevel = LogLevel.INFO) { console.log(`[${this.logLevelToString(level)}] [${category}] ${message}`); } /** * Log a message to the console with additional data * @param message {string} * @param data {any} * @param category {string} * @param level {LogLevel} */ static logDebug(message: string, data: any, category: string = "App", level: LogLevel = LogLevel.INFO) { this.logMessage(message, category, level); console.log(data); console.log("--------------------------------------------------"); } /** * Get the string representation of a log level * @param level {LogLevel} The log level to convert to a string * @returns The string representation of the log level */ static logLevelToString(level: LogLevel): string { switch (level) { case LogLevel.INFO: return "INFO"; case LogLevel.WARNING: return "WARNING"; case LogLevel.ERROR: return "ERROR"; case LogLevel.DEBUG: return "DEBUG"; default: return "UNKNOWN"; } } }