Files
GMW/services/frontend/src/shared/lib/logger.ts
T
MythEclipseandClaude Opus 4.8 07032ab521 refactor: atomic, DRY, and logging improvements across codebase
- Split llmModerationClient.ts (2170 lines) into 5 focused sub-modules
- Split aiAnalyzer.ts (1282 lines) into 4 modular pipelines
- Split messages.db.ts (826 lines) into 5 domain-specific modules
- Moved shared schema to @bete/shared, eliminated backend duplication
- Added createChildLogger to all voice-recording and AI moderation modules
- Extracted tryCommandThenFallback, normalizeMediaState, DEFAULT_VOICE_STATUS
- Created shared pagination.ts utility, eliminated 5+ cursor-pagination duplications
- Created shared messageMapper.ts for row mapping
- Standardized backend error handling with asyncHandler
- Added frontend createLogger utility and useAsyncAction hook
- Added structured logging to frontend hooks, socket, and API client

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 19:46:08 +07:00

23 lines
790 B
TypeScript

// ─── Client-side structured logger ────────────────────────────────────────
const LOG_PREFIX = "[Bete]";
export function createLogger(context: string) {
const prefix = `${LOG_PREFIX} [${context}]`;
return {
debug: (msg: string, data?: Record<string, unknown>) => {
if (import.meta.env.DEV) console.debug(prefix, msg, data ?? "");
},
info: (msg: string, data?: Record<string, unknown>) => {
console.info(prefix, msg, data ?? "");
},
warn: (msg: string, data?: Record<string, unknown>) => {
console.warn(prefix, msg, data ?? "");
},
error: (msg: string, data?: Record<string, unknown>) => {
console.error(prefix, msg, data ?? "");
},
};
}