[{"data":1,"prerenderedAt":2072},["ShallowReactive",2],{"navigation_docs":3,"-integrate-adapters-cloud-sentry":500,"-integrate-adapters-cloud-sentry-surround":2067},[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":502,"body":503,"description":2053,"extension":2054,"links":2055,"meta":2063,"navigation":2064,"path":157,"seo":2065,"stem":158,"__hash__":2066},"docs\u002F4.integrate\u002Fadapters\u002Fcloud\u002F04.sentry.md","Sentry Adapter",{"type":504,"value":505,"toc":2030},"minimark",[506,525,567,571,574,618,621,626,648,652,671,675,1254,1260,1263,1266,1296,1300,1349,1353,1360,1483,1487,1490,1571,1575,1682,1686,1692,1779,1783,1786,1815,1819,1823,1827,1836,1839,1843,1846,1853,1857,1863,1867,1870,1996,2000,2026],[507,508,509,515,516,520,521,524],"p",{},[510,511,156],"a",{"href":512,"rel":513},"https:\u002F\u002Fsentry.io",[514],"nofollow"," is an error tracking and performance monitoring platform. The evlog Sentry adapter sends your wide events as ",[517,518,519],"strong",{},"Sentry Structured Logs",", visible in ",[517,522,523],{},"Explore > Logs"," in the Sentry dashboard with high-cardinality searchable attributes.",[526,527,530,533,555],"prompt",{":actions":528,"description":529,"icon":159},"[\"copy\",\"cursor\",\"claude\"]","Add the Sentry drain adapter",[507,531,532],{},"Add the Sentry drain adapter to send evlog wide events to Sentry Logs.",[534,535,536,540,543,546,549,552],"ol",{},[537,538,539],"li",{},"Identify which framework I'm using and follow its evlog integration pattern",[537,541,542],{},"Install evlog if not already installed",[537,544,545],{},"Import createSentryDrain from 'evlog\u002Fsentry'",[537,547,548],{},"Wire createSentryDrain() into my framework's drain configuration",[537,550,551],{},"Set SENTRY_DSN environment variable",[537,553,554],{},"Test by triggering a request and checking Sentry > Explore > Logs",[507,556,557,558,562,563],{},"Adapter docs: ",[510,559,560],{"href":560,"rel":561},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry",[514],"\nFramework setup: ",[510,564,565],{"href":565,"rel":566},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Foverview",[514],[568,569,20],"h2",{"id":570},"installation",[507,572,573],{},"The Sentry adapter comes bundled with evlog:",[575,576,582],"pre",{"className":577,"code":578,"filename":579,"language":580,"meta":581,"style":581},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createSentryDrain } from 'evlog\u002Fsentry'\n","src\u002Findex.ts","typescript","",[583,584,585],"code",{"__ignoreMap":581},[586,587,590,594,598,602,605,608,611,615],"span",{"class":588,"line":589},"line",1,[586,591,593],{"class":592},"s7zQu","import",[586,595,597],{"class":596},"sMK4o"," {",[586,599,601],{"class":600},"sTEyZ"," createSentryDrain",[586,603,604],{"class":596}," }",[586,606,607],{"class":592}," from",[586,609,610],{"class":596}," '",[586,612,614],{"class":613},"sfazB","evlog\u002Fsentry",[586,616,617],{"class":596},"'\n",[568,619,25],{"id":620},"quick-start",[622,623,625],"h3",{"id":624},"_1-get-your-sentry-dsn","1. Get your Sentry DSN",[534,627,628,635,638],{},[537,629,630,631],{},"Create a ",[510,632,634],{"href":512,"rel":633},[514],"Sentry account",[537,636,637],{},"Create a new project (Node.js or JavaScript)",[537,639,640,641],{},"Find your DSN in ",[517,642,643,644,647],{},"Settings > Projects > ",[586,645,646],{},"Your Project"," > Client Keys (DSN)",[622,649,651],{"id":650},"_2-set-environment-variables","2. Set environment variables",[575,653,658],{"className":654,"code":655,"filename":656,"language":657,"meta":581,"style":581},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","SENTRY_DSN=https:\u002F\u002Fyour-public-key@o0.ingest.sentry.io\u002Fyour-project-id\n",".env","bash",[583,659,660],{"__ignoreMap":581},[586,661,662,665,668],{"class":588,"line":589},[586,663,664],{"class":600},"SENTRY_DSN",[586,666,667],{"class":596},"=",[586,669,670],{"class":613},"https:\u002F\u002Fyour-public-key@o0.ingest.sentry.io\u002Fyour-project-id\n",[622,672,674],{"id":673},"_3-wire-the-drain-to-your-framework","3. Wire the drain to your framework",[676,677,678,793,924,986,1040,1099,1153,1206],"code-group",{},[575,679,682],{"className":577,"code":680,"filename":681,"language":580,"meta":581,"style":581},"\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\nimport { createSentryDrain } from 'evlog\u002Fsentry'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createSentryDrain())\n})\n","Nuxt \u002F Nitro",[583,683,684,690,709,716,748,784],{"__ignoreMap":581},[586,685,686],{"class":588,"line":589},[586,687,689],{"class":688},"sHwdD","\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\n",[586,691,693,695,697,699,701,703,705,707],{"class":588,"line":692},2,[586,694,593],{"class":592},[586,696,597],{"class":596},[586,698,601],{"class":600},[586,700,604],{"class":596},[586,702,607],{"class":592},[586,704,610],{"class":596},[586,706,614],{"class":613},[586,708,617],{"class":596},[586,710,712],{"class":588,"line":711},3,[586,713,715],{"emptyLinePlaceholder":714},true,"\n",[586,717,719,722,725,729,732,734,738,741,745],{"class":588,"line":718},4,[586,720,721],{"class":592},"export",[586,723,724],{"class":592}," default",[586,726,728],{"class":727},"s2Zo4"," defineNitroPlugin",[586,730,731],{"class":600},"(",[586,733,731],{"class":596},[586,735,737],{"class":736},"sHdIc","nitroApp",[586,739,740],{"class":596},")",[586,742,744],{"class":743},"spNyl"," =>",[586,746,747],{"class":596}," {\n",[586,749,751,754,757,760,762,765,768,771,774,776,779,781],{"class":588,"line":750},5,[586,752,753],{"class":600},"  nitroApp",[586,755,756],{"class":596},".",[586,758,759],{"class":600},"hooks",[586,761,756],{"class":596},[586,763,764],{"class":727},"hook",[586,766,731],{"class":767},"swJcz",[586,769,770],{"class":596},"'",[586,772,773],{"class":613},"evlog:drain",[586,775,770],{"class":596},[586,777,778],{"class":596},",",[586,780,601],{"class":727},[586,782,783],{"class":767},"())\n",[586,785,787,790],{"class":588,"line":786},6,[586,788,789],{"class":596},"}",[586,791,792],{"class":600},")\n",[575,794,796],{"className":577,"code":795,"filename":210,"language":580,"meta":581,"style":581},"\u002F\u002F lib\u002Fevlog.ts\nimport { createEvlog } from 'evlog\u002Fnext'\nimport { createSentryDrain } from 'evlog\u002Fsentry'\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  drain: createSentryDrain(),\n})\n",[583,797,798,803,823,841,845,884,902,917],{"__ignoreMap":581},[586,799,800],{"class":588,"line":589},[586,801,802],{"class":688},"\u002F\u002F lib\u002Fevlog.ts\n",[586,804,805,807,809,812,814,816,818,821],{"class":588,"line":692},[586,806,593],{"class":592},[586,808,597],{"class":596},[586,810,811],{"class":600}," createEvlog",[586,813,604],{"class":596},[586,815,607],{"class":592},[586,817,610],{"class":596},[586,819,820],{"class":613},"evlog\u002Fnext",[586,822,617],{"class":596},[586,824,825,827,829,831,833,835,837,839],{"class":588,"line":711},[586,826,593],{"class":592},[586,828,597],{"class":596},[586,830,601],{"class":600},[586,832,604],{"class":596},[586,834,607],{"class":592},[586,836,610],{"class":596},[586,838,614],{"class":613},[586,840,617],{"class":596},[586,842,843],{"class":588,"line":718},[586,844,715],{"emptyLinePlaceholder":714},[586,846,847,849,852,854,857,859,862,864,867,869,872,874,877,879,881],{"class":588,"line":750},[586,848,721],{"class":592},[586,850,851],{"class":743}," const",[586,853,597],{"class":596},[586,855,856],{"class":600}," withEvlog",[586,858,778],{"class":596},[586,860,861],{"class":600}," useLogger",[586,863,778],{"class":596},[586,865,866],{"class":600}," log",[586,868,778],{"class":596},[586,870,871],{"class":600}," createError ",[586,873,789],{"class":596},[586,875,876],{"class":596}," =",[586,878,811],{"class":727},[586,880,731],{"class":600},[586,882,883],{"class":596},"{\n",[586,885,886,889,892,894,897,899],{"class":588,"line":786},[586,887,888],{"class":767},"  service",[586,890,891],{"class":596},":",[586,893,610],{"class":596},[586,895,896],{"class":613},"my-app",[586,898,770],{"class":596},[586,900,901],{"class":596},",\n",[586,903,905,908,910,912,915],{"class":588,"line":904},7,[586,906,907],{"class":767},"  drain",[586,909,891],{"class":596},[586,911,601],{"class":727},[586,913,914],{"class":600},"()",[586,916,901],{"class":596},[586,918,920,922],{"class":588,"line":919},8,[586,921,789],{"class":596},[586,923,792],{"class":600},[575,925,927],{"className":577,"code":926,"filename":240,"language":580,"meta":581,"style":581},"import { createSentryDrain } from 'evlog\u002Fsentry'\n\napp.use(evlog({ drain: createSentryDrain() }))\n",[583,928,929,947,951],{"__ignoreMap":581},[586,930,931,933,935,937,939,941,943,945],{"class":588,"line":589},[586,932,593],{"class":592},[586,934,597],{"class":596},[586,936,601],{"class":600},[586,938,604],{"class":596},[586,940,607],{"class":592},[586,942,610],{"class":596},[586,944,614],{"class":613},[586,946,617],{"class":596},[586,948,949],{"class":588,"line":692},[586,950,715],{"emptyLinePlaceholder":714},[586,952,953,956,958,961,963,966,968,971,974,976,978,981,983],{"class":588,"line":711},[586,954,955],{"class":600},"app",[586,957,756],{"class":596},[586,959,960],{"class":727},"use",[586,962,731],{"class":600},[586,964,965],{"class":727},"evlog",[586,967,731],{"class":600},[586,969,970],{"class":596},"{",[586,972,973],{"class":767}," drain",[586,975,891],{"class":596},[586,977,601],{"class":727},[586,979,980],{"class":600},"() ",[586,982,789],{"class":596},[586,984,985],{"class":600},"))\n",[575,987,988],{"className":577,"code":926,"filename":235,"language":580,"meta":581,"style":581},[583,989,990,1008,1012],{"__ignoreMap":581},[586,991,992,994,996,998,1000,1002,1004,1006],{"class":588,"line":589},[586,993,593],{"class":592},[586,995,597],{"class":596},[586,997,601],{"class":600},[586,999,604],{"class":596},[586,1001,607],{"class":592},[586,1003,610],{"class":596},[586,1005,614],{"class":613},[586,1007,617],{"class":596},[586,1009,1010],{"class":588,"line":692},[586,1011,715],{"emptyLinePlaceholder":714},[586,1013,1014,1016,1018,1020,1022,1024,1026,1028,1030,1032,1034,1036,1038],{"class":588,"line":711},[586,1015,955],{"class":600},[586,1017,756],{"class":596},[586,1019,960],{"class":727},[586,1021,731],{"class":600},[586,1023,965],{"class":727},[586,1025,731],{"class":600},[586,1027,970],{"class":596},[586,1029,973],{"class":767},[586,1031,891],{"class":596},[586,1033,601],{"class":727},[586,1035,980],{"class":600},[586,1037,789],{"class":596},[586,1039,985],{"class":600},[575,1041,1043],{"className":577,"code":1042,"filename":245,"language":580,"meta":581,"style":581},"import { createSentryDrain } from 'evlog\u002Fsentry'\n\nawait app.register(evlog, { drain: createSentryDrain() })\n",[583,1044,1045,1063,1067],{"__ignoreMap":581},[586,1046,1047,1049,1051,1053,1055,1057,1059,1061],{"class":588,"line":589},[586,1048,593],{"class":592},[586,1050,597],{"class":596},[586,1052,601],{"class":600},[586,1054,604],{"class":596},[586,1056,607],{"class":592},[586,1058,610],{"class":596},[586,1060,614],{"class":613},[586,1062,617],{"class":596},[586,1064,1065],{"class":588,"line":692},[586,1066,715],{"emptyLinePlaceholder":714},[586,1068,1069,1072,1075,1077,1080,1083,1085,1087,1089,1091,1093,1095,1097],{"class":588,"line":711},[586,1070,1071],{"class":592},"await",[586,1073,1074],{"class":600}," app",[586,1076,756],{"class":596},[586,1078,1079],{"class":727},"register",[586,1081,1082],{"class":600},"(evlog",[586,1084,778],{"class":596},[586,1086,597],{"class":596},[586,1088,973],{"class":767},[586,1090,891],{"class":596},[586,1092,601],{"class":727},[586,1094,980],{"class":600},[586,1096,789],{"class":596},[586,1098,792],{"class":600},[575,1100,1101],{"className":577,"code":926,"filename":250,"language":580,"meta":581,"style":581},[583,1102,1103,1121,1125],{"__ignoreMap":581},[586,1104,1105,1107,1109,1111,1113,1115,1117,1119],{"class":588,"line":589},[586,1106,593],{"class":592},[586,1108,597],{"class":596},[586,1110,601],{"class":600},[586,1112,604],{"class":596},[586,1114,607],{"class":592},[586,1116,610],{"class":596},[586,1118,614],{"class":613},[586,1120,617],{"class":596},[586,1122,1123],{"class":588,"line":692},[586,1124,715],{"emptyLinePlaceholder":714},[586,1126,1127,1129,1131,1133,1135,1137,1139,1141,1143,1145,1147,1149,1151],{"class":588,"line":711},[586,1128,955],{"class":600},[586,1130,756],{"class":596},[586,1132,960],{"class":727},[586,1134,731],{"class":600},[586,1136,965],{"class":727},[586,1138,731],{"class":600},[586,1140,970],{"class":596},[586,1142,973],{"class":767},[586,1144,891],{"class":596},[586,1146,601],{"class":727},[586,1148,980],{"class":600},[586,1150,789],{"class":596},[586,1152,985],{"class":600},[575,1154,1156],{"className":577,"code":1155,"filename":230,"language":580,"meta":581,"style":581},"import { createSentryDrain } from 'evlog\u002Fsentry'\n\nEvlogModule.forRoot({ drain: createSentryDrain() })\n",[583,1157,1158,1176,1180],{"__ignoreMap":581},[586,1159,1160,1162,1164,1166,1168,1170,1172,1174],{"class":588,"line":589},[586,1161,593],{"class":592},[586,1163,597],{"class":596},[586,1165,601],{"class":600},[586,1167,604],{"class":596},[586,1169,607],{"class":592},[586,1171,610],{"class":596},[586,1173,614],{"class":613},[586,1175,617],{"class":596},[586,1177,1178],{"class":588,"line":692},[586,1179,715],{"emptyLinePlaceholder":714},[586,1181,1182,1185,1187,1190,1192,1194,1196,1198,1200,1202,1204],{"class":588,"line":711},[586,1183,1184],{"class":600},"EvlogModule",[586,1186,756],{"class":596},[586,1188,1189],{"class":727},"forRoot",[586,1191,731],{"class":600},[586,1193,970],{"class":596},[586,1195,973],{"class":767},[586,1197,891],{"class":596},[586,1199,601],{"class":727},[586,1201,980],{"class":600},[586,1203,789],{"class":596},[586,1205,792],{"class":600},[575,1207,1209],{"className":577,"code":1208,"filename":265,"language":580,"meta":581,"style":581},"import { createSentryDrain } from 'evlog\u002Fsentry'\n\ninitLogger({ drain: createSentryDrain() })\n",[583,1210,1211,1229,1233],{"__ignoreMap":581},[586,1212,1213,1215,1217,1219,1221,1223,1225,1227],{"class":588,"line":589},[586,1214,593],{"class":592},[586,1216,597],{"class":596},[586,1218,601],{"class":600},[586,1220,604],{"class":596},[586,1222,607],{"class":592},[586,1224,610],{"class":596},[586,1226,614],{"class":613},[586,1228,617],{"class":596},[586,1230,1231],{"class":588,"line":692},[586,1232,715],{"emptyLinePlaceholder":714},[586,1234,1235,1238,1240,1242,1244,1246,1248,1250,1252],{"class":588,"line":711},[586,1236,1237],{"class":727},"initLogger",[586,1239,731],{"class":600},[586,1241,970],{"class":596},[586,1243,973],{"class":767},[586,1245,891],{"class":596},[586,1247,601],{"class":727},[586,1249,980],{"class":600},[586,1251,789],{"class":596},[586,1253,792],{"class":600},[507,1255,1256,1257,1259],{},"That's it! Your logs will now appear in ",[517,1258,523],{}," in Sentry.",[568,1261,475],{"id":1262},"configuration",[507,1264,1265],{},"The adapter reads configuration from multiple sources (highest priority first):",[534,1267,1268,1277,1287],{},[537,1269,1270,1273,1274],{},[517,1271,1272],{},"Overrides"," passed to ",[583,1275,1276],{},"createSentryDrain()",[537,1278,1279,1282,1283,1286],{},[517,1280,1281],{},"Runtime config"," at ",[583,1284,1285],{},"runtimeConfig.sentry"," (Nuxt\u002FNitro only)",[537,1288,1289,1292,1293,740],{},[517,1290,1291],{},"Environment variables"," (",[583,1294,1295],{},"SENTRY_*",[622,1297,1299],{"id":1298},"environment-variables","Environment Variables",[1301,1302,1303,1316],"table",{},[1304,1305,1306],"thead",{},[1307,1308,1309,1313],"tr",{},[1310,1311,1312],"th",{},"Variable",[1310,1314,1315],{},"Description",[1317,1318,1319,1329,1339],"tbody",{},[1307,1320,1321,1326],{},[1322,1323,1324],"td",{},[583,1325,664],{},[1322,1327,1328],{},"Sentry DSN (required)",[1307,1330,1331,1336],{},[1322,1332,1333],{},[583,1334,1335],{},"SENTRY_ENVIRONMENT",[1322,1337,1338],{},"Environment name override",[1307,1340,1341,1346],{},[1322,1342,1343],{},[583,1344,1345],{},"SENTRY_RELEASE",[1322,1347,1348],{},"Release version override",[622,1350,1352],{"id":1351},"runtime-config-nuxt-only","Runtime Config (Nuxt only)",[507,1354,1355,1356,1359],{},"Configure via ",[583,1357,1358],{},"nuxt.config.ts"," for type-safe configuration:",[575,1361,1363],{"className":577,"code":1362,"filename":1358,"language":580,"meta":581,"style":581},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    sentry: {\n      dsn: '', \u002F\u002F Set via SENTRY_DSN\n      environment: 'production',\n      release: '1.0.0',\n    },\n  },\n})\n",[583,1364,1365,1378,1400,1409,1418,1433,1449,1465,1470,1476],{"__ignoreMap":581},[586,1366,1367,1369,1371,1374,1376],{"class":588,"line":589},[586,1368,721],{"class":592},[586,1370,724],{"class":592},[586,1372,1373],{"class":727}," defineNuxtConfig",[586,1375,731],{"class":600},[586,1377,883],{"class":596},[586,1379,1380,1383,1385,1388,1390,1393,1395,1398],{"class":588,"line":692},[586,1381,1382],{"class":767},"  modules",[586,1384,891],{"class":596},[586,1386,1387],{"class":600}," [",[586,1389,770],{"class":596},[586,1391,1392],{"class":613},"evlog\u002Fnuxt",[586,1394,770],{"class":596},[586,1396,1397],{"class":600},"]",[586,1399,901],{"class":596},[586,1401,1402,1405,1407],{"class":588,"line":711},[586,1403,1404],{"class":767},"  evlog",[586,1406,891],{"class":596},[586,1408,747],{"class":596},[586,1410,1411,1414,1416],{"class":588,"line":718},[586,1412,1413],{"class":767},"    sentry",[586,1415,891],{"class":596},[586,1417,747],{"class":596},[586,1419,1420,1423,1425,1428,1430],{"class":588,"line":750},[586,1421,1422],{"class":767},"      dsn",[586,1424,891],{"class":596},[586,1426,1427],{"class":596}," ''",[586,1429,778],{"class":596},[586,1431,1432],{"class":688}," \u002F\u002F Set via SENTRY_DSN\n",[586,1434,1435,1438,1440,1442,1445,1447],{"class":588,"line":786},[586,1436,1437],{"class":767},"      environment",[586,1439,891],{"class":596},[586,1441,610],{"class":596},[586,1443,1444],{"class":613},"production",[586,1446,770],{"class":596},[586,1448,901],{"class":596},[586,1450,1451,1454,1456,1458,1461,1463],{"class":588,"line":904},[586,1452,1453],{"class":767},"      release",[586,1455,891],{"class":596},[586,1457,610],{"class":596},[586,1459,1460],{"class":613},"1.0.0",[586,1462,770],{"class":596},[586,1464,901],{"class":596},[586,1466,1467],{"class":588,"line":919},[586,1468,1469],{"class":596},"    },\n",[586,1471,1473],{"class":588,"line":1472},9,[586,1474,1475],{"class":596},"  },\n",[586,1477,1479,1481],{"class":588,"line":1478},10,[586,1480,789],{"class":596},[586,1482,792],{"class":600},[622,1484,1486],{"id":1485},"override-options","Override Options",[507,1488,1489],{},"Pass options directly to override any configuration:",[575,1491,1494],{"className":577,"code":1492,"filename":1493,"language":580,"meta":581,"style":581},"const drain = createSentryDrain({\n  dsn: 'https:\u002F\u002Fkey@o0.ingest.sentry.io\u002F123',\n  tags: { team: 'backend' },\n  timeout: 10000,\n})\n","server\u002Fplugins\u002Fevlog-drain.ts",[583,1495,1496,1512,1528,1552,1565],{"__ignoreMap":581},[586,1497,1498,1501,1504,1506,1508,1510],{"class":588,"line":589},[586,1499,1500],{"class":743},"const",[586,1502,1503],{"class":600}," drain ",[586,1505,667],{"class":596},[586,1507,601],{"class":727},[586,1509,731],{"class":600},[586,1511,883],{"class":596},[586,1513,1514,1517,1519,1521,1524,1526],{"class":588,"line":692},[586,1515,1516],{"class":767},"  dsn",[586,1518,891],{"class":596},[586,1520,610],{"class":596},[586,1522,1523],{"class":613},"https:\u002F\u002Fkey@o0.ingest.sentry.io\u002F123",[586,1525,770],{"class":596},[586,1527,901],{"class":596},[586,1529,1530,1533,1535,1537,1540,1542,1544,1547,1549],{"class":588,"line":711},[586,1531,1532],{"class":767},"  tags",[586,1534,891],{"class":596},[586,1536,597],{"class":596},[586,1538,1539],{"class":767}," team",[586,1541,891],{"class":596},[586,1543,610],{"class":596},[586,1545,1546],{"class":613},"backend",[586,1548,770],{"class":596},[586,1550,1551],{"class":596}," },\n",[586,1553,1554,1557,1559,1563],{"class":588,"line":718},[586,1555,1556],{"class":767},"  timeout",[586,1558,891],{"class":596},[586,1560,1562],{"class":1561},"sbssI"," 10000",[586,1564,901],{"class":596},[586,1566,1567,1569],{"class":588,"line":750},[586,1568,789],{"class":596},[586,1570,792],{"class":600},[622,1572,1574],{"id":1573},"full-configuration-reference","Full Configuration Reference",[1301,1576,1577,1592],{},[1304,1578,1579],{},[1307,1580,1581,1584,1587,1590],{},[1310,1582,1583],{},"Option",[1310,1585,1586],{},"Type",[1310,1588,1589],{},"Default",[1310,1591,1315],{},[1317,1593,1594,1611,1628,1645,1662],{},[1307,1595,1596,1601,1606,1609],{},[1322,1597,1598],{},[583,1599,1600],{},"dsn",[1322,1602,1603],{},[583,1604,1605],{},"string",[1322,1607,1608],{},"-",[1322,1610,1328],{},[1307,1612,1613,1618,1622,1625],{},[1322,1614,1615],{},[583,1616,1617],{},"environment",[1322,1619,1620],{},[583,1621,1605],{},[1322,1623,1624],{},"Event environment",[1322,1626,1627],{},"Environment name",[1307,1629,1630,1635,1639,1642],{},[1322,1631,1632],{},[583,1633,1634],{},"release",[1322,1636,1637],{},[583,1638,1605],{},[1322,1640,1641],{},"Event version",[1322,1643,1644],{},"Release version",[1307,1646,1647,1652,1657,1659],{},[1322,1648,1649],{},[583,1650,1651],{},"tags",[1322,1653,1654],{},[583,1655,1656],{},"Record\u003Cstring, string>",[1322,1658,1608],{},[1322,1660,1661],{},"Additional attributes to attach",[1307,1663,1664,1669,1674,1679],{},[1322,1665,1666],{},[583,1667,1668],{},"timeout",[1322,1670,1671],{},[583,1672,1673],{},"number",[1322,1675,1676],{},[583,1677,1678],{},"5000",[1322,1680,1681],{},"Request timeout in milliseconds",[568,1683,1685],{"id":1684},"log-transformation","Log Transformation",[507,1687,1688,1689,891],{},"evlog wide events are converted to Sentry Logs using ",[583,1690,1691],{},"toSentryLog()",[1693,1694,1695,1714,1732,1749,1755,1769],"ul",{},[537,1696,1697,1700,1701,1704,1705,1704,1708,1704,1711,740],{},[517,1698,1699],{},"Level mapping",": evlog levels map directly (",[583,1702,1703],{},"debug",", ",[583,1706,1707],{},"info",[583,1709,1710],{},"warn",[583,1712,1713],{},"error",[537,1715,1716,1719,1720,1704,1723,1704,1726,1704,1729,740],{},[517,1717,1718],{},"Severity numbers",": Follow the OpenTelemetry spec (",[583,1721,1722],{},"debug=5",[583,1724,1725],{},"info=9",[583,1727,1728],{},"warn=13",[583,1730,1731],{},"error=17",[537,1733,1734,1737,1738,1704,1741,1744,1745,1748],{},[517,1735,1736],{},"Body",": Derived from the event's ",[583,1739,1740],{},"message",[583,1742,1743],{},"action",", or ",[583,1746,1747],{},"path"," fields (first available)",[537,1750,1751,1754],{},[517,1752,1753],{},"Attributes",": All wide event fields are sent as typed attributes (string, integer, double, boolean). Complex objects are serialized to JSON strings.",[537,1756,1757,1760,1761,1764,1765,1768],{},[517,1758,1759],{},"Sentry attributes",": ",[583,1762,1763],{},"sentry.environment"," and ",[583,1766,1767],{},"sentry.release"," are set automatically",[537,1770,1771,1774,1775,1778],{},[517,1772,1773],{},"Trace ID",": Uses ",[583,1776,1777],{},"event.traceId"," if available, otherwise generates a random one",[568,1780,1782],{"id":1781},"querying-logs-in-sentry","Querying Logs in Sentry",[507,1784,1785],{},"evlog sends wide events as structured logs. In the Sentry dashboard:",[1693,1787,1788,1793,1805],{},[537,1789,1790,1792],{},[517,1791,523],{},": View all evlog wide events with full attribute search",[537,1794,1795,1760,1798,1704,1801,1804],{},[517,1796,1797],{},"Filter by attributes",[583,1799,1800],{},"service:my-app",[583,1802,1803],{},"level:error",", or any wide event field",[537,1806,1807,1810,1811,1814],{},[517,1808,1809],{},"Trace correlation",": Logs are linked to traces via ",[583,1812,1813],{},"trace_id"," for cross-referencing",[1816,1817,1818],"callout",{"color":1707,"icon":13},"Sentry Structured Logs support high-cardinality attributes, making them a great fit for evlog's wide events. Every field in your wide event becomes a searchable attribute in Sentry.",[568,1820,1822],{"id":1821},"troubleshooting","Troubleshooting",[622,1824,1826],{"id":1825},"missing-dsn-error","Missing DSN error",[575,1828,1834],{"className":1829,"code":1831,"filename":1832,"language":1833,"meta":581},[1830],"language-text","[evlog\u002Fsentry] Missing DSN. Set SENTRY_DSN env var or pass to createSentryDrain()\n","Console","text",[583,1835,1831],{"__ignoreMap":581},[507,1837,1838],{},"Make sure your environment variable is set and the server was restarted after adding it.",[622,1840,1842],{"id":1841},"invalid-dsn","Invalid DSN",[507,1844,1845],{},"If the DSN is malformed (missing public key or project ID), the adapter will throw an error. Verify your DSN format:",[575,1847,1851],{"className":1848,"code":1849,"filename":1850,"language":1833,"meta":581},[1830],"https:\u002F\u002F\u003Cpublic-key>@\u003Chost>\u002F\u003Cproject-id>\n","Sentry DSN format",[583,1852,1849],{"__ignoreMap":581},[622,1854,1856],{"id":1855},"_401-unauthorized","401 Unauthorized",[507,1858,1859,1860,756],{},"Your DSN may be revoked or invalid. Generate a new DSN in ",[517,1861,1862],{},"Settings > Projects > Client Keys (DSN)",[568,1864,1866],{"id":1865},"direct-api-usage","Direct API Usage",[507,1868,1869],{},"For advanced use cases, you can use the lower-level functions:",[575,1871,1874],{"className":577,"code":1872,"filename":1873,"language":580,"meta":581,"style":581},"import { sendToSentry, sendBatchToSentry } from 'evlog\u002Fsentry'\n\n\u002F\u002F Send a single event as a Sentry log\nawait sendToSentry(event, {\n  dsn: process.env.SENTRY_DSN!,\n})\n\n\u002F\u002F Send multiple events in one request\nawait sendBatchToSentry(events, {\n  dsn: process.env.SENTRY_DSN!,\n})\n","server\u002Futils\u002Fsentry.ts",[583,1875,1876,1900,1904,1909,1922,1943,1949,1953,1958,1971,1989],{"__ignoreMap":581},[586,1877,1878,1880,1882,1885,1887,1890,1892,1894,1896,1898],{"class":588,"line":589},[586,1879,593],{"class":592},[586,1881,597],{"class":596},[586,1883,1884],{"class":600}," sendToSentry",[586,1886,778],{"class":596},[586,1888,1889],{"class":600}," sendBatchToSentry",[586,1891,604],{"class":596},[586,1893,607],{"class":592},[586,1895,610],{"class":596},[586,1897,614],{"class":613},[586,1899,617],{"class":596},[586,1901,1902],{"class":588,"line":692},[586,1903,715],{"emptyLinePlaceholder":714},[586,1905,1906],{"class":588,"line":711},[586,1907,1908],{"class":688},"\u002F\u002F Send a single event as a Sentry log\n",[586,1910,1911,1913,1915,1918,1920],{"class":588,"line":718},[586,1912,1071],{"class":592},[586,1914,1884],{"class":727},[586,1916,1917],{"class":600},"(event",[586,1919,778],{"class":596},[586,1921,747],{"class":596},[586,1923,1924,1926,1928,1931,1933,1936,1938,1940],{"class":588,"line":750},[586,1925,1516],{"class":767},[586,1927,891],{"class":596},[586,1929,1930],{"class":600}," process",[586,1932,756],{"class":596},[586,1934,1935],{"class":600},"env",[586,1937,756],{"class":596},[586,1939,664],{"class":600},[586,1941,1942],{"class":596},"!,\n",[586,1944,1945,1947],{"class":588,"line":786},[586,1946,789],{"class":596},[586,1948,792],{"class":600},[586,1950,1951],{"class":588,"line":904},[586,1952,715],{"emptyLinePlaceholder":714},[586,1954,1955],{"class":588,"line":919},[586,1956,1957],{"class":688},"\u002F\u002F Send multiple events in one request\n",[586,1959,1960,1962,1964,1967,1969],{"class":588,"line":1472},[586,1961,1071],{"class":592},[586,1963,1889],{"class":727},[586,1965,1966],{"class":600},"(events",[586,1968,778],{"class":596},[586,1970,747],{"class":596},[586,1972,1973,1975,1977,1979,1981,1983,1985,1987],{"class":588,"line":1478},[586,1974,1516],{"class":767},[586,1976,891],{"class":596},[586,1978,1930],{"class":600},[586,1980,756],{"class":596},[586,1982,1935],{"class":600},[586,1984,756],{"class":596},[586,1986,664],{"class":600},[586,1988,1942],{"class":596},[586,1990,1992,1994],{"class":588,"line":1991},11,[586,1993,789],{"class":596},[586,1995,792],{"class":600},[568,1997,1999],{"id":1998},"next-steps","Next Steps",[1693,2001,2002,2008,2014,2020],{},[537,2003,2004,2007],{},[510,2005,2006],{"href":142},"Axiom Adapter"," - Send logs to Axiom for querying and dashboards",[537,2009,2010,2013],{},[510,2011,2012],{"href":147},"OTLP Adapter"," - Send logs via OpenTelemetry Protocol",[537,2015,2016,2019],{},[510,2017,2018],{"href":152},"PostHog Adapter"," - Send logs to PostHog",[537,2021,2022,2025],{},[510,2023,2024],{"href":462},"Custom Adapters"," - Build your own adapter",[2027,2028,2029],"style",{},"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 .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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":581,"searchDepth":692,"depth":692,"links":2031},[2032,2033,2038,2044,2045,2046,2051,2052],{"id":570,"depth":692,"text":20},{"id":620,"depth":692,"text":25,"children":2034},[2035,2036,2037],{"id":624,"depth":711,"text":625},{"id":650,"depth":711,"text":651},{"id":673,"depth":711,"text":674},{"id":1262,"depth":692,"text":475,"children":2039},[2040,2041,2042,2043],{"id":1298,"depth":711,"text":1299},{"id":1351,"depth":711,"text":1352},{"id":1485,"depth":711,"text":1486},{"id":1573,"depth":711,"text":1574},{"id":1684,"depth":692,"text":1685},{"id":1781,"depth":692,"text":1782},{"id":1821,"depth":692,"text":1822,"children":2047},[2048,2049,2050],{"id":1825,"depth":711,"text":1826},{"id":1841,"depth":711,"text":1842},{"id":1855,"depth":711,"text":1856},{"id":1865,"depth":692,"text":1866},{"id":1998,"depth":692,"text":1999},"Send structured logs to Sentry Logs for high-cardinality querying and debugging. Zero-config setup with environment variables.","md",[2056,2062],{"label":2057,"icon":2058,"to":512,"target":2059,"color":2060,"variant":2061},"Sentry Dashboard","i-lucide-external-link","_blank","neutral","subtle",{"label":2012,"icon":149,"to":147,"color":2060,"variant":2061},{},{"title":156,"icon":159},{"title":502,"description":2053},"59WUMV6MpeatW4aXQq7-dK4lDrcD_41ILmIeQMUyWZo",[2068,2070],{"title":151,"path":152,"stem":153,"description":2069,"icon":154,"children":-1},"Send wide events to PostHog Logs via OTLP for structured log querying, debugging, and observability in your PostHog dashboard.",{"title":161,"path":162,"stem":163,"description":2071,"icon":164,"children":-1},"Send wide events to Better Stack (formerly Logtail) for log management, alerting, and dashboards. Zero-config setup with environment variables.",1785014791946]