Skip to content

feat(logger): Create @lytics/kero zero-dependency logger#47

Merged
prosdev merged 1 commit intomainfrom
feat/kero-logger
Nov 25, 2025
Merged

feat(logger): Create @lytics/kero zero-dependency logger#47
prosdev merged 1 commit intomainfrom
feat/kero-logger

Conversation

@prosdev
Copy link
Collaborator

@prosdev prosdev commented Nov 25, 2025

Summary

Creates @lytics/kero, a zero-dependency TypeScript logger inspired by Pino.

Features

  • Core logging: trace, debug, info, warn, error, fatal levels
  • Pino-inspired API: Structured logging with object + message pattern
  • Child loggers: Context inheritance for request tracking
  • Formatters:
    • Pretty (colored, human-readable)
    • JSON (machine-readable, Pino-compatible)
  • Console transport: stdout/stderr routing by level
  • Presets: development, production, test configurations
  • Timer utility: startTimer() for measuring durations
  • Success method: success() for success messages with ✔ icon
  • Configurable icons: Unicode (» ○ ● ✔ ▲ ✖ ✘) or emoji

Usage

import { kero, createLogger } from '@lytics/kero';

// Default logger
kero.info('Server started');
kero.success('Deployment complete');
kero.error(new Error('Failed'), 'Request failed');

// Custom logger with icons
const logger = createLogger({
  preset: 'development',
  formatter: new PrettyFormatter({ icons: true }),
});

// Child loggers
const reqLogger = logger.child({ requestId: 'abc-123' });
reqLogger.info('Processing');

// Timing
const done = logger.startTimer('db-query');
await db.query(sql);
done(); // logs: "db-query completed (42ms)"

Test Coverage

  • 62 tests passing
  • 100% line coverage
  • 100% function coverage
  • 94% branch coverage

Why Zero Dependencies?

  1. Maximum portability across projects
  2. No version conflicts
  3. AI-assisted development makes building from scratch fast
  4. Full control over behavior and debugging

Closes #46

- Core logger with trace/debug/info/warn/error/fatal levels
- Pino-inspired API with structured logging
- Child loggers with context inheritance
- Pretty formatter (colored, human-readable)
- JSON formatter (machine-readable, Pino-compatible)
- Console transport (stdout/stderr routing)
- Presets for development/production/test
- Timer utility for measuring durations
- success() method for success messages with checkmark icon
- Configurable icons: unicode (» ○ ● ✔ ▲ ✖ ✘) or emoji
- 62 tests with 100% line coverage

Closes #46
@prosdev prosdev merged commit bca78a9 into main Nov 25, 2025
1 check passed
@prosdev prosdev deleted the feat/kero-logger branch November 25, 2025 09:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Create @lytics/kero - Zero-dependency TypeScript logger

1 participant