[{"data":1,"prerenderedAt":3220},["ShallowReactive",2],{"navigation_docs":3,"-integrate-frameworks-sveltekit":500,"-integrate-frameworks-sveltekit-surround":3215},[4,30,80,118,283,415,470],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Start","\u002Fstart","1.start",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Learn","\u002Flearn","2.learn",[35,40,45,50,55,60,65,70,75],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":61,"path":62,"stem":63,"icon":64},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":66,"path":67,"stem":68,"icon":69},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":71,"path":72,"stem":73,"icon":74},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":76,"path":77,"stem":78,"icon":79},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":81,"path":82,"stem":83,"children":84,"page":29},"CLI","\u002Fcli","3.cli",[85,88,93,98,103,108,113],{"title":36,"path":86,"stem":87,"icon":44},"\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":89,"path":90,"stem":91,"icon":92},"map","\u002Fcli\u002Fmap","3.cli\u002F1.map","i-lucide-radar",{"title":94,"path":95,"stem":96,"icon":97},"Rules","\u002Fcli\u002Frules","3.cli\u002F2.rules","i-lucide-list-checks",{"title":99,"path":100,"stem":101,"icon":102},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F3.scoring","i-lucide-gauge",{"title":104,"path":105,"stem":106,"icon":107},"CI","\u002Fcli\u002Fci","3.cli\u002F4.ci","i-lucide-git-pull-request",{"title":109,"path":110,"stem":111,"icon":112},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F5.doctor","i-lucide-stethoscope",{"title":114,"path":115,"stem":116,"icon":117},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F6.telemetry","i-lucide-bar-chart-3",{"title":119,"path":120,"stem":121,"children":122,"page":29},"Integrate","\u002Fintegrate","4.integrate",[123,127,195],{"title":36,"path":124,"stem":125,"icon":126},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":128,"path":129,"stem":130,"children":131,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[132,135,175],{"title":36,"path":133,"stem":134,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":136,"path":137,"stem":138,"children":139,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[140,145,150,155,160,165,170],{"title":141,"path":142,"stem":143,"icon":144},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":146,"path":147,"stem":148,"icon":149},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","4.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":151,"path":152,"stem":153,"icon":154},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":156,"path":157,"stem":158,"icon":159},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":161,"path":162,"stem":163,"icon":164},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":166,"path":167,"stem":168,"icon":169},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":171,"path":172,"stem":173,"icon":174},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","4.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":176,"path":177,"stem":178,"children":179,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[180,185,190],{"title":181,"path":182,"stem":183,"icon":184},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":186,"path":187,"stem":188,"icon":189},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":191,"path":192,"stem":193,"icon":194},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":196,"path":197,"stem":198,"children":199,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[200,204,209,214,219,224,229,234,239,244,249,254,259,264,268,273,278],{"title":36,"path":201,"stem":202,"icon":203},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":205,"path":206,"stem":207,"icon":208},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":210,"path":211,"stem":212,"icon":213},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":215,"path":216,"stem":217,"icon":218},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":220,"path":221,"stem":222,"icon":223},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":225,"path":226,"stem":227,"icon":228},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":230,"path":231,"stem":232,"icon":233},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":235,"path":236,"stem":237,"icon":238},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":240,"path":241,"stem":242,"icon":243},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":245,"path":246,"stem":247,"icon":248},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":250,"path":251,"stem":252,"icon":253},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":255,"path":256,"stem":257,"icon":258},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":260,"path":261,"stem":262,"icon":263},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":265,"path":266,"stem":267,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":269,"path":270,"stem":271,"icon":272},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":274,"path":275,"stem":276,"icon":277},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":279,"path":280,"stem":281,"icon":282},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":284,"path":285,"stem":286,"children":287,"page":29},"Use Cases","\u002Fuse-cases","5.use-cases",[288,291,296,325,352,384,405,410],{"title":36,"path":289,"stem":290,"icon":97},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":292,"path":293,"stem":294,"icon":295},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":297,"icon":298,"path":299,"stem":300,"children":301,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[302,305,310,315,320],{"title":36,"path":303,"stem":304,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":306,"path":307,"stem":308,"icon":309},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":311,"path":312,"stem":313,"icon":314},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":316,"path":317,"stem":318,"icon":319},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":321,"path":322,"stem":323,"icon":324},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":326,"icon":327,"path":328,"stem":329,"children":330,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[331,334,339,344,348],{"title":36,"path":332,"stem":333,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":335,"path":336,"stem":337,"icon":338},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":340,"path":341,"stem":342,"icon":343},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":345,"path":346,"stem":347,"icon":295},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":349,"path":350,"stem":351,"icon":102},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":353,"icon":354,"path":355,"stem":356,"children":357,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[358,361,366,371,376,380],{"title":36,"path":359,"stem":360,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":362,"path":363,"stem":364,"icon":365},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":367,"path":368,"stem":369,"icon":370},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":372,"path":373,"stem":374,"icon":375},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":377,"path":378,"stem":379,"icon":354},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":381,"path":382,"stem":383,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":321,"icon":102,"path":385,"stem":386,"children":387,"page":29},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[388,391,396,401],{"title":36,"path":389,"stem":390,"icon":39},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":392,"path":393,"stem":394,"icon":395},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":397,"path":398,"stem":399,"icon":400},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":402,"path":403,"stem":404,"icon":79},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":406,"path":407,"stem":408,"icon":409},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":411,"path":412,"stem":413,"icon":414},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":416,"path":417,"stem":418,"children":419,"page":29},"Extend","\u002Fextend","6.extend",[420,424,429,434,439,443,447,451,455,460,465],{"title":36,"path":421,"stem":422,"icon":423},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":425,"path":426,"stem":427,"icon":428},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":430,"path":431,"stem":432,"icon":433},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":435,"path":436,"stem":437,"icon":438},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":381,"path":440,"stem":441,"icon":442},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":444,"path":445,"stem":446,"icon":423},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":448,"path":449,"stem":450,"icon":409},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":452,"path":453,"stem":454,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":456,"path":457,"stem":458,"icon":459},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":461,"path":462,"stem":463,"icon":464},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":466,"path":467,"stem":468,"icon":469},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":402,"path":471,"stem":472,"children":473,"page":29},"\u002Freference","7.reference",[474,479,482,487,491,496],{"title":475,"path":476,"stem":477,"icon":478},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":349,"path":480,"stem":481,"icon":102},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":483,"path":484,"stem":485,"icon":486},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":488,"path":489,"stem":490,"icon":354},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":492,"path":493,"stem":494,"icon":495},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":497,"path":498,"stem":499,"icon":409},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"id":501,"title":215,"body":502,"description":3205,"extension":3206,"links":3207,"meta":3211,"navigation":3212,"path":216,"seo":3213,"stem":217,"__hash__":3214},"docs\u002F4.integrate\u002Fframeworks\u002F03.sveltekit.md",{"type":503,"value":504,"toc":3184},"minimark",[505,529,573,577,582,653,657,839,846,850,908,912,1012,1015,1018,1364,1367,1432,1435,1441,1622,1753,1768,1775,1785,1987,1991,2012,2272,2275,2332,2335,2345,2349,2352,2546,2550,2557,2776,2788,2792,2798,2910,2914,2924,3077,3081,3122,3130,3140,3144,3151,3180],[506,507,508,509,513,514,517,518,521,522,517,525,528],"p",{},"The ",[510,511,512],"code",{},"evlog\u002Fsveltekit"," adapter provides ",[510,515,516],{},"handle"," and ",[510,519,520],{},"handleError"," hooks that auto-create a request-scoped logger accessible via ",[510,523,524],{},"event.locals.log",[510,526,527],{},"useLogger()",", emitting a wide event when the response completes.",[530,531,534,537,559],"prompt",{":actions":532,"description":533,"icon":218},"[\"copy\",\"cursor\",\"claude\"]","Set up evlog in my SvelteKit app",[506,535,536],{},"Set up evlog in my SvelteKit app.",[538,539,540,544,547,550,553,556],"ul",{},[541,542,543],"li",{},"Install evlog: pnpm add evlog",[541,545,546],{},"Add evlog\u002Fvite plugin to vite.config.ts with service name (handles auto-init, debug stripping)",[541,548,549],{},"Export handle and handleError from evlog\u002Fsveltekit in hooks.server.ts",[541,551,552],{},"Access the logger via event.locals.log or useLogger() in routes and services",[541,554,555],{},"Use log.set() to accumulate context, throw createError() for structured errors",[541,557,558],{},"Wide events are auto-emitted when each request completes",[506,560,561,562,568,569],{},"Docs: ",[563,564,565],"a",{"href":565,"rel":566},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Fsveltekit",[567],"nofollow","\nAdapters: ",[563,570,571],{"href":571,"rel":572},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Foverview",[567],[574,575,25],"h2",{"id":576},"quick-start",[578,579,581],"h3",{"id":580},"_1-install","1. Install",[583,584,585,610,624,638],"code-group",{},[586,587,593],"pre",{"className":588,"code":589,"filename":590,"language":591,"meta":592,"style":592},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog\n","pnpm","bash","",[510,594,595],{"__ignoreMap":592},[596,597,600,603,607],"span",{"class":598,"line":599},"line",1,[596,601,590],{"class":602},"sBMFI",[596,604,606],{"class":605},"sfazB"," add",[596,608,609],{"class":605}," evlog\n",[586,611,614],{"className":588,"code":612,"filename":613,"language":591,"meta":592,"style":592},"bun add evlog\n","bun",[510,615,616],{"__ignoreMap":592},[596,617,618,620,622],{"class":598,"line":599},[596,619,613],{"class":602},[596,621,606],{"class":605},[596,623,609],{"class":605},[586,625,628],{"className":588,"code":626,"filename":627,"language":591,"meta":592,"style":592},"yarn add evlog\n","yarn",[510,629,630],{"__ignoreMap":592},[596,631,632,634,636],{"class":598,"line":599},[596,633,627],{"class":602},[596,635,606],{"class":605},[596,637,609],{"class":605},[586,639,642],{"className":588,"code":640,"filename":641,"language":591,"meta":592,"style":592},"npm install evlog\n","npm",[510,643,644],{"__ignoreMap":592},[596,645,646,648,651],{"class":598,"line":599},[596,647,641],{"class":602},[596,649,650],{"class":605}," install",[596,652,609],{"class":605},[578,654,656],{"id":655},"_2-add-the-vite-plugin","2. Add the Vite plugin",[586,658,663],{"className":659,"code":660,"filename":661,"language":662,"meta":592,"style":592},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { sveltekit } from '@sveltejs\u002Fkit\u002Fvite'\nimport evlog from 'evlog\u002Fvite'\nimport { defineConfig } from 'vite'\n\nexport default defineConfig({\n  plugins: [\n    sveltekit(),\n    evlog({\n      service: 'my-api',\n    }),\n  ],\n})\n","vite.config.ts","typescript",[510,664,665,694,712,733,740,758,771,783,793,811,822,830],{"__ignoreMap":592},[596,666,667,671,675,679,682,685,688,691],{"class":598,"line":599},[596,668,670],{"class":669},"s7zQu","import",[596,672,674],{"class":673},"sMK4o"," {",[596,676,678],{"class":677},"sTEyZ"," sveltekit",[596,680,681],{"class":673}," }",[596,683,684],{"class":669}," from",[596,686,687],{"class":673}," '",[596,689,690],{"class":605},"@sveltejs\u002Fkit\u002Fvite",[596,692,693],{"class":673},"'\n",[596,695,697,699,702,705,707,710],{"class":598,"line":696},2,[596,698,670],{"class":669},[596,700,701],{"class":677}," evlog ",[596,703,704],{"class":669},"from",[596,706,687],{"class":673},[596,708,709],{"class":605},"evlog\u002Fvite",[596,711,693],{"class":673},[596,713,715,717,719,722,724,726,728,731],{"class":598,"line":714},3,[596,716,670],{"class":669},[596,718,674],{"class":673},[596,720,721],{"class":677}," defineConfig",[596,723,681],{"class":673},[596,725,684],{"class":669},[596,727,687],{"class":673},[596,729,730],{"class":605},"vite",[596,732,693],{"class":673},[596,734,736],{"class":598,"line":735},4,[596,737,739],{"emptyLinePlaceholder":738},true,"\n",[596,741,743,746,749,752,755],{"class":598,"line":742},5,[596,744,745],{"class":669},"export",[596,747,748],{"class":669}," default",[596,750,721],{"class":751},"s2Zo4",[596,753,754],{"class":677},"(",[596,756,757],{"class":673},"{\n",[596,759,761,765,768],{"class":598,"line":760},6,[596,762,764],{"class":763},"swJcz","  plugins",[596,766,767],{"class":673},":",[596,769,770],{"class":677}," [\n",[596,772,774,777,780],{"class":598,"line":773},7,[596,775,776],{"class":751},"    sveltekit",[596,778,779],{"class":677},"()",[596,781,782],{"class":673},",\n",[596,784,786,789,791],{"class":598,"line":785},8,[596,787,788],{"class":751},"    evlog",[596,790,754],{"class":677},[596,792,757],{"class":673},[596,794,796,799,801,803,806,809],{"class":598,"line":795},9,[596,797,798],{"class":763},"      service",[596,800,767],{"class":673},[596,802,687],{"class":673},[596,804,805],{"class":605},"my-api",[596,807,808],{"class":673},"'",[596,810,782],{"class":673},[596,812,814,817,820],{"class":598,"line":813},10,[596,815,816],{"class":673},"    }",[596,818,819],{"class":677},")",[596,821,782],{"class":673},[596,823,825,828],{"class":598,"line":824},11,[596,826,827],{"class":677},"  ]",[596,829,782],{"class":673},[596,831,833,836],{"class":598,"line":832},12,[596,834,835],{"class":673},"}",[596,837,838],{"class":677},")\n",[506,840,841,842,845],{},"See the ",[563,843,844],{"href":484},"Vite Plugin docs"," for all options.",[578,847,849],{"id":848},"_3-create-hooks","3. Create hooks",[586,851,854],{"className":659,"code":852,"filename":853,"language":662,"meta":592,"style":592},"import { createEvlogHooks } from 'evlog\u002Fsveltekit'\n\nexport const { handle, handleError } = createEvlogHooks()\n","src\u002Fhooks.server.ts",[510,855,856,875,879],{"__ignoreMap":592},[596,857,858,860,862,865,867,869,871,873],{"class":598,"line":599},[596,859,670],{"class":669},[596,861,674],{"class":673},[596,863,864],{"class":677}," createEvlogHooks",[596,866,681],{"class":673},[596,868,684],{"class":669},[596,870,687],{"class":673},[596,872,512],{"class":605},[596,874,693],{"class":673},[596,876,877],{"class":598,"line":696},[596,878,739],{"emptyLinePlaceholder":738},[596,880,881,883,887,889,892,895,898,900,903,905],{"class":598,"line":714},[596,882,745],{"class":669},[596,884,886],{"class":885},"spNyl"," const",[596,888,674],{"class":673},[596,890,891],{"class":677}," handle",[596,893,894],{"class":673},",",[596,896,897],{"class":677}," handleError ",[596,899,835],{"class":673},[596,901,902],{"class":673}," =",[596,904,864],{"class":751},[596,906,907],{"class":677},"()\n",[578,909,911],{"id":910},"_4-type-your-locals","4. Type your locals",[586,913,916],{"className":659,"code":914,"filename":915,"language":662,"meta":592,"style":592},"import type { RequestLogger } from 'evlog'\n\ndeclare global {\n  namespace App {\n    interface Locals {\n      log: RequestLogger\n    }\n  }\n}\n\nexport {}\n","src\u002Fapp.d.ts",[510,917,918,941,945,955,966,976,986,991,996,1001,1005],{"__ignoreMap":592},[596,919,920,922,925,927,930,932,934,936,939],{"class":598,"line":599},[596,921,670],{"class":669},[596,923,924],{"class":669}," type",[596,926,674],{"class":673},[596,928,929],{"class":677}," RequestLogger",[596,931,681],{"class":673},[596,933,684],{"class":669},[596,935,687],{"class":673},[596,937,938],{"class":605},"evlog",[596,940,693],{"class":673},[596,942,943],{"class":598,"line":696},[596,944,739],{"emptyLinePlaceholder":738},[596,946,947,950,953],{"class":598,"line":714},[596,948,949],{"class":885},"declare",[596,951,952],{"class":677}," global ",[596,954,757],{"class":673},[596,956,957,960,963],{"class":598,"line":735},[596,958,959],{"class":885},"  namespace",[596,961,962],{"class":602}," App",[596,964,965],{"class":673}," {\n",[596,967,968,971,974],{"class":598,"line":742},[596,969,970],{"class":885},"    interface",[596,972,973],{"class":602}," Locals",[596,975,965],{"class":673},[596,977,978,981,983],{"class":598,"line":760},[596,979,980],{"class":763},"      log",[596,982,767],{"class":673},[596,984,985],{"class":602}," RequestLogger\n",[596,987,988],{"class":598,"line":773},[596,989,990],{"class":673},"    }\n",[596,992,993],{"class":598,"line":785},[596,994,995],{"class":673},"  }\n",[596,997,998],{"class":598,"line":795},[596,999,1000],{"class":673},"}\n",[596,1002,1003],{"class":598,"line":813},[596,1004,739],{"emptyLinePlaceholder":738},[596,1006,1007,1009],{"class":598,"line":824},[596,1008,745],{"class":669},[596,1010,1011],{"class":673}," {}\n",[574,1013,46],{"id":1014},"wide-events",[506,1016,1017],{},"Build up context progressively through your handler. One request = one wide event:",[586,1019,1022],{"className":659,"code":1020,"filename":1021,"language":662,"meta":592,"style":592},"import { json } from '@sveltejs\u002Fkit'\nimport type { RequestHandler } from '.\u002F$types'\n\nexport const GET: RequestHandler = async ({ locals, params }) => {\n  locals.log.set({ user: { id: params.id } })\n\n  const user = await db.findUser(params.id)\n  locals.log.set({ user: { name: user.name, plan: user.plan } })\n\n  const orders = await db.findOrders(params.id)\n  locals.log.set({ orders: { count: orders.length, totalRevenue: sum(orders) } })\n\n  return json({ user, orders })\n}\n","src\u002Froutes\u002Fapi\u002Fusers\u002F[id]\u002F+server.ts",[510,1023,1024,1044,1066,1070,1108,1154,1158,1189,1243,1247,1275,1333,1337,1359],{"__ignoreMap":592},[596,1025,1026,1028,1030,1033,1035,1037,1039,1042],{"class":598,"line":599},[596,1027,670],{"class":669},[596,1029,674],{"class":673},[596,1031,1032],{"class":677}," json",[596,1034,681],{"class":673},[596,1036,684],{"class":669},[596,1038,687],{"class":673},[596,1040,1041],{"class":605},"@sveltejs\u002Fkit",[596,1043,693],{"class":673},[596,1045,1046,1048,1050,1052,1055,1057,1059,1061,1064],{"class":598,"line":696},[596,1047,670],{"class":669},[596,1049,924],{"class":669},[596,1051,674],{"class":673},[596,1053,1054],{"class":677}," RequestHandler",[596,1056,681],{"class":673},[596,1058,684],{"class":669},[596,1060,687],{"class":673},[596,1062,1063],{"class":605},".\u002F$types",[596,1065,693],{"class":673},[596,1067,1068],{"class":598,"line":714},[596,1069,739],{"emptyLinePlaceholder":738},[596,1071,1072,1074,1076,1079,1081,1083,1085,1088,1091,1095,1097,1100,1103,1106],{"class":598,"line":735},[596,1073,745],{"class":669},[596,1075,886],{"class":885},[596,1077,1078],{"class":677}," GET",[596,1080,767],{"class":673},[596,1082,1054],{"class":602},[596,1084,902],{"class":673},[596,1086,1087],{"class":885}," async",[596,1089,1090],{"class":673}," ({",[596,1092,1094],{"class":1093},"sHdIc"," locals",[596,1096,894],{"class":673},[596,1098,1099],{"class":1093}," params",[596,1101,1102],{"class":673}," })",[596,1104,1105],{"class":885}," =>",[596,1107,965],{"class":673},[596,1109,1110,1113,1116,1119,1121,1124,1126,1129,1132,1134,1136,1139,1141,1143,1145,1148,1150,1152],{"class":598,"line":742},[596,1111,1112],{"class":677},"  locals",[596,1114,1115],{"class":673},".",[596,1117,1118],{"class":677},"log",[596,1120,1115],{"class":673},[596,1122,1123],{"class":751},"set",[596,1125,754],{"class":763},[596,1127,1128],{"class":673},"{",[596,1130,1131],{"class":763}," user",[596,1133,767],{"class":673},[596,1135,674],{"class":673},[596,1137,1138],{"class":763}," id",[596,1140,767],{"class":673},[596,1142,1099],{"class":677},[596,1144,1115],{"class":673},[596,1146,1147],{"class":677},"id",[596,1149,681],{"class":673},[596,1151,681],{"class":673},[596,1153,838],{"class":763},[596,1155,1156],{"class":598,"line":760},[596,1157,739],{"emptyLinePlaceholder":738},[596,1159,1160,1163,1165,1167,1170,1173,1175,1178,1180,1183,1185,1187],{"class":598,"line":773},[596,1161,1162],{"class":885},"  const",[596,1164,1131],{"class":677},[596,1166,902],{"class":673},[596,1168,1169],{"class":669}," await",[596,1171,1172],{"class":677}," db",[596,1174,1115],{"class":673},[596,1176,1177],{"class":751},"findUser",[596,1179,754],{"class":763},[596,1181,1182],{"class":677},"params",[596,1184,1115],{"class":673},[596,1186,1147],{"class":677},[596,1188,838],{"class":763},[596,1190,1191,1193,1195,1197,1199,1201,1203,1205,1207,1209,1211,1214,1216,1218,1220,1223,1225,1228,1230,1232,1234,1237,1239,1241],{"class":598,"line":785},[596,1192,1112],{"class":677},[596,1194,1115],{"class":673},[596,1196,1118],{"class":677},[596,1198,1115],{"class":673},[596,1200,1123],{"class":751},[596,1202,754],{"class":763},[596,1204,1128],{"class":673},[596,1206,1131],{"class":763},[596,1208,767],{"class":673},[596,1210,674],{"class":673},[596,1212,1213],{"class":763}," name",[596,1215,767],{"class":673},[596,1217,1131],{"class":677},[596,1219,1115],{"class":673},[596,1221,1222],{"class":677},"name",[596,1224,894],{"class":673},[596,1226,1227],{"class":763}," plan",[596,1229,767],{"class":673},[596,1231,1131],{"class":677},[596,1233,1115],{"class":673},[596,1235,1236],{"class":677},"plan",[596,1238,681],{"class":673},[596,1240,681],{"class":673},[596,1242,838],{"class":763},[596,1244,1245],{"class":598,"line":795},[596,1246,739],{"emptyLinePlaceholder":738},[596,1248,1249,1251,1254,1256,1258,1260,1262,1265,1267,1269,1271,1273],{"class":598,"line":813},[596,1250,1162],{"class":885},[596,1252,1253],{"class":677}," orders",[596,1255,902],{"class":673},[596,1257,1169],{"class":669},[596,1259,1172],{"class":677},[596,1261,1115],{"class":673},[596,1263,1264],{"class":751},"findOrders",[596,1266,754],{"class":763},[596,1268,1182],{"class":677},[596,1270,1115],{"class":673},[596,1272,1147],{"class":677},[596,1274,838],{"class":763},[596,1276,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1300,1302,1304,1306,1309,1311,1314,1316,1319,1321,1324,1327,1329,1331],{"class":598,"line":824},[596,1278,1112],{"class":677},[596,1280,1115],{"class":673},[596,1282,1118],{"class":677},[596,1284,1115],{"class":673},[596,1286,1123],{"class":751},[596,1288,754],{"class":763},[596,1290,1128],{"class":673},[596,1292,1253],{"class":763},[596,1294,767],{"class":673},[596,1296,674],{"class":673},[596,1298,1299],{"class":763}," count",[596,1301,767],{"class":673},[596,1303,1253],{"class":677},[596,1305,1115],{"class":673},[596,1307,1308],{"class":677},"length",[596,1310,894],{"class":673},[596,1312,1313],{"class":763}," totalRevenue",[596,1315,767],{"class":673},[596,1317,1318],{"class":751}," sum",[596,1320,754],{"class":763},[596,1322,1323],{"class":677},"orders",[596,1325,1326],{"class":763},") ",[596,1328,835],{"class":673},[596,1330,681],{"class":673},[596,1332,838],{"class":763},[596,1334,1335],{"class":598,"line":832},[596,1336,739],{"emptyLinePlaceholder":738},[596,1338,1340,1343,1345,1347,1349,1351,1353,1355,1357],{"class":598,"line":1339},13,[596,1341,1342],{"class":669},"  return",[596,1344,1032],{"class":751},[596,1346,754],{"class":763},[596,1348,1128],{"class":673},[596,1350,1131],{"class":677},[596,1352,894],{"class":673},[596,1354,1253],{"class":677},[596,1356,681],{"class":673},[596,1358,838],{"class":763},[596,1360,1362],{"class":598,"line":1361},14,[596,1363,1000],{"class":673},[506,1365,1366],{},"All fields are merged into a single wide event emitted when the request completes:",[586,1368,1371],{"className":588,"code":1369,"filename":1370,"language":591,"meta":592,"style":592},"14:58:15 INFO [my-api] GET \u002Fapi\u002Fusers\u002Fusr_123 200 in 12ms\n  ├─ orders: count=2 totalRevenue=6298\n  ├─ user: id=usr_123 name=Alice plan=pro\n  └─ requestId: 4a8ff3a8-...\n","Terminal output",[510,1372,1373,1384,1405,1421],{"__ignoreMap":592},[596,1374,1375,1378,1381],{"class":598,"line":599},[596,1376,1377],{"class":602},"14:58:15",[596,1379,1380],{"class":605}," INFO",[596,1382,1383],{"class":677}," [my-api] GET \u002Fapi\u002Fusers\u002Fusr_123 200 in 12ms\n",[596,1385,1386,1389,1392,1395,1399,1402],{"class":598,"line":696},[596,1387,1388],{"class":602},"  ├─",[596,1390,1391],{"class":605}," orders:",[596,1393,1394],{"class":605}," count=",[596,1396,1398],{"class":1397},"sbssI","2",[596,1400,1401],{"class":605}," totalRevenue=",[596,1403,1404],{"class":1397},"6298\n",[596,1406,1407,1409,1412,1415,1418],{"class":598,"line":714},[596,1408,1388],{"class":602},[596,1410,1411],{"class":605}," user:",[596,1413,1414],{"class":605}," id=usr_123",[596,1416,1417],{"class":605}," name=Alice",[596,1419,1420],{"class":605}," plan=pro\n",[596,1422,1423,1426,1429],{"class":598,"line":735},[596,1424,1425],{"class":602},"  └─",[596,1427,1428],{"class":605}," requestId:",[596,1430,1431],{"class":605}," 4a8ff3a8-...\n",[574,1433,527],{"id":1434},"uselogger",[506,1436,1437,1438,1440],{},"Use ",[510,1439,527],{}," to access the request-scoped logger from anywhere in the call stack without passing locals through your service layer:",[586,1442,1445],{"className":659,"code":1443,"filename":1444,"language":662,"meta":592,"style":592},"import { useLogger } from 'evlog\u002Fsveltekit'\n\nexport async function findUser(id: string) {\n  const log = useLogger()\n  log.set({ user: { id } })\n\n  const user = await db.findUser(id)\n  log.set({ user: { name: user.name, plan: user.plan } })\n\n  return user\n}\n","src\u002Flib\u002Fservices\u002Fuser.ts",[510,1446,1447,1466,1470,1495,1508,1535,1539,1561,1607,1611,1618],{"__ignoreMap":592},[596,1448,1449,1451,1453,1456,1458,1460,1462,1464],{"class":598,"line":599},[596,1450,670],{"class":669},[596,1452,674],{"class":673},[596,1454,1455],{"class":677}," useLogger",[596,1457,681],{"class":673},[596,1459,684],{"class":669},[596,1461,687],{"class":673},[596,1463,512],{"class":605},[596,1465,693],{"class":673},[596,1467,1468],{"class":598,"line":696},[596,1469,739],{"emptyLinePlaceholder":738},[596,1471,1472,1474,1476,1479,1482,1484,1486,1488,1491,1493],{"class":598,"line":714},[596,1473,745],{"class":669},[596,1475,1087],{"class":885},[596,1477,1478],{"class":885}," function",[596,1480,1481],{"class":751}," findUser",[596,1483,754],{"class":673},[596,1485,1147],{"class":1093},[596,1487,767],{"class":673},[596,1489,1490],{"class":602}," string",[596,1492,819],{"class":673},[596,1494,965],{"class":673},[596,1496,1497,1499,1502,1504,1506],{"class":598,"line":735},[596,1498,1162],{"class":885},[596,1500,1501],{"class":677}," log",[596,1503,902],{"class":673},[596,1505,1455],{"class":751},[596,1507,907],{"class":763},[596,1509,1510,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533],{"class":598,"line":742},[596,1511,1512],{"class":677},"  log",[596,1514,1115],{"class":673},[596,1516,1123],{"class":751},[596,1518,754],{"class":763},[596,1520,1128],{"class":673},[596,1522,1131],{"class":763},[596,1524,767],{"class":673},[596,1526,674],{"class":673},[596,1528,1138],{"class":677},[596,1530,681],{"class":673},[596,1532,681],{"class":673},[596,1534,838],{"class":763},[596,1536,1537],{"class":598,"line":760},[596,1538,739],{"emptyLinePlaceholder":738},[596,1540,1541,1543,1545,1547,1549,1551,1553,1555,1557,1559],{"class":598,"line":773},[596,1542,1162],{"class":885},[596,1544,1131],{"class":677},[596,1546,902],{"class":673},[596,1548,1169],{"class":669},[596,1550,1172],{"class":677},[596,1552,1115],{"class":673},[596,1554,1177],{"class":751},[596,1556,754],{"class":763},[596,1558,1147],{"class":677},[596,1560,838],{"class":763},[596,1562,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583,1585,1587,1589,1591,1593,1595,1597,1599,1601,1603,1605],{"class":598,"line":785},[596,1564,1512],{"class":677},[596,1566,1115],{"class":673},[596,1568,1123],{"class":751},[596,1570,754],{"class":763},[596,1572,1128],{"class":673},[596,1574,1131],{"class":763},[596,1576,767],{"class":673},[596,1578,674],{"class":673},[596,1580,1213],{"class":763},[596,1582,767],{"class":673},[596,1584,1131],{"class":677},[596,1586,1115],{"class":673},[596,1588,1222],{"class":677},[596,1590,894],{"class":673},[596,1592,1227],{"class":763},[596,1594,767],{"class":673},[596,1596,1131],{"class":677},[596,1598,1115],{"class":673},[596,1600,1236],{"class":677},[596,1602,681],{"class":673},[596,1604,681],{"class":673},[596,1606,838],{"class":763},[596,1608,1609],{"class":598,"line":795},[596,1610,739],{"emptyLinePlaceholder":738},[596,1612,1613,1615],{"class":598,"line":813},[596,1614,1342],{"class":669},[596,1616,1617],{"class":677}," user\n",[596,1619,1620],{"class":598,"line":824},[596,1621,1000],{"class":673},[586,1623,1625],{"className":659,"code":1624,"filename":1021,"language":662,"meta":592,"style":592},"import { json } from '@sveltejs\u002Fkit'\nimport { findUser } from '$lib\u002Fservices\u002Fuser'\nimport type { RequestHandler } from '.\u002F$types'\n\nexport const GET: RequestHandler = async ({ params }) => {\n  const user = await findUser(params.id)\n  return json(user)\n}\n",[510,1626,1627,1645,1664,1684,1688,1714,1736,1749],{"__ignoreMap":592},[596,1628,1629,1631,1633,1635,1637,1639,1641,1643],{"class":598,"line":599},[596,1630,670],{"class":669},[596,1632,674],{"class":673},[596,1634,1032],{"class":677},[596,1636,681],{"class":673},[596,1638,684],{"class":669},[596,1640,687],{"class":673},[596,1642,1041],{"class":605},[596,1644,693],{"class":673},[596,1646,1647,1649,1651,1653,1655,1657,1659,1662],{"class":598,"line":696},[596,1648,670],{"class":669},[596,1650,674],{"class":673},[596,1652,1481],{"class":677},[596,1654,681],{"class":673},[596,1656,684],{"class":669},[596,1658,687],{"class":673},[596,1660,1661],{"class":605},"$lib\u002Fservices\u002Fuser",[596,1663,693],{"class":673},[596,1665,1666,1668,1670,1672,1674,1676,1678,1680,1682],{"class":598,"line":714},[596,1667,670],{"class":669},[596,1669,924],{"class":669},[596,1671,674],{"class":673},[596,1673,1054],{"class":677},[596,1675,681],{"class":673},[596,1677,684],{"class":669},[596,1679,687],{"class":673},[596,1681,1063],{"class":605},[596,1683,693],{"class":673},[596,1685,1686],{"class":598,"line":735},[596,1687,739],{"emptyLinePlaceholder":738},[596,1689,1690,1692,1694,1696,1698,1700,1702,1704,1706,1708,1710,1712],{"class":598,"line":742},[596,1691,745],{"class":669},[596,1693,886],{"class":885},[596,1695,1078],{"class":677},[596,1697,767],{"class":673},[596,1699,1054],{"class":602},[596,1701,902],{"class":673},[596,1703,1087],{"class":885},[596,1705,1090],{"class":673},[596,1707,1099],{"class":1093},[596,1709,1102],{"class":673},[596,1711,1105],{"class":885},[596,1713,965],{"class":673},[596,1715,1716,1718,1720,1722,1724,1726,1728,1730,1732,1734],{"class":598,"line":760},[596,1717,1162],{"class":885},[596,1719,1131],{"class":677},[596,1721,902],{"class":673},[596,1723,1169],{"class":669},[596,1725,1481],{"class":751},[596,1727,754],{"class":763},[596,1729,1182],{"class":677},[596,1731,1115],{"class":673},[596,1733,1147],{"class":677},[596,1735,838],{"class":763},[596,1737,1738,1740,1742,1744,1747],{"class":598,"line":773},[596,1739,1342],{"class":669},[596,1741,1032],{"class":751},[596,1743,754],{"class":763},[596,1745,1746],{"class":677},"user",[596,1748,838],{"class":763},[596,1750,1751],{"class":598,"line":785},[596,1752,1000],{"class":673},[506,1754,1755,1756,517,1758,1760,1761,1763,1764,1767],{},"Both ",[510,1757,524],{},[510,1759,527],{}," return the same logger instance. ",[510,1762,527],{}," uses ",[510,1765,1766],{},"AsyncLocalStorage"," to propagate the logger across async boundaries.",[574,1769,1771,1772,819],{"id":1770},"background-work-logfork","Background work (",[510,1773,1774],{},"log.fork",[506,1776,1437,1777,1780,1781,1115],{},[510,1778,1779],{},"locals.log.fork(label, fn)"," for a child wide event. See ",[563,1782,1784],{"href":1783},"\u002Flearn\u002Fwide-events#after-emit-sealing-and-background-work","Wide events — After emit",[586,1786,1789],{"className":659,"code":1787,"filename":1788,"language":662,"meta":592,"style":592},"import { useLogger } from 'evlog\u002Fsveltekit'\nimport type { RequestHandler } from '.\u002F$types'\n\nexport const POST: RequestHandler = async ({ locals }) => {\n  locals.log.fork!('process', async () => {\n    const log = useLogger()\n    log.set({ step: 'done' })\n  })\n  return new Response(JSON.stringify({ ok: true }))\n}\n","src\u002Froutes\u002Fapi\u002Forders\u002F+server.ts",[510,1790,1791,1809,1829,1833,1860,1896,1909,1938,1945,1983],{"__ignoreMap":592},[596,1792,1793,1795,1797,1799,1801,1803,1805,1807],{"class":598,"line":599},[596,1794,670],{"class":669},[596,1796,674],{"class":673},[596,1798,1455],{"class":677},[596,1800,681],{"class":673},[596,1802,684],{"class":669},[596,1804,687],{"class":673},[596,1806,512],{"class":605},[596,1808,693],{"class":673},[596,1810,1811,1813,1815,1817,1819,1821,1823,1825,1827],{"class":598,"line":696},[596,1812,670],{"class":669},[596,1814,924],{"class":669},[596,1816,674],{"class":673},[596,1818,1054],{"class":677},[596,1820,681],{"class":673},[596,1822,684],{"class":669},[596,1824,687],{"class":673},[596,1826,1063],{"class":605},[596,1828,693],{"class":673},[596,1830,1831],{"class":598,"line":714},[596,1832,739],{"emptyLinePlaceholder":738},[596,1834,1835,1837,1839,1842,1844,1846,1848,1850,1852,1854,1856,1858],{"class":598,"line":735},[596,1836,745],{"class":669},[596,1838,886],{"class":885},[596,1840,1841],{"class":677}," POST",[596,1843,767],{"class":673},[596,1845,1054],{"class":602},[596,1847,902],{"class":673},[596,1849,1087],{"class":885},[596,1851,1090],{"class":673},[596,1853,1094],{"class":1093},[596,1855,1102],{"class":673},[596,1857,1105],{"class":885},[596,1859,965],{"class":673},[596,1861,1862,1864,1866,1868,1870,1873,1876,1878,1880,1883,1885,1887,1889,1892,1894],{"class":598,"line":742},[596,1863,1112],{"class":677},[596,1865,1115],{"class":673},[596,1867,1118],{"class":677},[596,1869,1115],{"class":673},[596,1871,1872],{"class":751},"fork",[596,1874,1875],{"class":673},"!",[596,1877,754],{"class":763},[596,1879,808],{"class":673},[596,1881,1882],{"class":605},"process",[596,1884,808],{"class":673},[596,1886,894],{"class":673},[596,1888,1087],{"class":885},[596,1890,1891],{"class":673}," ()",[596,1893,1105],{"class":885},[596,1895,965],{"class":673},[596,1897,1898,1901,1903,1905,1907],{"class":598,"line":760},[596,1899,1900],{"class":885},"    const",[596,1902,1501],{"class":677},[596,1904,902],{"class":673},[596,1906,1455],{"class":751},[596,1908,907],{"class":763},[596,1910,1911,1914,1916,1918,1920,1922,1925,1927,1929,1932,1934,1936],{"class":598,"line":773},[596,1912,1913],{"class":677},"    log",[596,1915,1115],{"class":673},[596,1917,1123],{"class":751},[596,1919,754],{"class":763},[596,1921,1128],{"class":673},[596,1923,1924],{"class":763}," step",[596,1926,767],{"class":673},[596,1928,687],{"class":673},[596,1930,1931],{"class":605},"done",[596,1933,808],{"class":673},[596,1935,681],{"class":673},[596,1937,838],{"class":763},[596,1939,1940,1943],{"class":598,"line":785},[596,1941,1942],{"class":673},"  }",[596,1944,838],{"class":763},[596,1946,1947,1949,1952,1955,1957,1960,1962,1965,1967,1969,1972,1974,1978,1980],{"class":598,"line":795},[596,1948,1342],{"class":669},[596,1950,1951],{"class":673}," new",[596,1953,1954],{"class":751}," Response",[596,1956,754],{"class":763},[596,1958,1959],{"class":677},"JSON",[596,1961,1115],{"class":673},[596,1963,1964],{"class":751},"stringify",[596,1966,754],{"class":763},[596,1968,1128],{"class":673},[596,1970,1971],{"class":763}," ok",[596,1973,767],{"class":673},[596,1975,1977],{"class":1976},"sfNiH"," true",[596,1979,681],{"class":673},[596,1981,1982],{"class":763},"))\n",[596,1984,1985],{"class":598,"line":813},[596,1986,1000],{"class":673},[574,1988,1990],{"id":1989},"error-handling","Error Handling",[506,1992,1437,1993,1996,1997,2000,2001,2004,2005,2008,2009,2011],{},[510,1994,1995],{},"createError"," for structured errors with ",[510,1998,1999],{},"why",", ",[510,2002,2003],{},"fix",", and ",[510,2006,2007],{},"link"," fields. The ",[510,2010,520],{}," hook captures thrown errors automatically:",[586,2013,2016],{"className":659,"code":2014,"filename":2015,"language":662,"meta":592,"style":592},"import { json } from '@sveltejs\u002Fkit'\nimport { createError } from 'evlog'\nimport type { RequestHandler } from '.\u002F$types'\n\nexport const POST: RequestHandler = async ({ locals, request }) => {\n  const { cartId } = await request.json()\n  locals.log.set({ cart: { id: cartId } })\n\n  throw createError({\n    message: 'Payment failed',\n    status: 402,\n    why: 'Card declined by issuer',\n    fix: 'Try a different payment method',\n    link: 'https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined',\n  })\n}\n","src\u002Froutes\u002Fapi\u002Fcheckout\u002F+server.ts",[510,2017,2018,2036,2055,2075,2079,2110,2134,2169,2173,2184,2200,2212,2228,2244,2260,2267],{"__ignoreMap":592},[596,2019,2020,2022,2024,2026,2028,2030,2032,2034],{"class":598,"line":599},[596,2021,670],{"class":669},[596,2023,674],{"class":673},[596,2025,1032],{"class":677},[596,2027,681],{"class":673},[596,2029,684],{"class":669},[596,2031,687],{"class":673},[596,2033,1041],{"class":605},[596,2035,693],{"class":673},[596,2037,2038,2040,2042,2045,2047,2049,2051,2053],{"class":598,"line":696},[596,2039,670],{"class":669},[596,2041,674],{"class":673},[596,2043,2044],{"class":677}," createError",[596,2046,681],{"class":673},[596,2048,684],{"class":669},[596,2050,687],{"class":673},[596,2052,938],{"class":605},[596,2054,693],{"class":673},[596,2056,2057,2059,2061,2063,2065,2067,2069,2071,2073],{"class":598,"line":714},[596,2058,670],{"class":669},[596,2060,924],{"class":669},[596,2062,674],{"class":673},[596,2064,1054],{"class":677},[596,2066,681],{"class":673},[596,2068,684],{"class":669},[596,2070,687],{"class":673},[596,2072,1063],{"class":605},[596,2074,693],{"class":673},[596,2076,2077],{"class":598,"line":735},[596,2078,739],{"emptyLinePlaceholder":738},[596,2080,2081,2083,2085,2087,2089,2091,2093,2095,2097,2099,2101,2104,2106,2108],{"class":598,"line":742},[596,2082,745],{"class":669},[596,2084,886],{"class":885},[596,2086,1841],{"class":677},[596,2088,767],{"class":673},[596,2090,1054],{"class":602},[596,2092,902],{"class":673},[596,2094,1087],{"class":885},[596,2096,1090],{"class":673},[596,2098,1094],{"class":1093},[596,2100,894],{"class":673},[596,2102,2103],{"class":1093}," request",[596,2105,1102],{"class":673},[596,2107,1105],{"class":885},[596,2109,965],{"class":673},[596,2111,2112,2114,2116,2119,2121,2123,2125,2127,2129,2132],{"class":598,"line":760},[596,2113,1162],{"class":885},[596,2115,674],{"class":673},[596,2117,2118],{"class":677}," cartId",[596,2120,681],{"class":673},[596,2122,902],{"class":673},[596,2124,1169],{"class":669},[596,2126,2103],{"class":677},[596,2128,1115],{"class":673},[596,2130,2131],{"class":751},"json",[596,2133,907],{"class":763},[596,2135,2136,2138,2140,2142,2144,2146,2148,2150,2153,2155,2157,2159,2161,2163,2165,2167],{"class":598,"line":773},[596,2137,1112],{"class":677},[596,2139,1115],{"class":673},[596,2141,1118],{"class":677},[596,2143,1115],{"class":673},[596,2145,1123],{"class":751},[596,2147,754],{"class":763},[596,2149,1128],{"class":673},[596,2151,2152],{"class":763}," cart",[596,2154,767],{"class":673},[596,2156,674],{"class":673},[596,2158,1138],{"class":763},[596,2160,767],{"class":673},[596,2162,2118],{"class":677},[596,2164,681],{"class":673},[596,2166,681],{"class":673},[596,2168,838],{"class":763},[596,2170,2171],{"class":598,"line":785},[596,2172,739],{"emptyLinePlaceholder":738},[596,2174,2175,2178,2180,2182],{"class":598,"line":795},[596,2176,2177],{"class":669},"  throw",[596,2179,2044],{"class":751},[596,2181,754],{"class":763},[596,2183,757],{"class":673},[596,2185,2186,2189,2191,2193,2196,2198],{"class":598,"line":813},[596,2187,2188],{"class":763},"    message",[596,2190,767],{"class":673},[596,2192,687],{"class":673},[596,2194,2195],{"class":605},"Payment failed",[596,2197,808],{"class":673},[596,2199,782],{"class":673},[596,2201,2202,2205,2207,2210],{"class":598,"line":824},[596,2203,2204],{"class":763},"    status",[596,2206,767],{"class":673},[596,2208,2209],{"class":1397}," 402",[596,2211,782],{"class":673},[596,2213,2214,2217,2219,2221,2224,2226],{"class":598,"line":832},[596,2215,2216],{"class":763},"    why",[596,2218,767],{"class":673},[596,2220,687],{"class":673},[596,2222,2223],{"class":605},"Card declined by issuer",[596,2225,808],{"class":673},[596,2227,782],{"class":673},[596,2229,2230,2233,2235,2237,2240,2242],{"class":598,"line":1339},[596,2231,2232],{"class":763},"    fix",[596,2234,767],{"class":673},[596,2236,687],{"class":673},[596,2238,2239],{"class":605},"Try a different payment method",[596,2241,808],{"class":673},[596,2243,782],{"class":673},[596,2245,2246,2249,2251,2253,2256,2258],{"class":598,"line":1361},[596,2247,2248],{"class":763},"    link",[596,2250,767],{"class":673},[596,2252,687],{"class":673},[596,2254,2255],{"class":605},"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined",[596,2257,808],{"class":673},[596,2259,782],{"class":673},[596,2261,2263,2265],{"class":598,"line":2262},15,[596,2264,1942],{"class":673},[596,2266,838],{"class":763},[596,2268,2270],{"class":598,"line":2269},16,[596,2271,1000],{"class":673},[506,2273,2274],{},"The error is captured and logged with both the custom context and structured error fields:",[586,2276,2278],{"className":588,"code":2277,"filename":1370,"language":591,"meta":592,"style":592},"14:58:20 ERROR [my-api] POST \u002Fapi\u002Fcheckout 402 in 3ms\n  ├─ error: name=EvlogError message=Payment failed status=402\n  ├─ cart: id=cart_456\n  └─ requestId: 880a50ac-...\n",[510,2279,2280,2291,2313,2323],{"__ignoreMap":592},[596,2281,2282,2285,2288],{"class":598,"line":599},[596,2283,2284],{"class":602},"14:58:20",[596,2286,2287],{"class":605}," ERROR",[596,2289,2290],{"class":677}," [my-api] POST \u002Fapi\u002Fcheckout 402 in 3ms\n",[596,2292,2293,2295,2298,2301,2304,2307,2310],{"class":598,"line":696},[596,2294,1388],{"class":602},[596,2296,2297],{"class":605}," error:",[596,2299,2300],{"class":605}," name=EvlogError",[596,2302,2303],{"class":605}," message=Payment",[596,2305,2306],{"class":605}," failed",[596,2308,2309],{"class":605}," status=",[596,2311,2312],{"class":1397},"402\n",[596,2314,2315,2317,2320],{"class":598,"line":714},[596,2316,1388],{"class":602},[596,2318,2319],{"class":605}," cart:",[596,2321,2322],{"class":605}," id=cart_456\n",[596,2324,2325,2327,2329],{"class":598,"line":735},[596,2326,1425],{"class":602},[596,2328,1428],{"class":605},[596,2330,2331],{"class":605}," 880a50ac-...\n",[574,2333,475],{"id":2334},"configuration",[506,2336,841,2337,2340,2341,2344],{},[563,2338,2339],{"href":476},"Configuration reference"," for all available options (",[510,2342,2343],{},"initLogger",", middleware options, sampling, silent mode, etc.).",[574,2346,2348],{"id":2347},"drain-enrichers","Drain & Enrichers",[506,2350,2351],{},"Configure drain adapters and enrichers directly in the hooks options:",[586,2353,2355],{"className":659,"code":2354,"filename":853,"language":662,"meta":592,"style":592},"import { createEvlogHooks } from 'evlog\u002Fsveltekit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createUserAgentEnricher } from 'evlog\u002Fenrichers'\n\nconst userAgent = createUserAgentEnricher()\n\nexport const { handle, handleError } = createEvlogHooks({\n  drain: createAxiomDrain(),\n  enrich: (ctx) => {\n    userAgent(ctx)\n    ctx.event.region = process.env.FLY_REGION\n  },\n})\n",[510,2356,2357,2375,2395,2415,2419,2434,2438,2462,2475,2494,2505,2535,2540],{"__ignoreMap":592},[596,2358,2359,2361,2363,2365,2367,2369,2371,2373],{"class":598,"line":599},[596,2360,670],{"class":669},[596,2362,674],{"class":673},[596,2364,864],{"class":677},[596,2366,681],{"class":673},[596,2368,684],{"class":669},[596,2370,687],{"class":673},[596,2372,512],{"class":605},[596,2374,693],{"class":673},[596,2376,2377,2379,2381,2384,2386,2388,2390,2393],{"class":598,"line":696},[596,2378,670],{"class":669},[596,2380,674],{"class":673},[596,2382,2383],{"class":677}," createAxiomDrain",[596,2385,681],{"class":673},[596,2387,684],{"class":669},[596,2389,687],{"class":673},[596,2391,2392],{"class":605},"evlog\u002Faxiom",[596,2394,693],{"class":673},[596,2396,2397,2399,2401,2404,2406,2408,2410,2413],{"class":598,"line":714},[596,2398,670],{"class":669},[596,2400,674],{"class":673},[596,2402,2403],{"class":677}," createUserAgentEnricher",[596,2405,681],{"class":673},[596,2407,684],{"class":669},[596,2409,687],{"class":673},[596,2411,2412],{"class":605},"evlog\u002Fenrichers",[596,2414,693],{"class":673},[596,2416,2417],{"class":598,"line":735},[596,2418,739],{"emptyLinePlaceholder":738},[596,2420,2421,2424,2427,2430,2432],{"class":598,"line":742},[596,2422,2423],{"class":885},"const",[596,2425,2426],{"class":677}," userAgent ",[596,2428,2429],{"class":673},"=",[596,2431,2403],{"class":751},[596,2433,907],{"class":677},[596,2435,2436],{"class":598,"line":760},[596,2437,739],{"emptyLinePlaceholder":738},[596,2439,2440,2442,2444,2446,2448,2450,2452,2454,2456,2458,2460],{"class":598,"line":773},[596,2441,745],{"class":669},[596,2443,886],{"class":885},[596,2445,674],{"class":673},[596,2447,891],{"class":677},[596,2449,894],{"class":673},[596,2451,897],{"class":677},[596,2453,835],{"class":673},[596,2455,902],{"class":673},[596,2457,864],{"class":751},[596,2459,754],{"class":677},[596,2461,757],{"class":673},[596,2463,2464,2467,2469,2471,2473],{"class":598,"line":785},[596,2465,2466],{"class":763},"  drain",[596,2468,767],{"class":673},[596,2470,2383],{"class":751},[596,2472,779],{"class":677},[596,2474,782],{"class":673},[596,2476,2477,2480,2482,2485,2488,2490,2492],{"class":598,"line":795},[596,2478,2479],{"class":751},"  enrich",[596,2481,767],{"class":673},[596,2483,2484],{"class":673}," (",[596,2486,2487],{"class":1093},"ctx",[596,2489,819],{"class":673},[596,2491,1105],{"class":885},[596,2493,965],{"class":673},[596,2495,2496,2499,2501,2503],{"class":598,"line":813},[596,2497,2498],{"class":751},"    userAgent",[596,2500,754],{"class":763},[596,2502,2487],{"class":677},[596,2504,838],{"class":763},[596,2506,2507,2510,2512,2515,2517,2520,2522,2525,2527,2530,2532],{"class":598,"line":824},[596,2508,2509],{"class":677},"    ctx",[596,2511,1115],{"class":673},[596,2513,2514],{"class":677},"event",[596,2516,1115],{"class":673},[596,2518,2519],{"class":677},"region",[596,2521,902],{"class":673},[596,2523,2524],{"class":677}," process",[596,2526,1115],{"class":673},[596,2528,2529],{"class":677},"env",[596,2531,1115],{"class":673},[596,2533,2534],{"class":677},"FLY_REGION\n",[596,2536,2537],{"class":598,"line":832},[596,2538,2539],{"class":673},"  },\n",[596,2541,2542,2544],{"class":598,"line":1339},[596,2543,835],{"class":673},[596,2545,838],{"class":677},[578,2547,2549],{"id":2548},"pipeline-batching-retry","Pipeline (Batching & Retry)",[506,2551,2552,2553,2556],{},"For production, wrap your adapter with ",[510,2554,2555],{},"createDrainPipeline"," to batch events and retry on failure:",[586,2558,2560],{"className":659,"code":2559,"filename":853,"language":662,"meta":592,"style":592},"import type { DrainContext } from 'evlog'\nimport { createEvlogHooks } from 'evlog\u002Fsveltekit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>({\n  batch: { size: 50, intervalMs: 5000 },\n  retry: { maxAttempts: 3 },\n})\nconst drain = pipeline(createAxiomDrain())\n\nexport const { handle, handleError } = createEvlogHooks({ drain })\n",[510,2561,2562,2583,2601,2619,2639,2643,2667,2697,2716,2722,2742,2746],{"__ignoreMap":592},[596,2563,2564,2566,2568,2570,2573,2575,2577,2579,2581],{"class":598,"line":599},[596,2565,670],{"class":669},[596,2567,924],{"class":669},[596,2569,674],{"class":673},[596,2571,2572],{"class":677}," DrainContext",[596,2574,681],{"class":673},[596,2576,684],{"class":669},[596,2578,687],{"class":673},[596,2580,938],{"class":605},[596,2582,693],{"class":673},[596,2584,2585,2587,2589,2591,2593,2595,2597,2599],{"class":598,"line":696},[596,2586,670],{"class":669},[596,2588,674],{"class":673},[596,2590,864],{"class":677},[596,2592,681],{"class":673},[596,2594,684],{"class":669},[596,2596,687],{"class":673},[596,2598,512],{"class":605},[596,2600,693],{"class":673},[596,2602,2603,2605,2607,2609,2611,2613,2615,2617],{"class":598,"line":714},[596,2604,670],{"class":669},[596,2606,674],{"class":673},[596,2608,2383],{"class":677},[596,2610,681],{"class":673},[596,2612,684],{"class":669},[596,2614,687],{"class":673},[596,2616,2392],{"class":605},[596,2618,693],{"class":673},[596,2620,2621,2623,2625,2628,2630,2632,2634,2637],{"class":598,"line":735},[596,2622,670],{"class":669},[596,2624,674],{"class":673},[596,2626,2627],{"class":677}," createDrainPipeline",[596,2629,681],{"class":673},[596,2631,684],{"class":669},[596,2633,687],{"class":673},[596,2635,2636],{"class":605},"evlog\u002Fpipeline",[596,2638,693],{"class":673},[596,2640,2641],{"class":598,"line":742},[596,2642,739],{"emptyLinePlaceholder":738},[596,2644,2645,2647,2650,2652,2654,2657,2660,2663,2665],{"class":598,"line":760},[596,2646,2423],{"class":885},[596,2648,2649],{"class":677}," pipeline ",[596,2651,2429],{"class":673},[596,2653,2627],{"class":751},[596,2655,2656],{"class":673},"\u003C",[596,2658,2659],{"class":602},"DrainContext",[596,2661,2662],{"class":673},">",[596,2664,754],{"class":677},[596,2666,757],{"class":673},[596,2668,2669,2672,2674,2676,2679,2681,2684,2686,2689,2691,2694],{"class":598,"line":773},[596,2670,2671],{"class":763},"  batch",[596,2673,767],{"class":673},[596,2675,674],{"class":673},[596,2677,2678],{"class":763}," size",[596,2680,767],{"class":673},[596,2682,2683],{"class":1397}," 50",[596,2685,894],{"class":673},[596,2687,2688],{"class":763}," intervalMs",[596,2690,767],{"class":673},[596,2692,2693],{"class":1397}," 5000",[596,2695,2696],{"class":673}," },\n",[596,2698,2699,2702,2704,2706,2709,2711,2714],{"class":598,"line":785},[596,2700,2701],{"class":763},"  retry",[596,2703,767],{"class":673},[596,2705,674],{"class":673},[596,2707,2708],{"class":763}," maxAttempts",[596,2710,767],{"class":673},[596,2712,2713],{"class":1397}," 3",[596,2715,2696],{"class":673},[596,2717,2718,2720],{"class":598,"line":795},[596,2719,835],{"class":673},[596,2721,838],{"class":677},[596,2723,2724,2726,2729,2731,2734,2736,2739],{"class":598,"line":813},[596,2725,2423],{"class":885},[596,2727,2728],{"class":677}," drain ",[596,2730,2429],{"class":673},[596,2732,2733],{"class":751}," pipeline",[596,2735,754],{"class":677},[596,2737,2738],{"class":751},"createAxiomDrain",[596,2740,2741],{"class":677},"())\n",[596,2743,2744],{"class":598,"line":824},[596,2745,739],{"emptyLinePlaceholder":738},[596,2747,2748,2750,2752,2754,2756,2758,2760,2762,2764,2766,2768,2770,2772,2774],{"class":598,"line":832},[596,2749,745],{"class":669},[596,2751,886],{"class":885},[596,2753,674],{"class":673},[596,2755,891],{"class":677},[596,2757,894],{"class":673},[596,2759,897],{"class":677},[596,2761,835],{"class":673},[596,2763,902],{"class":673},[596,2765,864],{"class":751},[596,2767,754],{"class":677},[596,2769,1128],{"class":673},[596,2771,2728],{"class":677},[596,2773,835],{"class":673},[596,2775,838],{"class":677},[2777,2778,2780,2781,2784,2785,845],"callout",{"color":2779,"icon":13},"info","Call ",[510,2782,2783],{},"drain.flush()"," on server shutdown to ensure all buffered events are sent. See the ",[563,2786,2787],{"href":467},"Pipeline docs",[574,2789,2791],{"id":2790},"tail-sampling","Tail Sampling",[506,2793,1437,2794,2797],{},[510,2795,2796],{},"keep"," to force-retain specific events regardless of head sampling:",[586,2799,2801],{"className":659,"code":2800,"filename":853,"language":662,"meta":592,"style":592},"export const { handle, handleError } = createEvlogHooks({\n  drain: createAxiomDrain(),\n  keep: (ctx) => {\n    if (ctx.duration && ctx.duration > 2000) ctx.shouldKeep = true\n  },\n})\n",[510,2802,2803,2827,2839,2856,2900,2904],{"__ignoreMap":592},[596,2804,2805,2807,2809,2811,2813,2815,2817,2819,2821,2823,2825],{"class":598,"line":599},[596,2806,745],{"class":669},[596,2808,886],{"class":885},[596,2810,674],{"class":673},[596,2812,891],{"class":677},[596,2814,894],{"class":673},[596,2816,897],{"class":677},[596,2818,835],{"class":673},[596,2820,902],{"class":673},[596,2822,864],{"class":751},[596,2824,754],{"class":677},[596,2826,757],{"class":673},[596,2828,2829,2831,2833,2835,2837],{"class":598,"line":696},[596,2830,2466],{"class":763},[596,2832,767],{"class":673},[596,2834,2383],{"class":751},[596,2836,779],{"class":677},[596,2838,782],{"class":673},[596,2840,2841,2844,2846,2848,2850,2852,2854],{"class":598,"line":714},[596,2842,2843],{"class":751},"  keep",[596,2845,767],{"class":673},[596,2847,2484],{"class":673},[596,2849,2487],{"class":1093},[596,2851,819],{"class":673},[596,2853,1105],{"class":885},[596,2855,965],{"class":673},[596,2857,2858,2861,2863,2865,2867,2870,2873,2876,2878,2880,2883,2886,2888,2890,2892,2895,2897],{"class":598,"line":735},[596,2859,2860],{"class":669},"    if",[596,2862,2484],{"class":763},[596,2864,2487],{"class":677},[596,2866,1115],{"class":673},[596,2868,2869],{"class":677},"duration",[596,2871,2872],{"class":673}," &&",[596,2874,2875],{"class":677}," ctx",[596,2877,1115],{"class":673},[596,2879,2869],{"class":677},[596,2881,2882],{"class":673}," >",[596,2884,2885],{"class":1397}," 2000",[596,2887,1326],{"class":763},[596,2889,2487],{"class":677},[596,2891,1115],{"class":673},[596,2893,2894],{"class":677},"shouldKeep",[596,2896,902],{"class":673},[596,2898,2899],{"class":1976}," true\n",[596,2901,2902],{"class":598,"line":742},[596,2903,2539],{"class":673},[596,2905,2906,2908],{"class":598,"line":760},[596,2907,835],{"class":673},[596,2909,838],{"class":677},[574,2911,2913],{"id":2912},"route-filtering","Route Filtering",[506,2915,2916,2917,517,2920,2923],{},"Control which routes are logged with ",[510,2918,2919],{},"include",[510,2921,2922],{},"exclude"," patterns:",[586,2925,2927],{"className":659,"code":2926,"filename":853,"language":662,"meta":592,"style":592},"export const { handle, handleError } = createEvlogHooks({\n  include: ['\u002Fapi\u002F**'],\n  exclude: ['\u002F_internal\u002F**', '\u002Fhealth'],\n  routes: {\n    '\u002Fapi\u002Fauth\u002F**': { service: 'auth-service' },\n    '\u002Fapi\u002Fpayment\u002F**': { service: 'payment-service' },\n  },\n})\n",[510,2928,2929,2953,2975,3004,3013,3041,3067,3071],{"__ignoreMap":592},[596,2930,2931,2933,2935,2937,2939,2941,2943,2945,2947,2949,2951],{"class":598,"line":599},[596,2932,745],{"class":669},[596,2934,886],{"class":885},[596,2936,674],{"class":673},[596,2938,891],{"class":677},[596,2940,894],{"class":673},[596,2942,897],{"class":677},[596,2944,835],{"class":673},[596,2946,902],{"class":673},[596,2948,864],{"class":751},[596,2950,754],{"class":677},[596,2952,757],{"class":673},[596,2954,2955,2958,2960,2963,2965,2968,2970,2973],{"class":598,"line":696},[596,2956,2957],{"class":763},"  include",[596,2959,767],{"class":673},[596,2961,2962],{"class":677}," [",[596,2964,808],{"class":673},[596,2966,2967],{"class":605},"\u002Fapi\u002F**",[596,2969,808],{"class":673},[596,2971,2972],{"class":677},"]",[596,2974,782],{"class":673},[596,2976,2977,2980,2982,2984,2986,2989,2991,2993,2995,2998,3000,3002],{"class":598,"line":714},[596,2978,2979],{"class":763},"  exclude",[596,2981,767],{"class":673},[596,2983,2962],{"class":677},[596,2985,808],{"class":673},[596,2987,2988],{"class":605},"\u002F_internal\u002F**",[596,2990,808],{"class":673},[596,2992,894],{"class":673},[596,2994,687],{"class":673},[596,2996,2997],{"class":605},"\u002Fhealth",[596,2999,808],{"class":673},[596,3001,2972],{"class":677},[596,3003,782],{"class":673},[596,3005,3006,3009,3011],{"class":598,"line":735},[596,3007,3008],{"class":763},"  routes",[596,3010,767],{"class":673},[596,3012,965],{"class":673},[596,3014,3015,3018,3021,3023,3025,3027,3030,3032,3034,3037,3039],{"class":598,"line":742},[596,3016,3017],{"class":673},"    '",[596,3019,3020],{"class":763},"\u002Fapi\u002Fauth\u002F**",[596,3022,808],{"class":673},[596,3024,767],{"class":673},[596,3026,674],{"class":673},[596,3028,3029],{"class":763}," service",[596,3031,767],{"class":673},[596,3033,687],{"class":673},[596,3035,3036],{"class":605},"auth-service",[596,3038,808],{"class":673},[596,3040,2696],{"class":673},[596,3042,3043,3045,3048,3050,3052,3054,3056,3058,3060,3063,3065],{"class":598,"line":760},[596,3044,3017],{"class":673},[596,3046,3047],{"class":763},"\u002Fapi\u002Fpayment\u002F**",[596,3049,808],{"class":673},[596,3051,767],{"class":673},[596,3053,674],{"class":673},[596,3055,3029],{"class":763},[596,3057,767],{"class":673},[596,3059,687],{"class":673},[596,3061,3062],{"class":605},"payment-service",[596,3064,808],{"class":673},[596,3066,2696],{"class":673},[596,3068,3069],{"class":598,"line":773},[596,3070,2539],{"class":673},[596,3072,3073,3075],{"class":598,"line":785},[596,3074,835],{"class":673},[596,3076,838],{"class":677},[574,3078,3080],{"id":3079},"run-locally","Run Locally",[586,3082,3085],{"className":588,"code":3083,"filename":3084,"language":591,"meta":592,"style":592},"git clone https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog.git\ncd evlog\npnpm install\npnpm run example:sveltekit\n","Terminal",[510,3086,3087,3098,3105,3112],{"__ignoreMap":592},[596,3088,3089,3092,3095],{"class":598,"line":599},[596,3090,3091],{"class":602},"git",[596,3093,3094],{"class":605}," clone",[596,3096,3097],{"class":605}," https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog.git\n",[596,3099,3100,3103],{"class":598,"line":696},[596,3101,3102],{"class":751},"cd",[596,3104,609],{"class":605},[596,3106,3107,3109],{"class":598,"line":714},[596,3108,590],{"class":602},[596,3110,3111],{"class":605}," install\n",[596,3113,3114,3116,3119],{"class":598,"line":735},[596,3115,590],{"class":602},[596,3117,3118],{"class":605}," run",[596,3120,3121],{"class":605}," example:sveltekit\n",[506,3123,3124,3125,3129],{},"Open ",[563,3126,3127],{"href":3127,"rel":3128},"http:\u002F\u002Flocalhost:5173",[567]," to explore the interactive test UI.",[3131,3132,3133],"card-group",{},[3134,3135,3139],"card",{"icon":3136,"title":3137,"to":3138},"i-simple-icons-github","Source Code","https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog\u002Ftree\u002Fmain\u002Fexamples\u002Fsveltekit","Browse the complete SvelteKit example source on GitHub.",[574,3141,3143],{"id":3142},"next-steps","Next Steps",[506,3145,3146,3147,3150],{},"Deepen your ",[3148,3149,215],"strong",{}," integration:",[538,3152,3153,3158,3163,3168],{},[541,3154,3155,3157],{},[563,3156,46],{"href":47},": Design comprehensive events with context layering",[541,3159,3160,3162],{},[563,3161,128],{"href":133},": Send logs to Axiom, Sentry, PostHog, and more",[541,3164,3165,3167],{},[563,3166,61],{"href":62},": Control log volume with head and tail sampling",[541,3169,3170,3172,3173,2000,3175,2004,3177,3179],{},[563,3171,51],{"href":52},": Throw errors with ",[510,3174,1999],{},[510,3176,2003],{},[510,3178,2007],{}," fields",[3181,3182,3183],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":592,"searchDepth":696,"depth":696,"links":3185},[3186,3192,3193,3194,3196,3197,3198,3201,3202,3203,3204],{"id":576,"depth":696,"text":25,"children":3187},[3188,3189,3190,3191],{"id":580,"depth":714,"text":581},{"id":655,"depth":714,"text":656},{"id":848,"depth":714,"text":849},{"id":910,"depth":714,"text":911},{"id":1014,"depth":696,"text":46},{"id":1434,"depth":696,"text":527},{"id":1770,"depth":696,"text":3195},"Background work (log.fork)",{"id":1989,"depth":696,"text":1990},{"id":2334,"depth":696,"text":475},{"id":2347,"depth":696,"text":2348,"children":3199},[3200],{"id":2548,"depth":714,"text":2549},{"id":2790,"depth":696,"text":2791},{"id":2912,"depth":696,"text":2913},{"id":3079,"depth":696,"text":3080},{"id":3142,"depth":696,"text":3143},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in SvelteKit applications.","md",[3208],{"label":3137,"icon":3136,"to":3138,"color":3209,"variant":3210},"neutral","subtle",{},{"title":215,"icon":218},{"title":215,"description":3205},"KS3_yWR3nrZQOxLWRcLX9gF1JGVFlhPayO5cr-TQIaE",[3216,3218],{"title":210,"path":211,"stem":212,"description":3217,"icon":213,"children":-1},"Wide events, structured errors, drain pipeline, tail sampling, route-based services, error handling, and client-side logging in Next.js applications.",{"title":220,"path":221,"stem":222,"description":3219,"icon":223,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in Nitro v2 and v3 applications.",1785016748412]