Skip to content

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

FileRole
src/index.tscreateLogger() factory, GCP severity mapping table, pino config (NDJSON vs pretty)
src/index.test.tslogger output + severity mapping assertions

Dependencies

  • pino
  • pino-pretty (dev only)

Data Flow

service / handler / resolver
↓ createLogger({ serviceName, version })
↓ logger.info({ tenantId, kernelId }, "dispatching tool")
↓ stdout → GCP Cloud Logging / local OTEL collector

Field conventions: severity (GCP label), time (epoch ms), service, version, environment (NODE_ENV), msg, err (serialized error when present).