Skip to main content

Scoped server logs as coloured text or JSON lines that carry the active trace id.

Server only: what a new Logger("Projects") writes. Console format in development, one JSON line per entry with LOG_FORMAT=json, the active trace and span ids included so a line leads to its trace.

14:02:11.408 INFO  [Projects] Project created { projectId: 'p_81f2' }
14:02:11.412 INFO  [Http] POST /projects 201 38ms
14:02:15.020 ERROR [Http] GET /api/stats 500 12ms
{"time":"2026-10-29T14:02:11.408Z","level":"info","scope":"Projects","message":"Project created","trace_id":"1ac71cdacfc998b028cb0a12aee24333","span_id":"c26a99096a72dd42","projectId":"p_81f2"}

Usage

+server.ts
import { json, type RequestHandler } from "@sveltejs/kit";

import { Logger } from "@zedensix/ui/server/logger";

const logger = new Logger("Projects");

export const POST: RequestHandler = async ({ request }) => {
	const { name } = await request.json();
	const projectId = `p_${crypto.randomUUID().slice(0, 4)}`;
	logger.info("Project created", { projectId, name });
	return json({ projectId }, { status: 201 });
};