@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>— шаг с автоматическим завершением и результатом в metadataend(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
2025-07-26 19:30:29 +00:00
Assets (1)
Versions (3)
View all
npm
29
Crysteam
ISC
latest
6.3 KiB
logger-0.1.0.tgz
6.3 KiB