Engineering Gap
Pino logger in app/backend/src/logger/logger.service.ts uses default pretty-printing which is human-readable but not structured JSON. In production, structured JSON logs are needed for log aggregation systems (ELK, Datadog, CloudWatch).
Codebase Evidence
app/backend/src/logger/logger.service.ts line 31-37: Pino configured with pino() defaults — no JSON-only mode
Risk Profile
Logs not machine-parseable in production. Incompatible with log aggregation.
Remediation Strategy
Configure Pino to output JSON when NODE_ENV=production. Keep pretty-printing for development. Add log level from env var (already partially done).
Success Conditions
Change Surface
File: app/backend/src/logger/logger.service.ts
Security Review
Ensure log redaction (log-redaction.util.ts) applied before JSON output.
Completion Checklist
Engineering Gap
Pino logger in
app/backend/src/logger/logger.service.tsuses default pretty-printing which is human-readable but not structured JSON. In production, structured JSON logs are needed for log aggregation systems (ELK, Datadog, CloudWatch).Codebase Evidence
app/backend/src/logger/logger.service.tsline 31-37: Pino configured withpino()defaults — no JSON-only modeRisk Profile
Logs not machine-parseable in production. Incompatible with log aggregation.
Remediation Strategy
Configure Pino to output JSON when
NODE_ENV=production. Keep pretty-printing for development. Add log level from env var (already partially done).Success Conditions
Change Surface
File:
app/backend/src/logger/logger.service.tsSecurity Review
Ensure log redaction (
log-redaction.util.ts) applied before JSON output.Completion Checklist