digitaltwin-core
Version:
Minimalist framework to collect and handle data in a Digital Twin project
92 lines • 3.15 kB
JavaScript
/**
* Enumeration of available logging levels.
*
* Levels are ordered by severity, with lower numbers being more verbose.
*
* @enum {number}
*/
export var LogLevel;
(function (LogLevel) {
/** Debug messages - most verbose, includes internal state information */
LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
/** Informational messages - general application flow */
LogLevel[LogLevel["INFO"] = 1] = "INFO";
/** Warning messages - potential issues that don't prevent operation */
LogLevel[LogLevel["WARN"] = 2] = "WARN";
/** Error messages - failures that affect functionality */
LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
/** Silent mode - no logging output */
LogLevel[LogLevel["SILENT"] = 4] = "SILENT";
})(LogLevel || (LogLevel = {}));
/**
* Simple logger class for Digital Twin framework components.
*
* Provides structured logging with component identification and configurable levels.
* Automatically adjusts log level based on environment (silent in tests).
*
* @class Logger
*
* @example
* ```typescript
* const logger = new Logger('MyCollector', LogLevel.DEBUG)
* logger.info('Starting data collection')
* logger.error('Failed to connect', error)
* ```
*/
export class Logger {
/**
* Creates a new logger instance for a component.
*
* @param {string} componentName - Name of the component for log prefixing
* @param {LogLevel} level - Minimum log level to output (defaults based on NODE_ENV)
*/
constructor(componentName, level = process.env.NODE_ENV === 'test' ? LogLevel.ERROR : LogLevel.INFO) {
this.componentName = componentName;
this.level = level;
}
/**
* Logs debug information for development and troubleshooting.
*
* @param {string} message - Debug message
* @param {any} data - Optional additional data to log
*/
debug(message, data) {
if (this.level <= LogLevel.DEBUG) {
console.log(`[${this.componentName}] DEBUG: ${message}`, data || '');
}
}
/**
* Logs informational messages about normal operation.
*
* @param {string} message - Information message
* @param {any} data - Optional additional data to log
*/
info(message, data) {
if (this.level <= LogLevel.INFO) {
console.log(`[${this.componentName}] ${message}`, data || '');
}
}
/**
* Logs warning messages about potential issues.
*
* @param {string} message - Warning message
* @param {any} data - Optional additional data to log
*/
warn(message, data) {
if (this.level <= LogLevel.WARN) {
console.warn(`[${this.componentName}] WARN: ${message}`, data || '');
}
}
/**
* Logs error messages about failures and exceptions.
*
* @param {string} message - Error message
* @param {any} error - Optional error object or additional data
*/
error(message, error) {
if (this.level <= LogLevel.ERROR) {
console.error(`[${this.componentName}] ERROR: ${message}`, error || '');
}
}
}
//# sourceMappingURL=logger.js.map