UNPKG

gemini-cost-tracker

Version:

CLI tool to display token usage and costs for Gemini and Vertex AI

97 lines 3.27 kB
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 = {})); class Logger { level = LogLevel.WARN; // デフォルトを WARN に変更 format = 'text'; setLevel(level) { this.level = level; } setFormat(format) { this.format = format; } formatMessage(entry) { if (this.format === 'json') { return JSON.stringify({ level: LogLevel[entry.level], message: entry.message, timestamp: entry.timestamp.toISOString(), context: entry.context, error: entry.error ? { name: entry.error.name, message: entry.error.message, stack: entry.error.stack, } : undefined, }); } const timestamp = entry.timestamp.toISOString(); const levelName = LogLevel[entry.level]; let formatted = `[${timestamp}] [${levelName}] ${entry.message}`; if (entry.context && Object.keys(entry.context).length > 0) { formatted += ` - Context: ${JSON.stringify(entry.context)}`; } if (entry.error) { formatted += ` - Error: ${entry.error.message}`; } return formatted; } log(level, message, context, error) { if (this.level >= level) { const entry = { level, message, timestamp: new Date(), context, error, }; const formatted = this.formatMessage(entry); switch (level) { case LogLevel.ERROR: console.error(formatted); break; case LogLevel.WARN: console.warn(formatted); break; case LogLevel.INFO: case LogLevel.DEBUG: default: console.log(formatted); break; } } } error(message, context, error) { this.log(LogLevel.ERROR, message, context, error); } warn(message, context) { this.log(LogLevel.WARN, message, context); } info(message, context) { this.log(LogLevel.INFO, message, context); } debug(message, context) { this.log(LogLevel.DEBUG, message, context); } // Convenience method for logging app errors appError(message, code, error, context) { this.error(message, { ...context, errorCode: code }, error); } } export const logger = new Logger(); // Set log level from environment variable const envLogLevel = process.env.LOG_LEVEL?.toUpperCase(); if (envLogLevel && envLogLevel in LogLevel) { logger.setLevel(LogLevel[envLogLevel]); } // Set log format from environment variable const envLogFormat = process.env.LOG_FORMAT?.toLowerCase(); if (envLogFormat === 'json' || envLogFormat === 'text') { logger.setFormat(envLogFormat); } //# sourceMappingURL=logger.js.map