cleanifix
Version:
Intelligent data cleaning CLI with natural language support - Docker-powered Python engine
81 lines • 3.15 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.logDebug = exports.logInfo = exports.logWarning = exports.logSuccess = exports.logError = exports.logger = void 0;
const winston_1 = __importDefault(require("winston"));
const chalk_1 = __importDefault(require("chalk"));
const logLevel = process.env.LOG_LEVEL || 'info';
// Custom format for console output
const consoleFormat = winston_1.default.format.printf(({ level, message, timestamp, ...metadata }) => {
let coloredLevel = level;
switch (level) {
case 'error':
coloredLevel = chalk_1.default.red(level.toUpperCase());
break;
case 'warn':
coloredLevel = chalk_1.default.yellow(level.toUpperCase());
break;
case 'info':
coloredLevel = chalk_1.default.blue(level.toUpperCase());
break;
case 'debug':
coloredLevel = chalk_1.default.gray(level.toUpperCase());
break;
default:
coloredLevel = level.toUpperCase();
}
const metaString = Object.keys(metadata).length ?
'\n' + JSON.stringify(metadata, null, 2) : '';
return `[${coloredLevel}] ${message}${metaString}`;
});
// Create the logger
exports.logger = winston_1.default.createLogger({
level: logLevel,
format: winston_1.default.format.combine(winston_1.default.format.timestamp(), winston_1.default.format.errors({ stack: true }), winston_1.default.format.splat(), winston_1.default.format.json()),
transports: [
// Console transport
new winston_1.default.transports.Console({
format: winston_1.default.format.combine(winston_1.default.format.colorize(), consoleFormat)
})
]
});
// Add file transport in production
if (process.env.NODE_ENV === 'production') {
exports.logger.add(new winston_1.default.transports.File({
filename: 'error.log',
level: 'error',
format: winston_1.default.format.json()
}));
exports.logger.add(new winston_1.default.transports.File({
filename: 'combined.log',
format: winston_1.default.format.json()
}));
}
// Convenience methods
const logError = (message, error) => {
exports.logger.error(message, { error: error?.message, stack: error?.stack });
};
exports.logError = logError;
const logSuccess = (message) => {
exports.logger.info(chalk_1.default.green('✓ ' + message));
};
exports.logSuccess = logSuccess;
const logWarning = (message) => {
exports.logger.warn(chalk_1.default.yellow('⚠ ' + message));
};
exports.logWarning = logWarning;
const logInfo = (message) => {
exports.logger.info(message);
};
exports.logInfo = logInfo;
const logDebug = (message, data) => {
exports.logger.debug(message, data);
};
exports.logDebug = logDebug;
// Add success method to logger for convenience
exports.logger.success = (message) => {
exports.logger.info(chalk_1.default.green('✓ ' + message));
};
//# sourceMappingURL=logger.js.map