Tradovate MCP Server
by alexanimal
Verified
import fs from 'fs';
import path from 'path';
// Get directory name using process.cwd() instead of import.meta.url
const LOG_DIR = path.join(process.cwd(), 'logs');
// Log file path
const LOG_FILE = path.join(LOG_DIR, 'server.log');
// Ensure logs directory exists
try {
fs.mkdirSync(LOG_DIR, { recursive: true });
} catch (err) {
// Directory already exists, ignore
}
// Log levels
export enum LogLevel {
DEBUG = 'DEBUG',
INFO = 'INFO',
WARN = 'WARN',
ERROR = 'ERROR'
}
// Current log level
let currentLogLevel: LogLevel = LogLevel.INFO;
// Set log level
export function setLogLevel(level: LogLevel): void {
currentLogLevel = level;
}
// Log message to file
function logToFile(level: LogLevel, message: string): void {
const timestamp = new Date().toISOString();
const logEntry = `[${timestamp}] [${level}] ${message}\n`;
fs.appendFileSync(LOG_FILE, logEntry);
}
// Logger functions
export function debug(message: string, ...args: any[]): void {
if (currentLogLevel === LogLevel.DEBUG) {
const formattedMessage = args.length ? `${message} ${args.map(arg => JSON.stringify(arg)).join(' ')}` : message;
logToFile(LogLevel.DEBUG, formattedMessage);
}
}
export function info(message: string, ...args: any[]): void {
if (currentLogLevel === LogLevel.DEBUG || currentLogLevel === LogLevel.INFO) {
const formattedMessage = args.length ? `${message} ${args.map(arg => JSON.stringify(arg)).join(' ')}` : message;
logToFile(LogLevel.INFO, formattedMessage);
}
}
export function warn(message: string, ...args: any[]): void {
if (currentLogLevel !== LogLevel.ERROR) {
const formattedMessage = args.length ? `${message} ${args.map(arg => JSON.stringify(arg)).join(' ')}` : message;
logToFile(LogLevel.WARN, formattedMessage);
}
}
export function error(message: string, ...args: any[]): void {
const formattedMessage = args.length ? `${message} ${args.map(arg => JSON.stringify(arg)).join(' ')}` : message;
logToFile(LogLevel.ERROR, formattedMessage);
}
// Console logger for critical startup messages that doesn't interfere with stdout/stderr
export function consoleError(message: string): void {
process.stderr.write(`ERROR: ${message}\n`);
}