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