| | |
| | |
| | |
| | interface LogInfo { |
| | level: string; |
| | message: string; |
| | timestamp?: string; |
| | [key: string]: unknown; |
| | } |
| |
|
| | type LogMethod = (message: string, ...meta: unknown[]) => void; |
| |
|
| | interface Logger { |
| | error: LogMethod; |
| | warn: LogMethod; |
| | info: LogMethod; |
| | http: LogMethod; |
| | verbose: LogMethod; |
| | debug: LogMethod; |
| | silly: LogMethod; |
| | log: (level: string, message: string, ...meta: unknown[]) => void; |
| | } |
| |
|
| | const formatMessage = (level: string, message: string): string => { |
| | const timestamp = new Date().toISOString(); |
| | return `[${timestamp}] ${level}: ${message}`; |
| | }; |
| |
|
| | const logger: Logger = { |
| | error: (message: string, ...meta: unknown[]) => { |
| | |
| | console.error(formatMessage('error', message), ...meta); |
| | }, |
| | warn: (message: string, ...meta: unknown[]) => { |
| | |
| | console.warn(formatMessage('warn', message), ...meta); |
| | }, |
| | info: (message: string, ...meta: unknown[]) => { |
| | |
| | console.info(formatMessage('info', message), ...meta); |
| | }, |
| | http: (message: string, ...meta: unknown[]) => { |
| | |
| | console.log(formatMessage('http', message), ...meta); |
| | }, |
| | verbose: (message: string, ...meta: unknown[]) => { |
| | |
| | console.log(formatMessage('verbose', message), ...meta); |
| | }, |
| | debug: (message: string, ...meta: unknown[]) => { |
| | |
| | console.debug(formatMessage('debug', message), ...meta); |
| | }, |
| | silly: (message: string, ...meta: unknown[]) => { |
| | |
| | console.log(formatMessage('silly', message), ...meta); |
| | }, |
| | log: (level: string, message: string, ...meta: unknown[]) => { |
| | |
| | console.log(formatMessage(level, message), ...meta); |
| | }, |
| | }; |
| |
|
| | export default logger; |
| |
|