/** * 중앙화된 로깅 시스템 * * MCP 스펙 준수: * - MCP 모드: mcpLogger.logServer() 사용 (MCP 스펙 준수) * - 일반 모드: stderr.write() 사용 * - PII 마스킹: 모든 로그 메시지와 메타데이터에 자동 적용 * - 일관된 logger 이름: MCP 모드에서 'server' 사용 * * 참조: * - MCP 스펙: https://spec.modelcontextprotocol.io/specification/server/#logging * - PRD 0019: 보안 강화 (Phase 1) - PII 마스킹 강화 */ export type LogLevel = 'debug' | 'info' | 'warn' | 'error'; /** * 로깅 메타데이터 스키마 * MCP 스펙 준수: 공통 필드 포함 * * @see LoggingContext, LogMetadataSchema in logging-helpers.ts */ export interface LogMetadataSchema { agentId?: string; slot?: 'A' | 'B' | 'C'; memoryId?: string; traceId?: string; requestId?: string; [key: string]: unknown; } /** * 로깅 메타데이터 검증 결과 */ export interface LogMetadataValidationResult { valid: boolean; errors: string[]; warnings: string[]; } /** * 로깅 메타데이터 검증 * * @param meta 메타데이터 객체 * @returns 검증 결과 */ export declare function validateLogMetadata(meta?: Record): LogMetadataValidationResult; /** * Logger 인터페이스 * * 모든 로거가 구현해야 하는 표준 인터페이스입니다. * MCP 모드와 일반 모드를 자동으로 감지하여 적절한 로깅 방식을 사용합니다. * * @example * ```typescript * import { logger } from './logger.js'; * * logger.info('User logged in', { userId: 'user123' }); * logger.error('Database connection failed', { error: 'timeout' }); * ``` */ export interface Logger { /** * 디버그 레벨 로그 출력 * 개발 및 디버깅 목적으로 사용됩니다. * * @param message 로그 메시지 * @param meta 추가 메타데이터 (선택적) */ debug(message: string, meta?: Record): void; /** * 정보 레벨 로그 출력 * 일반적인 정보성 메시지에 사용됩니다. * * @param message 로그 메시지 * @param meta 추가 메타데이터 (선택적) */ info(message: string, meta?: Record): void; /** * 경고 레벨 로그 출력 * 잠재적인 문제나 경고 상황에 사용됩니다. * * @param message 로그 메시지 * @param meta 추가 메타데이터 (선택적) */ warn(message: string, meta?: Record): void; /** * 에러 레벨 로그 출력 * 오류나 예외 상황에 사용됩니다. * * @param message 로그 메시지 * @param meta 추가 메타데이터 (선택적) */ error(message: string, meta?: Record): void; } /** * 중앙화된 로거 인스턴스 * * MCP 모드와 일반 모드를 자동으로 감지하여 적절한 로깅 방식을 사용합니다. * 모든 로그 메시지와 메타데이터에 PII 마스킹이 자동으로 적용됩니다. * * 중복 로그 방지: * - MCP 모드와 일반 모드가 동시에 작동하지 않도록 보장 * - isMCPMode()가 정확히 감지되도록 개선 * * 사용법: * ```typescript * import { logger } from './logger.js'; * * logger.info('Operation completed', { operationId: 'op123' }); * logger.error('Failed to process request', { error: 'timeout' }); * ``` * * MCP 모드: * - mcpLogger.logServer()를 사용하여 MCP 프로토콜 준수 * - logger 이름: 'server' * - notifications/message 형식 자동 처리 * * 일반 모드: * - stderr.write()를 사용하여 표준 에러 출력 * - 구조화된 텍스트 형식 (ISO 8601 타임스탬프 + 레벨 + 메시지 + JSON 메타데이터) */ /** * CLI 모드에서 로그 억제 (REQ-IO-4, AC8). * MEMENTO_CLI_QUIET=1 이면 stdout/stderr에 로그를 남기지 않음. */ export declare function isCliQuiet(): boolean; export declare const logger: Logger; //# sourceMappingURL=logger.d.ts.map