@siva-sub/mcp-public-transport
Version:
A Model Context Protocol server for Singapore transport data with real-time information and routing
54 lines (53 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.logger = void 0;
class Logger {
constructor() {
this.logLevel = process.env.LOG_LEVEL || 'info';
}
shouldLog(level) {
const levels = {
debug: 0,
info: 1,
warn: 2,
error: 3,
};
return levels[level] >= levels[this.logLevel];
}
formatMessage(level, message, meta) {
const entry = {
timestamp: new Date().toISOString(),
level,
message,
meta,
};
return JSON.stringify(entry);
}
log(level, message, meta) {
if (!this.shouldLog(level))
return;
const formatted = this.formatMessage(level, message, meta);
// Always use stderr to avoid interfering with MCP JSON-RPC on stdout
process.stderr.write(formatted + '\n');
}
debug(message, meta) {
this.log('debug', message, meta);
}
info(message, meta) {
this.log('info', message, meta);
}
warn(message, meta) {
this.log('warn', message, meta);
}
error(message, error) {
const meta = error instanceof Error
? {
message: error.message,
stack: error.stack,
name: error.name
}
: error;
this.log('error', message, meta);
}
}
exports.logger = new Logger();