@spfn/core
Version:
SPFN Framework Core - File-based routing, transactions, repository pattern
151 lines (145 loc) • 3.18 kB
TypeScript
/**
* Logger Type Definitions
*
* 로깅 시스템 타입 정의
*
* ✅ 구현 완료:
* - LogLevel 타입 정의
* - LogMetadata 인터페이스
* - Transport 인터페이스
* - 환경별 설정 타입
*
* 🔗 관련 파일:
* - src/logger/logger.ts (Logger 클래스)
* - src/logger/transports/ (Transport 구현체)
* - src/logger/config.ts (설정)
*/
/**
* 로그 레벨
* debug < info < warn < error < fatal
*/
type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';
/**
* 로그 메타데이터
*/
interface LogMetadata {
timestamp: Date;
level: LogLevel;
message: string;
module?: string;
error?: Error;
context?: Record<string, unknown>;
}
/**
* Transport 인터페이스
* 모든 Transport는 이 인터페이스를 구현해야 함
*/
interface Transport {
/**
* Transport 이름
*/
name: string;
/**
* 최소 로그 레벨 (이 레벨 이상만 처리)
*/
level: LogLevel;
/**
* 활성화 여부
*/
enabled: boolean;
/**
* 로그 처리 함수
*/
log(metadata: LogMetadata): Promise<void>;
/**
* Transport 종료 (리소스 정리)
*/
close?(): Promise<void>;
}
/**
* Logger 설정
*/
interface LoggerConfig {
/**
* 기본 로그 레벨
*/
level: LogLevel;
/**
* 모듈명 (context)
*/
module?: string;
/**
* Transport 리스트
*/
transports: Transport[];
}
/**
* Logger Class
*
* Central logging class with multiple transports, child loggers, and sensitive data masking.
*/
/**
* Logger class
*/
declare class Logger {
private readonly config;
private readonly module?;
constructor(config: LoggerConfig);
/**
* Get current log level
*/
get level(): LogLevel;
/**
* Create child logger (per module)
*/
child(module: string): Logger;
/**
* Debug log
*/
debug(message: string, context?: Record<string, unknown>): void;
/**
* Info log
*/
info(message: string, context?: Record<string, unknown>): void;
/**
* Warn log
*/
warn(message: string, context?: Record<string, unknown>): void;
warn(message: string, error: Error, context?: Record<string, unknown>): void;
/**
* Error log
*/
error(message: string, context?: Record<string, unknown>): void;
error(message: string, error: Error, context?: Record<string, unknown>): void;
/**
* Fatal log
*/
fatal(message: string, context?: Record<string, unknown>): void;
fatal(message: string, error: Error, context?: Record<string, unknown>): void;
/**
* Log processing (internal)
*/
private log;
/**
* Process Transports
*/
private processTransports;
/**
* Transport log (error-safe)
*/
private safeTransportLog;
/**
* Close all Transports
*/
close(): Promise<void>;
}
/**
* Logger Factory
*
* Creates and initializes the logger instance with configured transports
*/
/**
* Singleton Logger instance
*/
declare const logger: Logger;
export { type LogLevel, Logger, type Transport, logger };