Skip to content

arckit-dev/observability

Repository files navigation

@arckit/observability

Structured observability toolkit with pluggable transports.

npm version npm downloads bundle size codecov TypeScript

Table of Contents

About

Lightweight logging abstraction with a Logger interface and two built-in transports:

  • Console — structured JSON output via console[level]
  • File — file-based logging via pino (optional peer dependency)

Installation

pnpm add @arckit/observability

For the file logger, also install pino:

pnpm add pino

Usage

Console logger

import { consoleLogger } from '@arckit/observability';

const logger = consoleLogger();

logger.log({ level: 'info', event: 'user.created', payload: { userId: '123' } });
// console.info('{"event":"user.created","userId":"123"}')

File logger

import { fileLogger } from '@arckit/observability';

const logger = fileLogger({ path: './logs/app.log', console: true });

logger.log({ level: 'error', event: 'payment.failed', payload: { orderId: '456' } });

API

Logger

type Logger = {
  log: (entry: LogEntry) => void;
};

LogEntry

type LogEntry = {
  level: LogLevel;
  event: string;
  payload?: Record<string, unknown>;
};

LogLevel

type LogLevel = 'debug' | 'info' | 'warn' | 'error';

consoleLogger() => Logger

Creates a logger that outputs structured JSON to the console using console[level].

fileLogger(config) => Logger

Parameter Type Description
config.path string File path for log output
config.console boolean? Also output to console with pino-pretty

Creates a logger that writes structured logs to a file via pino. Automatically creates the directory if it doesn't exist.

Contributing

See CONTRIBUTING.md for details.

License

MIT © Marc Gavanier

About

Structured observability toolkit with pluggable transports (console, file/pino)

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors