andrew-dataverse-mcp
Version:
A Model Context Protocol server for Microsoft Dataverse with comprehensive CRUD operations
58 lines (57 loc) • 1.89 kB
JavaScript
import { getConfig } from '../config/environment.js';
export var LogLevel;
(function (LogLevel) {
LogLevel[LogLevel["ERROR"] = 0] = "ERROR";
LogLevel[LogLevel["WARN"] = 1] = "WARN";
LogLevel[LogLevel["INFO"] = 2] = "INFO";
LogLevel[LogLevel["DEBUG"] = 3] = "DEBUG";
})(LogLevel || (LogLevel = {}));
const logLevelMap = {
error: LogLevel.ERROR,
warn: LogLevel.WARN,
info: LogLevel.INFO,
debug: LogLevel.DEBUG,
};
function getCurrentLogLevel() {
// Check environment variable first (for tests), then fall back to config
const envLogLevel = process.env.LOG_LEVEL?.toLowerCase();
if (envLogLevel && logLevelMap[envLogLevel] !== undefined) {
return logLevelMap[envLogLevel];
}
try {
const config = getConfig();
return logLevelMap[config.logging.level.toLowerCase()] ?? LogLevel.INFO;
}
catch (error) {
// If config is not initialized yet, default to INFO level
return LogLevel.INFO;
}
}
export class Logger {
context;
constructor(context) {
this.context = context;
}
log(level, message, ...args) {
const currentLogLevel = getCurrentLogLevel();
if (level <= currentLogLevel) {
const timestamp = new Date().toISOString();
const levelName = LogLevel[level];
console.error(`[${timestamp}] [${levelName}] [${this.context}] ${message}`, ...args);
}
}
error(message, ...args) {
this.log(LogLevel.ERROR, message, ...args);
}
warn(message, ...args) {
this.log(LogLevel.WARN, message, ...args);
}
info(message, ...args) {
this.log(LogLevel.INFO, message, ...args);
}
debug(message, ...args) {
this.log(LogLevel.DEBUG, message, ...args);
}
}
// Create logger instances for different contexts
export const createLogger = (context) => new Logger(context);