[{"data":1,"prerenderedAt":2082},["ShallowReactive",2],{"navigation_docs":3,"-integrate-adapters-cloud-sentry":510,"-integrate-adapters-cloud-sentry-surround":2077},[4,30,80,123,293,425,480],{"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,205],{"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,200],{"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,"icon":204},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Floki","4.integrate\u002Fadapters\u002Fself-hosted\u002F04.loki","i-simple-icons-grafana",{"title":206,"path":207,"stem":208,"children":209,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[210,214,219,224,229,234,239,244,249,254,259,264,269,274,278,283,288],{"title":36,"path":211,"stem":212,"icon":213},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":215,"path":216,"stem":217,"icon":218},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":220,"path":221,"stem":222,"icon":223},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":225,"path":226,"stem":227,"icon":228},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":230,"path":231,"stem":232,"icon":233},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":235,"path":236,"stem":237,"icon":238},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":240,"path":241,"stem":242,"icon":243},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":245,"path":246,"stem":247,"icon":248},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":250,"path":251,"stem":252,"icon":253},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":255,"path":256,"stem":257,"icon":258},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":260,"path":261,"stem":262,"icon":263},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":265,"path":266,"stem":267,"icon":268},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":270,"path":271,"stem":272,"icon":273},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":275,"path":276,"stem":277,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":279,"path":280,"stem":281,"icon":282},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":284,"path":285,"stem":286,"icon":287},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":289,"path":290,"stem":291,"icon":292},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":294,"path":295,"stem":296,"children":297,"page":29},"Use Cases","\u002Fuse-cases","5.use-cases",[298,301,306,335,362,394,415,420],{"title":36,"path":299,"stem":300,"icon":102},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":302,"path":303,"stem":304,"icon":305},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":307,"icon":308,"path":309,"stem":310,"children":311,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[312,315,320,325,330],{"title":36,"path":313,"stem":314,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":316,"path":317,"stem":318,"icon":319},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":321,"path":322,"stem":323,"icon":324},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":326,"path":327,"stem":328,"icon":329},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":331,"path":332,"stem":333,"icon":334},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":336,"icon":337,"path":338,"stem":339,"children":340,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[341,344,349,354,358],{"title":36,"path":342,"stem":343,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":345,"path":346,"stem":347,"icon":348},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":350,"path":351,"stem":352,"icon":353},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":355,"path":356,"stem":357,"icon":305},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":359,"path":360,"stem":361,"icon":107},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":363,"icon":364,"path":365,"stem":366,"children":367,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[368,371,376,381,386,390],{"title":36,"path":369,"stem":370,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":372,"path":373,"stem":374,"icon":375},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":377,"path":378,"stem":379,"icon":380},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":382,"path":383,"stem":384,"icon":385},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":387,"path":388,"stem":389,"icon":364},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":391,"path":392,"stem":393,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":331,"icon":107,"path":395,"stem":396,"children":397,"page":29},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[398,401,406,411],{"title":36,"path":399,"stem":400,"icon":39},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":402,"path":403,"stem":404,"icon":405},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":407,"path":408,"stem":409,"icon":410},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":412,"path":413,"stem":414,"icon":79},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":416,"path":417,"stem":418,"icon":419},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":421,"path":422,"stem":423,"icon":424},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":426,"path":427,"stem":428,"children":429,"page":29},"Extend","\u002Fextend","6.extend",[430,434,439,444,449,453,457,461,465,470,475],{"title":36,"path":431,"stem":432,"icon":433},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":435,"path":436,"stem":437,"icon":438},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":440,"path":441,"stem":442,"icon":443},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":445,"path":446,"stem":447,"icon":448},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":391,"path":450,"stem":451,"icon":452},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":454,"path":455,"stem":456,"icon":433},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":458,"path":459,"stem":460,"icon":419},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":462,"path":463,"stem":464,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":466,"path":467,"stem":468,"icon":469},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":471,"path":472,"stem":473,"icon":474},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":476,"path":477,"stem":478,"icon":479},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":412,"path":481,"stem":482,"children":483,"page":29},"\u002Freference","7.reference",[484,489,492,497,501,506],{"title":485,"path":486,"stem":487,"icon":488},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":359,"path":490,"stem":491,"icon":107},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":493,"path":494,"stem":495,"icon":496},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":498,"path":499,"stem":500,"icon":364},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":502,"path":503,"stem":504,"icon":505},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":507,"path":508,"stem":509,"icon":419},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"id":511,"title":512,"body":513,"description":2063,"extension":2064,"links":2065,"meta":2073,"navigation":2074,"path":162,"seo":2075,"stem":163,"__hash__":2076},"docs\u002F4.integrate\u002Fadapters\u002Fcloud\u002F04.sentry.md","Sentry Adapter",{"type":514,"value":515,"toc":2040},"minimark",[516,535,577,581,584,628,631,636,658,662,681,685,1264,1270,1273,1276,1306,1310,1359,1363,1370,1493,1497,1500,1581,1585,1692,1696,1702,1789,1793,1796,1825,1829,1833,1837,1846,1849,1853,1856,1863,1867,1873,1877,1880,2006,2010,2036],[517,518,519,525,526,530,531,534],"p",{},[520,521,161],"a",{"href":522,"rel":523},"https:\u002F\u002Fsentry.io",[524],"nofollow"," is an error tracking and performance monitoring platform. The evlog Sentry adapter sends your wide events as ",[527,528,529],"strong",{},"Sentry Structured Logs",", visible in ",[527,532,533],{},"Explore > Logs"," in the Sentry dashboard with high-cardinality searchable attributes.",[536,537,540,543,565],"prompt",{":actions":538,"description":539,"icon":164},"[\"copy\",\"cursor\",\"claude\"]","Add the Sentry drain adapter",[517,541,542],{},"Add the Sentry drain adapter to send evlog wide events to Sentry Logs.",[544,545,546,550,553,556,559,562],"ol",{},[547,548,549],"li",{},"Identify which framework I'm using and follow its evlog integration pattern",[547,551,552],{},"Install evlog if not already installed",[547,554,555],{},"Import createSentryDrain from 'evlog\u002Fsentry'",[547,557,558],{},"Wire createSentryDrain() into my framework's drain configuration",[547,560,561],{},"Set SENTRY_DSN environment variable",[547,563,564],{},"Test by triggering a request and checking Sentry > Explore > Logs",[517,566,567,568,572,573],{},"Adapter docs: ",[520,569,570],{"href":570,"rel":571},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry",[524],"\nFramework setup: ",[520,574,575],{"href":575,"rel":576},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Foverview",[524],[578,579,20],"h2",{"id":580},"installation",[517,582,583],{},"The Sentry adapter comes bundled with evlog:",[585,586,592],"pre",{"className":587,"code":588,"filename":589,"language":590,"meta":591,"style":591},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createSentryDrain } from 'evlog\u002Fsentry'\n","src\u002Findex.ts","typescript","",[593,594,595],"code",{"__ignoreMap":591},[596,597,600,604,608,612,615,618,621,625],"span",{"class":598,"line":599},"line",1,[596,601,603],{"class":602},"s7zQu","import",[596,605,607],{"class":606},"sMK4o"," {",[596,609,611],{"class":610},"sTEyZ"," createSentryDrain",[596,613,614],{"class":606}," }",[596,616,617],{"class":602}," from",[596,619,620],{"class":606}," '",[596,622,624],{"class":623},"sfazB","evlog\u002Fsentry",[596,626,627],{"class":606},"'\n",[578,629,25],{"id":630},"quick-start",[632,633,635],"h3",{"id":634},"_1-get-your-sentry-dsn","1. Get your Sentry DSN",[544,637,638,645,648],{},[547,639,640,641],{},"Create a ",[520,642,644],{"href":522,"rel":643},[524],"Sentry account",[547,646,647],{},"Create a new project (Node.js or JavaScript)",[547,649,650,651],{},"Find your DSN in ",[527,652,653,654,657],{},"Settings > Projects > ",[596,655,656],{},"Your Project"," > Client Keys (DSN)",[632,659,661],{"id":660},"_2-set-environment-variables","2. Set environment variables",[585,663,668],{"className":664,"code":665,"filename":666,"language":667,"meta":591,"style":591},"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",[593,669,670],{"__ignoreMap":591},[596,671,672,675,678],{"class":598,"line":599},[596,673,674],{"class":610},"SENTRY_DSN",[596,676,677],{"class":606},"=",[596,679,680],{"class":623},"https:\u002F\u002Fyour-public-key@o0.ingest.sentry.io\u002Fyour-project-id\n",[632,682,684],{"id":683},"_3-wire-the-drain-to-your-framework","3. Wire the drain to your framework",[686,687,688,803,934,996,1050,1109,1163,1216],"code-group",{},[585,689,692],{"className":587,"code":690,"filename":691,"language":590,"meta":591,"style":591},"\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",[593,693,694,700,719,726,758,794],{"__ignoreMap":591},[596,695,696],{"class":598,"line":599},[596,697,699],{"class":698},"sHwdD","\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\n",[596,701,703,705,707,709,711,713,715,717],{"class":598,"line":702},2,[596,704,603],{"class":602},[596,706,607],{"class":606},[596,708,611],{"class":610},[596,710,614],{"class":606},[596,712,617],{"class":602},[596,714,620],{"class":606},[596,716,624],{"class":623},[596,718,627],{"class":606},[596,720,722],{"class":598,"line":721},3,[596,723,725],{"emptyLinePlaceholder":724},true,"\n",[596,727,729,732,735,739,742,744,748,751,755],{"class":598,"line":728},4,[596,730,731],{"class":602},"export",[596,733,734],{"class":602}," default",[596,736,738],{"class":737},"s2Zo4"," defineNitroPlugin",[596,740,741],{"class":610},"(",[596,743,741],{"class":606},[596,745,747],{"class":746},"sHdIc","nitroApp",[596,749,750],{"class":606},")",[596,752,754],{"class":753},"spNyl"," =>",[596,756,757],{"class":606}," {\n",[596,759,761,764,767,770,772,775,778,781,784,786,789,791],{"class":598,"line":760},5,[596,762,763],{"class":610},"  nitroApp",[596,765,766],{"class":606},".",[596,768,769],{"class":610},"hooks",[596,771,766],{"class":606},[596,773,774],{"class":737},"hook",[596,776,741],{"class":777},"swJcz",[596,779,780],{"class":606},"'",[596,782,783],{"class":623},"evlog:drain",[596,785,780],{"class":606},[596,787,788],{"class":606},",",[596,790,611],{"class":737},[596,792,793],{"class":777},"())\n",[596,795,797,800],{"class":598,"line":796},6,[596,798,799],{"class":606},"}",[596,801,802],{"class":610},")\n",[585,804,806],{"className":587,"code":805,"filename":220,"language":590,"meta":591,"style":591},"\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",[593,807,808,813,833,851,855,894,912,927],{"__ignoreMap":591},[596,809,810],{"class":598,"line":599},[596,811,812],{"class":698},"\u002F\u002F lib\u002Fevlog.ts\n",[596,814,815,817,819,822,824,826,828,831],{"class":598,"line":702},[596,816,603],{"class":602},[596,818,607],{"class":606},[596,820,821],{"class":610}," createEvlog",[596,823,614],{"class":606},[596,825,617],{"class":602},[596,827,620],{"class":606},[596,829,830],{"class":623},"evlog\u002Fnext",[596,832,627],{"class":606},[596,834,835,837,839,841,843,845,847,849],{"class":598,"line":721},[596,836,603],{"class":602},[596,838,607],{"class":606},[596,840,611],{"class":610},[596,842,614],{"class":606},[596,844,617],{"class":602},[596,846,620],{"class":606},[596,848,624],{"class":623},[596,850,627],{"class":606},[596,852,853],{"class":598,"line":728},[596,854,725],{"emptyLinePlaceholder":724},[596,856,857,859,862,864,867,869,872,874,877,879,882,884,887,889,891],{"class":598,"line":760},[596,858,731],{"class":602},[596,860,861],{"class":753}," const",[596,863,607],{"class":606},[596,865,866],{"class":610}," withEvlog",[596,868,788],{"class":606},[596,870,871],{"class":610}," useLogger",[596,873,788],{"class":606},[596,875,876],{"class":610}," log",[596,878,788],{"class":606},[596,880,881],{"class":610}," createError ",[596,883,799],{"class":606},[596,885,886],{"class":606}," =",[596,888,821],{"class":737},[596,890,741],{"class":610},[596,892,893],{"class":606},"{\n",[596,895,896,899,902,904,907,909],{"class":598,"line":796},[596,897,898],{"class":777},"  service",[596,900,901],{"class":606},":",[596,903,620],{"class":606},[596,905,906],{"class":623},"my-app",[596,908,780],{"class":606},[596,910,911],{"class":606},",\n",[596,913,915,918,920,922,925],{"class":598,"line":914},7,[596,916,917],{"class":777},"  drain",[596,919,901],{"class":606},[596,921,611],{"class":737},[596,923,924],{"class":610},"()",[596,926,911],{"class":606},[596,928,930,932],{"class":598,"line":929},8,[596,931,799],{"class":606},[596,933,802],{"class":610},[585,935,937],{"className":587,"code":936,"filename":250,"language":590,"meta":591,"style":591},"import { createSentryDrain } from 'evlog\u002Fsentry'\n\napp.use(evlog({ drain: createSentryDrain() }))\n",[593,938,939,957,961],{"__ignoreMap":591},[596,940,941,943,945,947,949,951,953,955],{"class":598,"line":599},[596,942,603],{"class":602},[596,944,607],{"class":606},[596,946,611],{"class":610},[596,948,614],{"class":606},[596,950,617],{"class":602},[596,952,620],{"class":606},[596,954,624],{"class":623},[596,956,627],{"class":606},[596,958,959],{"class":598,"line":702},[596,960,725],{"emptyLinePlaceholder":724},[596,962,963,966,968,971,973,976,978,981,984,986,988,991,993],{"class":598,"line":721},[596,964,965],{"class":610},"app",[596,967,766],{"class":606},[596,969,970],{"class":737},"use",[596,972,741],{"class":610},[596,974,975],{"class":737},"evlog",[596,977,741],{"class":610},[596,979,980],{"class":606},"{",[596,982,983],{"class":777}," drain",[596,985,901],{"class":606},[596,987,611],{"class":737},[596,989,990],{"class":610},"() ",[596,992,799],{"class":606},[596,994,995],{"class":610},"))\n",[585,997,998],{"className":587,"code":936,"filename":245,"language":590,"meta":591,"style":591},[593,999,1000,1018,1022],{"__ignoreMap":591},[596,1001,1002,1004,1006,1008,1010,1012,1014,1016],{"class":598,"line":599},[596,1003,603],{"class":602},[596,1005,607],{"class":606},[596,1007,611],{"class":610},[596,1009,614],{"class":606},[596,1011,617],{"class":602},[596,1013,620],{"class":606},[596,1015,624],{"class":623},[596,1017,627],{"class":606},[596,1019,1020],{"class":598,"line":702},[596,1021,725],{"emptyLinePlaceholder":724},[596,1023,1024,1026,1028,1030,1032,1034,1036,1038,1040,1042,1044,1046,1048],{"class":598,"line":721},[596,1025,965],{"class":610},[596,1027,766],{"class":606},[596,1029,970],{"class":737},[596,1031,741],{"class":610},[596,1033,975],{"class":737},[596,1035,741],{"class":610},[596,1037,980],{"class":606},[596,1039,983],{"class":777},[596,1041,901],{"class":606},[596,1043,611],{"class":737},[596,1045,990],{"class":610},[596,1047,799],{"class":606},[596,1049,995],{"class":610},[585,1051,1053],{"className":587,"code":1052,"filename":255,"language":590,"meta":591,"style":591},"import { createSentryDrain } from 'evlog\u002Fsentry'\n\nawait app.register(evlog, { drain: createSentryDrain() })\n",[593,1054,1055,1073,1077],{"__ignoreMap":591},[596,1056,1057,1059,1061,1063,1065,1067,1069,1071],{"class":598,"line":599},[596,1058,603],{"class":602},[596,1060,607],{"class":606},[596,1062,611],{"class":610},[596,1064,614],{"class":606},[596,1066,617],{"class":602},[596,1068,620],{"class":606},[596,1070,624],{"class":623},[596,1072,627],{"class":606},[596,1074,1075],{"class":598,"line":702},[596,1076,725],{"emptyLinePlaceholder":724},[596,1078,1079,1082,1085,1087,1090,1093,1095,1097,1099,1101,1103,1105,1107],{"class":598,"line":721},[596,1080,1081],{"class":602},"await",[596,1083,1084],{"class":610}," app",[596,1086,766],{"class":606},[596,1088,1089],{"class":737},"register",[596,1091,1092],{"class":610},"(evlog",[596,1094,788],{"class":606},[596,1096,607],{"class":606},[596,1098,983],{"class":777},[596,1100,901],{"class":606},[596,1102,611],{"class":737},[596,1104,990],{"class":610},[596,1106,799],{"class":606},[596,1108,802],{"class":610},[585,1110,1111],{"className":587,"code":936,"filename":260,"language":590,"meta":591,"style":591},[593,1112,1113,1131,1135],{"__ignoreMap":591},[596,1114,1115,1117,1119,1121,1123,1125,1127,1129],{"class":598,"line":599},[596,1116,603],{"class":602},[596,1118,607],{"class":606},[596,1120,611],{"class":610},[596,1122,614],{"class":606},[596,1124,617],{"class":602},[596,1126,620],{"class":606},[596,1128,624],{"class":623},[596,1130,627],{"class":606},[596,1132,1133],{"class":598,"line":702},[596,1134,725],{"emptyLinePlaceholder":724},[596,1136,1137,1139,1141,1143,1145,1147,1149,1151,1153,1155,1157,1159,1161],{"class":598,"line":721},[596,1138,965],{"class":610},[596,1140,766],{"class":606},[596,1142,970],{"class":737},[596,1144,741],{"class":610},[596,1146,975],{"class":737},[596,1148,741],{"class":610},[596,1150,980],{"class":606},[596,1152,983],{"class":777},[596,1154,901],{"class":606},[596,1156,611],{"class":737},[596,1158,990],{"class":610},[596,1160,799],{"class":606},[596,1162,995],{"class":610},[585,1164,1166],{"className":587,"code":1165,"filename":240,"language":590,"meta":591,"style":591},"import { createSentryDrain } from 'evlog\u002Fsentry'\n\nEvlogModule.forRoot({ drain: createSentryDrain() })\n",[593,1167,1168,1186,1190],{"__ignoreMap":591},[596,1169,1170,1172,1174,1176,1178,1180,1182,1184],{"class":598,"line":599},[596,1171,603],{"class":602},[596,1173,607],{"class":606},[596,1175,611],{"class":610},[596,1177,614],{"class":606},[596,1179,617],{"class":602},[596,1181,620],{"class":606},[596,1183,624],{"class":623},[596,1185,627],{"class":606},[596,1187,1188],{"class":598,"line":702},[596,1189,725],{"emptyLinePlaceholder":724},[596,1191,1192,1195,1197,1200,1202,1204,1206,1208,1210,1212,1214],{"class":598,"line":721},[596,1193,1194],{"class":610},"EvlogModule",[596,1196,766],{"class":606},[596,1198,1199],{"class":737},"forRoot",[596,1201,741],{"class":610},[596,1203,980],{"class":606},[596,1205,983],{"class":777},[596,1207,901],{"class":606},[596,1209,611],{"class":737},[596,1211,990],{"class":610},[596,1213,799],{"class":606},[596,1215,802],{"class":610},[585,1217,1219],{"className":587,"code":1218,"filename":275,"language":590,"meta":591,"style":591},"import { createSentryDrain } from 'evlog\u002Fsentry'\n\ninitLogger({ drain: createSentryDrain() })\n",[593,1220,1221,1239,1243],{"__ignoreMap":591},[596,1222,1223,1225,1227,1229,1231,1233,1235,1237],{"class":598,"line":599},[596,1224,603],{"class":602},[596,1226,607],{"class":606},[596,1228,611],{"class":610},[596,1230,614],{"class":606},[596,1232,617],{"class":602},[596,1234,620],{"class":606},[596,1236,624],{"class":623},[596,1238,627],{"class":606},[596,1240,1241],{"class":598,"line":702},[596,1242,725],{"emptyLinePlaceholder":724},[596,1244,1245,1248,1250,1252,1254,1256,1258,1260,1262],{"class":598,"line":721},[596,1246,1247],{"class":737},"initLogger",[596,1249,741],{"class":610},[596,1251,980],{"class":606},[596,1253,983],{"class":777},[596,1255,901],{"class":606},[596,1257,611],{"class":737},[596,1259,990],{"class":610},[596,1261,799],{"class":606},[596,1263,802],{"class":610},[517,1265,1266,1267,1269],{},"That's it! Your logs will now appear in ",[527,1268,533],{}," in Sentry.",[578,1271,485],{"id":1272},"configuration",[517,1274,1275],{},"The adapter reads configuration from multiple sources (highest priority first):",[544,1277,1278,1287,1297],{},[547,1279,1280,1283,1284],{},[527,1281,1282],{},"Overrides"," passed to ",[593,1285,1286],{},"createSentryDrain()",[547,1288,1289,1292,1293,1296],{},[527,1290,1291],{},"Runtime config"," at ",[593,1294,1295],{},"runtimeConfig.sentry"," (Nuxt\u002FNitro only)",[547,1298,1299,1302,1303,750],{},[527,1300,1301],{},"Environment variables"," (",[593,1304,1305],{},"SENTRY_*",[632,1307,1309],{"id":1308},"environment-variables","Environment Variables",[1311,1312,1313,1326],"table",{},[1314,1315,1316],"thead",{},[1317,1318,1319,1323],"tr",{},[1320,1321,1322],"th",{},"Variable",[1320,1324,1325],{},"Description",[1327,1328,1329,1339,1349],"tbody",{},[1317,1330,1331,1336],{},[1332,1333,1334],"td",{},[593,1335,674],{},[1332,1337,1338],{},"Sentry DSN (required)",[1317,1340,1341,1346],{},[1332,1342,1343],{},[593,1344,1345],{},"SENTRY_ENVIRONMENT",[1332,1347,1348],{},"Environment name override",[1317,1350,1351,1356],{},[1332,1352,1353],{},[593,1354,1355],{},"SENTRY_RELEASE",[1332,1357,1358],{},"Release version override",[632,1360,1362],{"id":1361},"runtime-config-nuxt-only","Runtime Config (Nuxt only)",[517,1364,1365,1366,1369],{},"Configure via ",[593,1367,1368],{},"nuxt.config.ts"," for type-safe configuration:",[585,1371,1373],{"className":587,"code":1372,"filename":1368,"language":590,"meta":591,"style":591},"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",[593,1374,1375,1388,1410,1419,1428,1443,1459,1475,1480,1486],{"__ignoreMap":591},[596,1376,1377,1379,1381,1384,1386],{"class":598,"line":599},[596,1378,731],{"class":602},[596,1380,734],{"class":602},[596,1382,1383],{"class":737}," defineNuxtConfig",[596,1385,741],{"class":610},[596,1387,893],{"class":606},[596,1389,1390,1393,1395,1398,1400,1403,1405,1408],{"class":598,"line":702},[596,1391,1392],{"class":777},"  modules",[596,1394,901],{"class":606},[596,1396,1397],{"class":610}," [",[596,1399,780],{"class":606},[596,1401,1402],{"class":623},"evlog\u002Fnuxt",[596,1404,780],{"class":606},[596,1406,1407],{"class":610},"]",[596,1409,911],{"class":606},[596,1411,1412,1415,1417],{"class":598,"line":721},[596,1413,1414],{"class":777},"  evlog",[596,1416,901],{"class":606},[596,1418,757],{"class":606},[596,1420,1421,1424,1426],{"class":598,"line":728},[596,1422,1423],{"class":777},"    sentry",[596,1425,901],{"class":606},[596,1427,757],{"class":606},[596,1429,1430,1433,1435,1438,1440],{"class":598,"line":760},[596,1431,1432],{"class":777},"      dsn",[596,1434,901],{"class":606},[596,1436,1437],{"class":606}," ''",[596,1439,788],{"class":606},[596,1441,1442],{"class":698}," \u002F\u002F Set via SENTRY_DSN\n",[596,1444,1445,1448,1450,1452,1455,1457],{"class":598,"line":796},[596,1446,1447],{"class":777},"      environment",[596,1449,901],{"class":606},[596,1451,620],{"class":606},[596,1453,1454],{"class":623},"production",[596,1456,780],{"class":606},[596,1458,911],{"class":606},[596,1460,1461,1464,1466,1468,1471,1473],{"class":598,"line":914},[596,1462,1463],{"class":777},"      release",[596,1465,901],{"class":606},[596,1467,620],{"class":606},[596,1469,1470],{"class":623},"1.0.0",[596,1472,780],{"class":606},[596,1474,911],{"class":606},[596,1476,1477],{"class":598,"line":929},[596,1478,1479],{"class":606},"    },\n",[596,1481,1483],{"class":598,"line":1482},9,[596,1484,1485],{"class":606},"  },\n",[596,1487,1489,1491],{"class":598,"line":1488},10,[596,1490,799],{"class":606},[596,1492,802],{"class":610},[632,1494,1496],{"id":1495},"override-options","Override Options",[517,1498,1499],{},"Pass options directly to override any configuration:",[585,1501,1504],{"className":587,"code":1502,"filename":1503,"language":590,"meta":591,"style":591},"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",[593,1505,1506,1522,1538,1562,1575],{"__ignoreMap":591},[596,1507,1508,1511,1514,1516,1518,1520],{"class":598,"line":599},[596,1509,1510],{"class":753},"const",[596,1512,1513],{"class":610}," drain ",[596,1515,677],{"class":606},[596,1517,611],{"class":737},[596,1519,741],{"class":610},[596,1521,893],{"class":606},[596,1523,1524,1527,1529,1531,1534,1536],{"class":598,"line":702},[596,1525,1526],{"class":777},"  dsn",[596,1528,901],{"class":606},[596,1530,620],{"class":606},[596,1532,1533],{"class":623},"https:\u002F\u002Fkey@o0.ingest.sentry.io\u002F123",[596,1535,780],{"class":606},[596,1537,911],{"class":606},[596,1539,1540,1543,1545,1547,1550,1552,1554,1557,1559],{"class":598,"line":721},[596,1541,1542],{"class":777},"  tags",[596,1544,901],{"class":606},[596,1546,607],{"class":606},[596,1548,1549],{"class":777}," team",[596,1551,901],{"class":606},[596,1553,620],{"class":606},[596,1555,1556],{"class":623},"backend",[596,1558,780],{"class":606},[596,1560,1561],{"class":606}," },\n",[596,1563,1564,1567,1569,1573],{"class":598,"line":728},[596,1565,1566],{"class":777},"  timeout",[596,1568,901],{"class":606},[596,1570,1572],{"class":1571},"sbssI"," 10000",[596,1574,911],{"class":606},[596,1576,1577,1579],{"class":598,"line":760},[596,1578,799],{"class":606},[596,1580,802],{"class":610},[632,1582,1584],{"id":1583},"full-configuration-reference","Full Configuration Reference",[1311,1586,1587,1602],{},[1314,1588,1589],{},[1317,1590,1591,1594,1597,1600],{},[1320,1592,1593],{},"Option",[1320,1595,1596],{},"Type",[1320,1598,1599],{},"Default",[1320,1601,1325],{},[1327,1603,1604,1621,1638,1655,1672],{},[1317,1605,1606,1611,1616,1619],{},[1332,1607,1608],{},[593,1609,1610],{},"dsn",[1332,1612,1613],{},[593,1614,1615],{},"string",[1332,1617,1618],{},"-",[1332,1620,1338],{},[1317,1622,1623,1628,1632,1635],{},[1332,1624,1625],{},[593,1626,1627],{},"environment",[1332,1629,1630],{},[593,1631,1615],{},[1332,1633,1634],{},"Event environment",[1332,1636,1637],{},"Environment name",[1317,1639,1640,1645,1649,1652],{},[1332,1641,1642],{},[593,1643,1644],{},"release",[1332,1646,1647],{},[593,1648,1615],{},[1332,1650,1651],{},"Event version",[1332,1653,1654],{},"Release version",[1317,1656,1657,1662,1667,1669],{},[1332,1658,1659],{},[593,1660,1661],{},"tags",[1332,1663,1664],{},[593,1665,1666],{},"Record\u003Cstring, string>",[1332,1668,1618],{},[1332,1670,1671],{},"Additional attributes to attach",[1317,1673,1674,1679,1684,1689],{},[1332,1675,1676],{},[593,1677,1678],{},"timeout",[1332,1680,1681],{},[593,1682,1683],{},"number",[1332,1685,1686],{},[593,1687,1688],{},"5000",[1332,1690,1691],{},"Request timeout in milliseconds",[578,1693,1695],{"id":1694},"log-transformation","Log Transformation",[517,1697,1698,1699,901],{},"evlog wide events are converted to Sentry Logs using ",[593,1700,1701],{},"toSentryLog()",[1703,1704,1705,1724,1742,1759,1765,1779],"ul",{},[547,1706,1707,1710,1711,1714,1715,1714,1718,1714,1721,750],{},[527,1708,1709],{},"Level mapping",": evlog levels map directly (",[593,1712,1713],{},"debug",", ",[593,1716,1717],{},"info",[593,1719,1720],{},"warn",[593,1722,1723],{},"error",[547,1725,1726,1729,1730,1714,1733,1714,1736,1714,1739,750],{},[527,1727,1728],{},"Severity numbers",": Follow the OpenTelemetry spec (",[593,1731,1732],{},"debug=5",[593,1734,1735],{},"info=9",[593,1737,1738],{},"warn=13",[593,1740,1741],{},"error=17",[547,1743,1744,1747,1748,1714,1751,1754,1755,1758],{},[527,1745,1746],{},"Body",": Derived from the event's ",[593,1749,1750],{},"message",[593,1752,1753],{},"action",", or ",[593,1756,1757],{},"path"," fields (first available)",[547,1760,1761,1764],{},[527,1762,1763],{},"Attributes",": All wide event fields are sent as typed attributes (string, integer, double, boolean). Complex objects are serialized to JSON strings.",[547,1766,1767,1770,1771,1774,1775,1778],{},[527,1768,1769],{},"Sentry attributes",": ",[593,1772,1773],{},"sentry.environment"," and ",[593,1776,1777],{},"sentry.release"," are set automatically",[547,1780,1781,1784,1785,1788],{},[527,1782,1783],{},"Trace ID",": Uses ",[593,1786,1787],{},"event.traceId"," if available, otherwise generates a random one",[578,1790,1792],{"id":1791},"querying-logs-in-sentry","Querying Logs in Sentry",[517,1794,1795],{},"evlog sends wide events as structured logs. In the Sentry dashboard:",[1703,1797,1798,1803,1815],{},[547,1799,1800,1802],{},[527,1801,533],{},": View all evlog wide events with full attribute search",[547,1804,1805,1770,1808,1714,1811,1814],{},[527,1806,1807],{},"Filter by attributes",[593,1809,1810],{},"service:my-app",[593,1812,1813],{},"level:error",", or any wide event field",[547,1816,1817,1820,1821,1824],{},[527,1818,1819],{},"Trace correlation",": Logs are linked to traces via ",[593,1822,1823],{},"trace_id"," for cross-referencing",[1826,1827,1828],"callout",{"color":1717,"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.",[578,1830,1832],{"id":1831},"troubleshooting","Troubleshooting",[632,1834,1836],{"id":1835},"missing-dsn-error","Missing DSN error",[585,1838,1844],{"className":1839,"code":1841,"filename":1842,"language":1843,"meta":591},[1840],"language-text","[evlog\u002Fsentry] Missing DSN. Set SENTRY_DSN env var or pass to createSentryDrain()\n","Console","text",[593,1845,1841],{"__ignoreMap":591},[517,1847,1848],{},"Make sure your environment variable is set and the server was restarted after adding it.",[632,1850,1852],{"id":1851},"invalid-dsn","Invalid DSN",[517,1854,1855],{},"If the DSN is malformed (missing public key or project ID), the adapter will throw an error. Verify your DSN format:",[585,1857,1861],{"className":1858,"code":1859,"filename":1860,"language":1843,"meta":591},[1840],"https:\u002F\u002F\u003Cpublic-key>@\u003Chost>\u002F\u003Cproject-id>\n","Sentry DSN format",[593,1862,1859],{"__ignoreMap":591},[632,1864,1866],{"id":1865},"_401-unauthorized","401 Unauthorized",[517,1868,1869,1870,766],{},"Your DSN may be revoked or invalid. Generate a new DSN in ",[527,1871,1872],{},"Settings > Projects > Client Keys (DSN)",[578,1874,1876],{"id":1875},"direct-api-usage","Direct API Usage",[517,1878,1879],{},"For advanced use cases, you can use the lower-level functions:",[585,1881,1884],{"className":587,"code":1882,"filename":1883,"language":590,"meta":591,"style":591},"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",[593,1885,1886,1910,1914,1919,1932,1953,1959,1963,1968,1981,1999],{"__ignoreMap":591},[596,1887,1888,1890,1892,1895,1897,1900,1902,1904,1906,1908],{"class":598,"line":599},[596,1889,603],{"class":602},[596,1891,607],{"class":606},[596,1893,1894],{"class":610}," sendToSentry",[596,1896,788],{"class":606},[596,1898,1899],{"class":610}," sendBatchToSentry",[596,1901,614],{"class":606},[596,1903,617],{"class":602},[596,1905,620],{"class":606},[596,1907,624],{"class":623},[596,1909,627],{"class":606},[596,1911,1912],{"class":598,"line":702},[596,1913,725],{"emptyLinePlaceholder":724},[596,1915,1916],{"class":598,"line":721},[596,1917,1918],{"class":698},"\u002F\u002F Send a single event as a Sentry log\n",[596,1920,1921,1923,1925,1928,1930],{"class":598,"line":728},[596,1922,1081],{"class":602},[596,1924,1894],{"class":737},[596,1926,1927],{"class":610},"(event",[596,1929,788],{"class":606},[596,1931,757],{"class":606},[596,1933,1934,1936,1938,1941,1943,1946,1948,1950],{"class":598,"line":760},[596,1935,1526],{"class":777},[596,1937,901],{"class":606},[596,1939,1940],{"class":610}," process",[596,1942,766],{"class":606},[596,1944,1945],{"class":610},"env",[596,1947,766],{"class":606},[596,1949,674],{"class":610},[596,1951,1952],{"class":606},"!,\n",[596,1954,1955,1957],{"class":598,"line":796},[596,1956,799],{"class":606},[596,1958,802],{"class":610},[596,1960,1961],{"class":598,"line":914},[596,1962,725],{"emptyLinePlaceholder":724},[596,1964,1965],{"class":598,"line":929},[596,1966,1967],{"class":698},"\u002F\u002F Send multiple events in one request\n",[596,1969,1970,1972,1974,1977,1979],{"class":598,"line":1482},[596,1971,1081],{"class":602},[596,1973,1899],{"class":737},[596,1975,1976],{"class":610},"(events",[596,1978,788],{"class":606},[596,1980,757],{"class":606},[596,1982,1983,1985,1987,1989,1991,1993,1995,1997],{"class":598,"line":1488},[596,1984,1526],{"class":777},[596,1986,901],{"class":606},[596,1988,1940],{"class":610},[596,1990,766],{"class":606},[596,1992,1945],{"class":610},[596,1994,766],{"class":606},[596,1996,674],{"class":610},[596,1998,1952],{"class":606},[596,2000,2002,2004],{"class":598,"line":2001},11,[596,2003,799],{"class":606},[596,2005,802],{"class":610},[578,2007,2009],{"id":2008},"next-steps","Next Steps",[1703,2011,2012,2018,2024,2030],{},[547,2013,2014,2017],{},[520,2015,2016],{"href":147},"Axiom Adapter"," - Send logs to Axiom for querying and dashboards",[547,2019,2020,2023],{},[520,2021,2022],{"href":152},"OTLP Adapter"," - Send logs via OpenTelemetry Protocol",[547,2025,2026,2029],{},[520,2027,2028],{"href":157},"PostHog Adapter"," - Send logs to PostHog",[547,2031,2032,2035],{},[520,2033,2034],{"href":472},"Custom Adapters"," - Build your own adapter",[2037,2038,2039],"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":591,"searchDepth":702,"depth":702,"links":2041},[2042,2043,2048,2054,2055,2056,2061,2062],{"id":580,"depth":702,"text":20},{"id":630,"depth":702,"text":25,"children":2044},[2045,2046,2047],{"id":634,"depth":721,"text":635},{"id":660,"depth":721,"text":661},{"id":683,"depth":721,"text":684},{"id":1272,"depth":702,"text":485,"children":2049},[2050,2051,2052,2053],{"id":1308,"depth":721,"text":1309},{"id":1361,"depth":721,"text":1362},{"id":1495,"depth":721,"text":1496},{"id":1583,"depth":721,"text":1584},{"id":1694,"depth":702,"text":1695},{"id":1791,"depth":702,"text":1792},{"id":1831,"depth":702,"text":1832,"children":2057},[2058,2059,2060],{"id":1835,"depth":721,"text":1836},{"id":1851,"depth":721,"text":1852},{"id":1865,"depth":721,"text":1866},{"id":1875,"depth":702,"text":1876},{"id":2008,"depth":702,"text":2009},"Send structured logs to Sentry Logs for high-cardinality querying and debugging. Zero-config setup with environment variables.","md",[2066,2072],{"label":2067,"icon":2068,"to":522,"target":2069,"color":2070,"variant":2071},"Sentry Dashboard","i-lucide-external-link","_blank","neutral","subtle",{"label":2022,"icon":154,"to":152,"color":2070,"variant":2071},{},{"title":161,"icon":164},{"title":512,"description":2063},"59WUMV6MpeatW4aXQq7-dK4lDrcD_41ILmIeQMUyWZo",[2078,2080],{"title":156,"path":157,"stem":158,"description":2079,"icon":159,"children":-1},"Send wide events to PostHog Logs via OTLP for structured log querying, debugging, and observability in your PostHog dashboard.",{"title":166,"path":167,"stem":168,"description":2081,"icon":169,"children":-1},"Send wide events to Better Stack (formerly Logtail) for log management, alerting, and dashboards. Zero-config setup with environment variables.",1785599603808]