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