logger — Architecture
The @mnemose/logger package is the structured logging helper shared across all Mnemose services and command handlers. It wraps pino with GCP Cloud Logging severity mapping and a pretty-print dev mode.
Responsibilities
- Export
createLogger(opts)producing a pino logger with GCP severity labels (DEBUG,INFO,WARNING,ERROR, …) - Emit NDJSON in production (ingestible by Cloud Logging, Datadog, Elastic) and pretty-printed terminal output in development (
NODE_ENV !== "production") - Stamp every log with
service,version,environment, and serialized errors (err.message,err.stack,err.code)
Key Components
| File | Role |
|---|---|
src/index.ts | createLogger() factory, GCP severity mapping table, pino config (NDJSON vs pretty) |
src/index.test.ts | logger output + severity mapping assertions |
Dependencies
pinopino-pretty(dev only)
Data Flow
service / handler / resolver ↓ createLogger({ serviceName, version }) ↓ logger.info({ tenantId, kernelId }, "dispatching tool") ↓ stdout → GCP Cloud Logging / local OTEL collectorField conventions: severity (GCP label), time (epoch ms), service, version, environment (NODE_ENV), msg, err (serialized error when present).