Files
Azornes-Comfyui-Model-Resolver/web/log_system/LoggerUtils.js
T
Dariusz L a288b26b66 refactor(logging): AzLogs v1.4.1 with dynamic storage and utilities
Enhance logging system with configurable module names and dynamic
localStorage keys to avoid conflicts between multiple plugin instances.

- Add LOG_MODULE_NAME and DEFAULT_LOGGER_NAME to web/log_system/config.js
- Update logger.js to use dynamic storage keys based on module name
- Change window property from ResolutionMasterLogger to dynamic key
- Add PyDoc metadata to core/log_system/config.py
- Add JSDoc metadata blocks to all web log_system files

Reorganize web utilities:
- Move css-loader.js from web/ to web/utils/
- Add ErrorHandler.js for centralized error handling
- Add ResourceManager.js for stylesheet and template loading

 rename: web/css-loader.js => web/utils/css-loader.js
2026-05-11 02:41:30 +02:00

81 lines
2.7 KiB
JavaScript

/**
@author: Azornes
@title: AzLogs
@version: 1.4.1
@description: Logging Initializator
*/
/**
* LoggerUtils - Centralization of logger initialization
* Eliminates repetitive logger initialization code in each module
*/
import { logger, LogLevel } from "./logger.js";
import { LOG_LEVEL } from './config.js';
/**
* Creates a logger object for a module with predefined methods
* @param {string} moduleName - Module name
* @returns {Logger} Object with logging methods
*/
export function createModuleLogger(moduleName) {
logger.setModuleLevel(moduleName, LogLevel[LOG_LEVEL]);
return {
debug: (...args) => logger.debug(moduleName, ...args),
info: (...args) => logger.info(moduleName, ...args),
warn: (...args) => logger.warn(moduleName, ...args),
error: (...args) => logger.error(moduleName, ...args)
};
}
/**
* Creates a logger with automatic module name detection from URL
* @returns {Logger} Object with logging methods
*/
export function createAutoLogger() {
const stack = new Error().stack;
const match = stack?.match(/\/([^\/]+)\.js/);
const moduleName = match ? match[1] : 'Unknown';
return createModuleLogger(moduleName);
}
/**
* Wrapper for operations with automatic error logging
* @param {Function} operation - Operation to execute
* @param {Logger} log - Logger object
* @param {string} operationName - Operation name (for logs)
* @returns {Function} Wrapped function
*/
export function withErrorLogging(operation, log, operationName) {
return async function (...args) {
try {
log.debug(`Starting ${operationName}`);
const result = await operation.apply(this, args);
log.debug(`Completed ${operationName}`);
return result;
}
catch (error) {
log.error(`Error in ${operationName}:`, error);
throw error;
}
};
}
/**
* Decorator for class methods with automatic logging
* @param {Logger} log - Logger object
* @param {string} methodName - Method name
*/
export function logMethod(log, methodName) {
return function (target, propertyKey, descriptor) {
const originalMethod = descriptor.value;
descriptor.value = async function (...args) {
try {
log.debug(`${methodName || propertyKey} started`);
const result = await originalMethod.apply(this, args);
log.debug(`${methodName || propertyKey} completed`);
return result;
}
catch (error) {
log.error(`${methodName || propertyKey} failed:`, error);
throw error;
}
};
return descriptor;
};
}