@crysteam/logger (0.1.0)

Published 2025-07-26 19:30:29 +00:00 by Kiefe

Installation

@crysteam:registry=
npm install @crysteam/logger@0.1.0
"@crysteam/logger": "0.1.0"

About this package

Crysteam.Logger

Crysteam.Logger — легковесная, быстрая и расширяемая библиотека для трассировки и логирования бизнес-процессов с поддержкой вложенных шагов, событий и интеграции с базой данных.

Быстрый старт

npm install @crysteam/logger
import { CrysteamLogger } from '@crysteam/logger';

// Настройка обработчиков событий
CrysteamLogger.configureHandlers({
  onTraceStart: (trace) => console.log(`[TRACE START] ${trace.name}`),
  onStepStart: ({ step }) => console.log(`[STEP] ${step.name}`),
  onStepEnd: ({ step }) => console.log(`[STEP END] ${step.name}`),
  onTraceEnd: (trace) => console.log(`[TRACE END] ${trace.name} - Status: ${trace.status}`),
  onTraceEndAsync: async (trace) => {
    // Сохраняем в базу данных
    // await db.save(trace.toJSON());
    console.log('[DB] Trace saved:', JSON.stringify(trace));
  }
});

const trace = CrysteamLogger.startTrace('MyProcess');

// Вариант 1: шаг с функцией (async, результат попадёт в metadata.result)
await trace.step('Step 1', async () => {
  // ...
  return { foo: 42 };
});

// Вариант 2: просто шаг (без функции)
const step = await trace.step('Step 2', { bar: 1 });
await step.step('SubStep', async () => 'subresult');
step.end();

trace.end();

Основные возможности

  • Вложенные шаги любого уровня
  • Метаданные и ошибки на каждом шаге
  • Результат функции автоматически попадает в metadata.result
  • Асинхронные обработчики событий (например, для сохранения в БД)
  • Включение/отключение трассировки (production-ready)

API

CrysteamLogger

  • static configureHandlers(handlers: TraceEventHandlers) — установка обработчиков событий
  • static startTrace(name: string, metadata?: object): Trace — начать трассировку
  • static enabled: boolean — включить/выключить трассировку

Trace

  • step(name: string, metadata?: object): Promise<TraceStep> — создать шаг
  • step<T>(name: string, fn: () => Promise<T> | T, metadata?: object): Promise<T> — шаг с автоматическим завершением и результатом в metadata
  • end(error?: Error): this — завершить трассировку
  • durationMs: number — длительность
  • toJSON(): object — сериализация без циклов

TraceStep

  • step(name: string, fnOrMetadata?: object | (() => Promise<T> | T), metadata?: object): Promise<T | TraceStep> — вложенный шаг (аналогично Trace)
  • end(error?: Error): this — завершить шаг
  • durationMs: number — длительность
  • toJSON(): object — сериализация без циклов

TraceEventHandlers

  • onTraceStart(trace)
  • onStepStart({ trace, step })
  • onStepEnd({ trace, step })
  • onError({ trace, error })
  • onTraceEnd(trace)
  • onTraceEndAsync(trace) — асинхронное сохранение (например, в БД)

Пример вложенных шагов и результата в metadata

const trace = CrysteamLogger.startTrace('OrderProcess', { orderId: 42 });
await trace.step('ValidateOrder', async () => {
  // ...
  return { valid: true };
});
const step = await trace.step('CreateOrder', { user: 1 });
await step.step('SaveToDatabase', async () => 'ok');
step.end();
trace.end();

Отключение трассировки

CrysteamLogger.enabled = false; // трассировка не будет вестись

Лицензия

MIT

Dependencies

Dependencies

ID Version
@crysteam/error ^0.0.4

Development Dependencies

ID Version
@types/node ^22.15.29
ts-node ^10.9.2
typescript ^5.8.3
Details
npm
2025-07-26 19:30:29 +00:00
29
Crysteam
ISC
latest
6.3 KiB
Assets (1)
Versions (3) View all
0.1.0 2025-07-26
0.0.2 2025-07-20
0.0.1 2025-07-20