evlog — современный TypeScript-логгер

источник ↗ ·

Современный TypeScript-логгер с поддержкой структурированных логов, wide events и structured errors в одном API.

privacy

Эта заметка участвует в semantic memory.

AI Summary

🚀 TL;DR

evlog — современный TypeScript-логгер, который заменяет console.log/pino/consola и даёт три режима логирования в одном API: простые структурированные логи, wide events (накопление контекста) и structured errors с полями why/fix/link.

📖 Что это такое

evlog — это zero-dependency TypeScript-логгер (~6 kB gzip) для CLI, библиотек, background jobs, edge workers и HTTP-хендлеров. Он объединяет три подхода: fire-and-forget structured logs, wide events (accumulate context → emit once) и structured errors с actionable контекстом. Работает везде: от standalone скриптов до Cloudflare Workers.

🔑 Ключевые факты

  • Zero transitive dependencies, ~6 kB gzip
  • ~3 µs/request, 7.7x быстрее pino в wide event паттерне
  • Один API для всех контекстов (scripts, frameworks, edge, browser, library)
  • Structured errors: why, fix, link
  • Wide events: log.set() + log.emit() вместо склеивания строк
  • Поддержка AI-агентов через structured context
  • Сравнение: feature comparison

⚙️ Как это работает

Simple Logging:

import { log } from 'evlog'
log.info('auth', 'User logged in')
log.error({ action: 'payment', error: 'card_declined', userId: 42 })

Wide Events:

import { createLogger } from 'evlog'
const log = createLogger({ jobId: 'sync-001' })
log.set({ batch: { size: 50, processed: 50 } })
log.emit()

Structured Errors:

import { createError } from 'evlog'
throw createError({
  message: 'Payment failed',
  status: 402,
  why: 'Card declined by issuer',
  fix: 'Try a different payment method',
  link: 'https://docs.example.com/payments/declined'
})

💡 Вывод и значение

evlog решает проблему разрозненных логов и отсутствия контекста в ошибках. В эпоху AI-агентов structured context (why/fix/link) становится критически важным. Логгер даёт один API для всех сценариев, нулевые зависимости и производительность, подходящую для production. Рекомендуется начинать с него с первого дня проекта.

📌 Важные детали

Мои мысли

graph

Карта связей