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