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