npm.io
0.2.0 • Published 2d ago

@pumped-fn/lite-extension-logging

Licence
MIT
Version
0.2.0
Deps
0
Size
34 kB
Vulns
0
Weekly
0
Stars
6

@pumped-fn/lite-extension-logging

Execution-scoped logging for @pumped-fn/lite.

The extension is static composition. Runtime backend choice is a tag. Install logging.extension() to get automatic flow logs when requested, and resolve the logging.logger resource when application code needs explicit logs.

import { createScope, flow } from "@pumped-fn/lite"
import { logging } from "@pumped-fn/lite-extension-logging"

const records = logging.memory()
const scope = createScope({
  extensions: [logging.extension()],
  tags: [
    logging.runtime({
      sinks: [records],
      level: "info",
      flow: "errors",
      fields: { service: "worker" },
    }),
  ],
})

const run = flow({
  name: "run",
  deps: { logger: logging.logger },
  factory: (_ctx, { logger }) => {
    logger.info("run.accepted")
  },
})

Runtime

logging.runtime(...) carries backend policy:

Option Role
sinks Log destinations. A backend package should adapt to this interface.
level Minimum level: debug, info, warn, or error.
flow Automatic flow logs: none, errors, or all; payloads stay out of log records.
fields Runtime fields merged into every record.
source Source override for records created inside this runtime.
redact Field mapper before a record reaches sinks.
failure isolate keeps app execution moving; throw makes sink failure fail execution.
onError Observes sink failures without hidden swallowed errors.
now / id Deterministic clock and id hooks for tests and runtimes. Override id for scoped ids.

The logging.logger resource is execution-owned and flushes sinks on context close. logger.child(fields) adds local fields without changing the runtime tag. The built-in logging.memory() sink is for tests and local inspection; size() returns buffered record count. OpenTelemetry logs and OTLP collectors are adapter targets for Logging.Sink; this package does not import or ship those backends. Use @pumped-fn/lite-extension-logging-pino when the runtime sink should write records to Pino.