@crossfox/elysia-logs
v0.1.2
Published
Universal DB-backed logging for Elysia apps: activity/audit log with entity+actor diffing, error log (backend+frontend), client ingestion, admin query API, unread badge, retention.
Downloads
488
Maintainers
Readme
@crossfox/elysia-logs
Универсальный DB-логгер для Elysia-приложений на Bun: activity/audit-лог (кто что сделал, structured diff, актёр + сущность как две независимые оси) + error-лог (backend и frontend, с приёмом от клиентов), REST для админки, бейдж непрочитанных событий, ретеншн.
Собирает лучшее из двух внутренних проектов: structured diff-лог CrystalTask (entity_type/entity_id/actor_user_id) + error-лог/client-ingestion/Redis-бейдж pstryku.
Быстрый старт
import { setupLogs, createLoggingOnError, createClientLogsPlugin, createLogsAdminPlugin } from "@crossfox/elysia-logs";
import { createOnErrorHandler } from "@crossfox/elysia-kit";
const { cfg, schemas, service: logs } = await setupLogs({
multiTenant: true,
actionsEnum: ["create", "update", "delete", "assign", "accept", "submit"] as const,
redis: redisClient, // опционально — для /logs/badge
});
app
.onError(createOnErrorHandler({ onLog: createLoggingOnError(logs, { app: "api" }) }))
.use(createClientLogsPlugin(logs, { resolveActor: async (headers) => resolveMyActor(headers) }))
.use(createLogsAdminPlugin(schemas, cfg, { resolveActor: (ctx) => myAdminActor(ctx), badge: true }));
// в бизнес-коде:
await logs.writeLog({
actorUserId: auth.userId,
entityType: "job",
entityId: jobId,
action: "accept",
});Связка исполнитель ↔ сущность ("супер-лог")
Каждая строка activity-лога несёт две независимые оси: actor_user_id (кто сделал) и entity_type/entity_id (над чем). GET /logs?actor_user_id= и GET /logs?entity_id=&entity_type= фильтруют по каждой оси отдельно — админ переходит и на исполнителя, и на заказ из одной и той же строки лога.
Ретеншн
Пакет не тащит cron сам — вызывайте чистую функцию purgeOldLogs(schemas, retentionDays) из своего event bus/cron (пример — services/cron в CrystalTask).
Лицензия
PolyForm Noncommercial 1.0.0 — некоммерческое использование бесплатно. Коммерческое — [email protected].
