Skip to main content
Glama
logger.ts5.31 kB
import type { Logger } from 'pino'; import { ILogger } from '../../../src/logger/types'; // Mock CloudProvider enum export enum CloudProvider { NONE = 'none', GCP = 'gcp', AWS = 'aws', AZURE = 'azure' } // Mock state for LoggerConfig let mockDefaultLevel: LogLevel = 'info'; let mockPrettyPrint = true; let mockEnableFileOutput = true; let mockDefaultLogFile = 'wallet-app.log'; let mockCloud: CloudLoggerConfig = { provider: CloudProvider.NONE }; let mockStandardFields = { application: 'midnight-mcp', environment: 'development', version: '0.0.1', }; // Flags to track if values have been explicitly set let defaultLevelSet = false; let environmentSet = false; let versionSet = false; // Mock LoggerConfig export const LoggerConfig = { get defaultLevel() { return defaultLevelSet ? mockDefaultLevel : ((process.env.LOG_LEVEL as LogLevel) || mockDefaultLevel); }, set defaultLevel(value: LogLevel) { mockDefaultLevel = value; defaultLevelSet = true; }, get prettyPrint() { return mockPrettyPrint; }, set prettyPrint(value: boolean) { mockPrettyPrint = value; }, get enableFileOutput() { return mockEnableFileOutput; }, set enableFileOutput(value: boolean) { mockEnableFileOutput = value; }, get defaultLogFile() { return mockDefaultLogFile; }, set defaultLogFile(value: string) { mockDefaultLogFile = value; }, get cloud() { return mockCloud; }, set cloud(value: CloudLoggerConfig) { mockCloud = value; }, get standardFields() { return { application: mockStandardFields.application, environment: environmentSet ? mockStandardFields.environment : (process.env.NODE_ENV || mockStandardFields.environment), version: versionSet ? mockStandardFields.version : (process.env.APP_VERSION || mockStandardFields.version), }; }, set standardFields(value: typeof mockStandardFields) { mockStandardFields = { ...mockStandardFields, ...value }; if (value.environment !== undefined) environmentSet = true; if (value.version !== undefined) versionSet = true; }, }; // Mock types export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal'; export interface GCPLoggerConfig { projectId: string; logName?: string; resource?: { type: string; labels: Record<string, string>; }; serviceContext?: { service: string; version: string; }; labels?: Record<string, string>; synchronous?: boolean; } export interface AWSLoggerConfig { logGroupName: string; logStreamName?: string; region: string; credentials?: { accessKeyId: string; secretAccessKey: string; }; } export interface AzureLoggerConfig { connectionString: string; role?: string; roleInstance?: string; } export type CloudLoggerConfig = { provider: CloudProvider.GCP; config: GCPLoggerConfig; } | { provider: CloudProvider.AWS; config: AWSLoggerConfig; } | { provider: CloudProvider.AZURE; config: AzureLoggerConfig; } | { provider: CloudProvider.NONE; }; export interface LoggerOptions { level?: LogLevel; pretty?: boolean; pinoOptions?: any; outputFile?: string; cloud?: CloudLoggerConfig; standardFields?: { application?: string; environment?: string; version?: string; agentId?: string; custom?: Record<string, any>; }; } type MockLogger = { error: jest.Mock; info: jest.Mock; debug: jest.Mock; warn: jest.Mock; trace: jest.Mock; fatal: jest.Mock; child: jest.Mock<MockLogger, []>; }; const mockLogger = {} as MockLogger; mockLogger.error = jest.fn().mockImplementation((...args: any[]) => { // Only log errors in non-test environments or when explicitly enabled if (process.env.NODE_ENV !== 'test' || process.env.ENABLE_TEST_LOGGING === 'true') { console.error('[MOCK LOGGER ERROR]', ...args); } }); mockLogger.info = jest.fn().mockImplementation((...args: any[]) => { if (process.env.NODE_ENV !== 'test' || process.env.ENABLE_TEST_LOGGING === 'true') { console.log('[MOCK LOGGER INFO]', ...args); } }); mockLogger.debug = jest.fn().mockImplementation((...args: any[]) => { if (process.env.NODE_ENV !== 'test' || process.env.ENABLE_TEST_LOGGING === 'true') { console.log('[MOCK LOGGER DEBUG]', ...args); } }); mockLogger.warn = jest.fn().mockImplementation((...args: any[]) => { if (process.env.NODE_ENV !== 'test' || process.env.ENABLE_TEST_LOGGING === 'true') { console.warn('[MOCK LOGGER WARN]', ...args); } }); mockLogger.trace = jest.fn().mockImplementation((...args: any[]) => { if (process.env.NODE_ENV !== 'test' || process.env.ENABLE_TEST_LOGGING === 'true') { console.log('[MOCK LOGGER TRACE]', ...args); } }); mockLogger.fatal = jest.fn().mockImplementation((...args: any[]) => { if (process.env.NODE_ENV !== 'test' || process.env.ENABLE_TEST_LOGGING === 'true') { console.error('[MOCK LOGGER FATAL]', ...args); } }); mockLogger.child = jest.fn(() => mockLogger); export function createLogger() { return mockLogger; } export default mockLogger; export function createGCPFormatter(config: GCPLoggerConfig): any { return { formatters: { level: (level: string, code: number) => ({ severity: level, level: code }), log: (log: any) => ({ ...log, timestamp: new Date().toISOString() }) } }; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/evilpixi/pixi-midnight-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server