56 lines
1.3 KiB
TypeScript
56 lines
1.3 KiB
TypeScript
/**
|
|
* 간단한 로깅 유틸리티
|
|
*/
|
|
|
|
type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
|
|
const LOG_LEVELS: Record<LogLevel, number> = {
|
|
debug: 0,
|
|
info: 1,
|
|
warn: 2,
|
|
error: 3,
|
|
};
|
|
|
|
// 환경변수로 로그 레벨 설정 (기본: info)
|
|
const currentLevel = (process.env.LOG_LEVEL as LogLevel) || 'info';
|
|
|
|
function shouldLog(level: LogLevel): boolean {
|
|
return LOG_LEVELS[level] >= LOG_LEVELS[currentLevel];
|
|
}
|
|
|
|
function formatMessage(level: LogLevel, message: string, data?: unknown): string {
|
|
const timestamp = new Date().toISOString();
|
|
const prefix = `[${timestamp}] [${level.toUpperCase()}]`;
|
|
|
|
if (data) {
|
|
return `${prefix} ${message} ${JSON.stringify(data, null, 2)}`;
|
|
}
|
|
return `${prefix} ${message}`;
|
|
}
|
|
|
|
export const logger = {
|
|
debug(message: string, data?: unknown): void {
|
|
if (shouldLog('debug')) {
|
|
console.error(formatMessage('debug', message, data));
|
|
}
|
|
},
|
|
|
|
info(message: string, data?: unknown): void {
|
|
if (shouldLog('info')) {
|
|
console.error(formatMessage('info', message, data));
|
|
}
|
|
},
|
|
|
|
warn(message: string, data?: unknown): void {
|
|
if (shouldLog('warn')) {
|
|
console.error(formatMessage('warn', message, data));
|
|
}
|
|
},
|
|
|
|
error(message: string, data?: unknown): void {
|
|
if (shouldLog('error')) {
|
|
console.error(formatMessage('error', message, data));
|
|
}
|
|
},
|
|
};
|