UNPKG

@vibeworks/barkme-mcp-server

Version:

A Model Context Protocol (MCP) server that provides iOS push notifications through the Bark service

85 lines (84 loc) 2.77 kB
/** * Simple structured logging for BarkMe MCP server */ class Logger { level; constructor() { this.level = process.env.LOG_LEVEL || 'info'; } shouldLog(level) { const levels = ['debug', 'info', 'warn', 'error']; return levels.indexOf(level) >= levels.indexOf(this.level); } formatMessage(level, message, context) { const timestamp = new Date().toISOString(); const prefix = { debug: '[DEBUG]', info: '[INFO]', warn: '[WARN]', error: '[ERROR]' }[level]; const base = `${timestamp} ${prefix} ${message}`; if (context && Object.keys(context).length > 0) { const contextStr = JSON.stringify(context, null, 2); return `${base}\n${contextStr}`; } return base; } debug(message, context) { if (this.shouldLog('debug')) { console.error(this.formatMessage('debug', message, context)); } } info(message, context) { if (this.shouldLog('info')) { console.error(this.formatMessage('info', message, context)); } } warn(message, context) { if (this.shouldLog('warn')) { console.error(this.formatMessage('warn', message, context)); } } error(message, errorOrContext) { if (this.shouldLog('error')) { let context = {}; if (errorOrContext instanceof Error) { context = { error: errorOrContext.message, stack: errorOrContext.stack, }; } else if (errorOrContext) { context = errorOrContext; } console.error(this.formatMessage('error', message, context)); } } child(defaultContext) { const parent = this; return { debug(message, context) { parent.debug(message, { ...defaultContext, ...context }); }, info(message, context) { parent.info(message, { ...defaultContext, ...context }); }, warn(message, context) { parent.warn(message, { ...defaultContext, ...context }); }, error(message, errorOrContext) { if (errorOrContext instanceof Error) { parent.error(message, errorOrContext); } else { parent.error(message, { ...defaultContext, ...errorOrContext }); } }, child(additionalContext) { return parent.child({ ...defaultContext, ...additionalContext }); } }; } } export const logger = new Logger();