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
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 });
};