mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-24 22:04:56 +00:00
58 lines
1.2 KiB
TypeScript
58 lines
1.2 KiB
TypeScript
import { formatError } from './format-error'
|
|
|
|
export enum LogLevel {
|
|
ERROR = 'error',
|
|
WARN = 'warn',
|
|
INFO = 'info',
|
|
DEBUG = 'debug',
|
|
}
|
|
|
|
export interface LogContext {
|
|
component?: string
|
|
userId?: string
|
|
action?: string
|
|
[key: string]: unknown
|
|
}
|
|
|
|
/**
|
|
* Centralized error logging with consistent format
|
|
* Replaces scattered console.error calls throughout the codebase
|
|
*/
|
|
export function logError(
|
|
error: unknown,
|
|
context?: LogContext,
|
|
level: LogLevel = LogLevel.ERROR
|
|
): void {
|
|
const formatted = formatError(error)
|
|
|
|
const logEntry = {
|
|
level,
|
|
timestamp: new Date().toISOString(),
|
|
message: formatted.message,
|
|
code: formatted.code,
|
|
context,
|
|
stack: formatted.stack,
|
|
}
|
|
|
|
// Use appropriate console method
|
|
switch (level) {
|
|
case LogLevel.ERROR:
|
|
console.error('[Error]', logEntry)
|
|
break
|
|
case LogLevel.WARN:
|
|
console.warn('[Warning]', logEntry)
|
|
break
|
|
case LogLevel.INFO:
|
|
console.log('[Info]', logEntry)
|
|
break
|
|
case LogLevel.DEBUG:
|
|
console.log('[Debug]', logEntry)
|
|
break
|
|
}
|
|
|
|
// TODO: Send to error tracking service (Sentry, etc.)
|
|
// if (process.env.NODE_ENV === 'production') {
|
|
// sendToErrorTracker(logEntry)
|
|
// }
|
|
}
|