| const colors = { |
| reset: '\x1b[0m', |
| green: '\x1b[32m', |
| yellow: '\x1b[33m', |
| red: '\x1b[31m', |
| cyan: '\x1b[36m', |
| gray: '\x1b[90m' |
| }; |
|
|
| function logMessage(level, ...args) { |
| const timestamp = new Date().toLocaleTimeString('zh-CN', { hour12: false }); |
| const color = { info: colors.green, warn: colors.yellow, error: colors.red }[level]; |
| console.log(`${colors.gray}${timestamp}${colors.reset} ${color}[${level}]${colors.reset}`, ...args); |
| } |
|
|
| function logRequest(method, path, status, duration) { |
| const statusColor = status >= 500 ? colors.red : status >= 400 ? colors.yellow : colors.green; |
| console.log(`${colors.cyan}[${method}]${colors.reset} - ${path} ${statusColor}${status}${colors.reset} ${colors.gray}${duration}ms${colors.reset}`); |
| } |
|
|
| export const log = { |
| info: (...args) => logMessage('info', ...args), |
| warn: (...args) => logMessage('warn', ...args), |
| error: (...args) => logMessage('error', ...args), |
| request: logRequest |
| }; |
|
|
| export default log; |
|
|