feat(observability): structured logs, W3C trace IDs, Sentry hooks (#18)
- TS: pino + pino-http; every HTTP request log includes traceId from W3C traceparent header (generated if absent); forwarded to ml/serving on all /score, /generate, /reward, and /api/ml proxy calls - Python: structlog JSON; FastAPI middleware binds trace_id via contextvars so every log line within a request carries it - Sentry: optional SENTRY_DSN init in both runtimes (no-op if unset) - Replace all console.* calls across services/api with pino logger - Update tests to spy on logger instead of console Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
12
services/api/src/logger.ts
Normal file
12
services/api/src/logger.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import pino from 'pino';
|
||||
import * as Sentry from '@sentry/node';
|
||||
|
||||
if (process.env['SENTRY_DSN']) {
|
||||
Sentry.init({
|
||||
dsn: process.env['SENTRY_DSN'],
|
||||
environment: process.env['NODE_ENV'] ?? 'development',
|
||||
});
|
||||
}
|
||||
|
||||
export const logger = pino({ level: process.env['LOG_LEVEL'] ?? 'info' });
|
||||
export { Sentry };
|
||||
Reference in New Issue
Block a user