[{"data":1,"prerenderedAt":1536},["ShallowReactive",2],{"navigation_docs":3,"-integrate-frameworks-aws-lambda":451,"-integrate-frameworks-aws-lambda-surround":1531},[4,30,80,245,365,420],{"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},"Integrate","\u002Fintegrate","3.integrate",[85,89,157],{"title":36,"path":86,"stem":87,"icon":88},"\u002Fintegrate\u002Foverview","3.integrate\u002F0.overview","i-lucide-plug",{"title":90,"path":91,"stem":92,"children":93,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","3.integrate\u002Fadapters",[94,97,137],{"title":36,"path":95,"stem":96,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","3.integrate\u002Fadapters\u002F01.overview",{"title":98,"path":99,"stem":100,"children":101,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","3.integrate\u002Fadapters\u002Fcloud",[102,107,112,117,122,127,132],{"title":103,"path":104,"stem":105,"icon":106},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","3.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":108,"path":109,"stem":110,"icon":111},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","3.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":113,"path":114,"stem":115,"icon":116},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","3.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":118,"path":119,"stem":120,"icon":121},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","3.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":123,"path":124,"stem":125,"icon":126},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","3.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":128,"path":129,"stem":130,"icon":131},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","3.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":133,"path":134,"stem":135,"icon":136},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","3.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":138,"path":139,"stem":140,"children":141,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","3.integrate\u002Fadapters\u002Fself-hosted",[142,147,152],{"title":143,"path":144,"stem":145,"icon":146},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","3.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":148,"path":149,"stem":150,"icon":151},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","3.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":153,"path":154,"stem":155,"icon":156},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","3.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":158,"path":159,"stem":160,"children":161,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","3.integrate\u002Fframeworks",[162,166,171,176,181,186,191,196,201,206,211,216,221,226,230,235,240],{"title":36,"path":163,"stem":164,"icon":165},"\u002Fintegrate\u002Fframeworks\u002Foverview","3.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":167,"path":168,"stem":169,"icon":170},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","3.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":172,"path":173,"stem":174,"icon":175},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","3.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":177,"path":178,"stem":179,"icon":180},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","3.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":182,"path":183,"stem":184,"icon":185},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","3.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":187,"path":188,"stem":189,"icon":190},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","3.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":192,"path":193,"stem":194,"icon":195},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","3.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":197,"path":198,"stem":199,"icon":200},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","3.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":202,"path":203,"stem":204,"icon":205},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","3.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":207,"path":208,"stem":209,"icon":210},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","3.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":212,"path":213,"stem":214,"icon":215},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","3.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":217,"path":218,"stem":219,"icon":220},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","3.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":222,"path":223,"stem":224,"icon":225},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","3.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":227,"path":228,"stem":229,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","3.integrate\u002Fframeworks\u002F13.standalone",{"title":231,"path":232,"stem":233,"icon":234},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","3.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":236,"path":237,"stem":238,"icon":239},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","3.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":241,"path":242,"stem":243,"icon":244},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","3.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":246,"path":247,"stem":248,"children":249,"page":29},"Use Cases","\u002Fuse-cases","4.use-cases",[250,254,259,288,316,348,353,358],{"title":36,"path":251,"stem":252,"icon":253},"\u002Fuse-cases\u002Foverview","4.use-cases\u002F0.overview","i-lucide-list-checks",{"title":255,"path":256,"stem":257,"icon":258},"Client Logging","\u002Fuse-cases\u002Fclient-logging","4.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","4.use-cases\u002F2.ai-sdk",[265,268,273,278,283],{"title":36,"path":266,"stem":267,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","4.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":269,"path":270,"stem":271,"icon":272},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","4.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":274,"path":275,"stem":276,"icon":277},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","4.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":279,"path":280,"stem":281,"icon":282},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","4.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":284,"path":285,"stem":286,"icon":287},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","4.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":289,"icon":290,"path":291,"stem":292,"children":293,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","4.use-cases\u002F3.better-auth",[294,297,302,307,311],{"title":36,"path":295,"stem":296,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","4.use-cases\u002F3.better-auth\u002F01.overview",{"title":298,"path":299,"stem":300,"icon":301},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","4.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":303,"path":304,"stem":305,"icon":306},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","4.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":308,"path":309,"stem":310,"icon":258},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","4.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":312,"path":313,"stem":314,"icon":315},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","4.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":317,"icon":318,"path":319,"stem":320,"children":321,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","4.use-cases\u002F4.audit",[322,325,330,335,340,344],{"title":36,"path":323,"stem":324,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","4.use-cases\u002F4.audit\u002F01.overview",{"title":326,"path":327,"stem":328,"icon":329},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","4.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":331,"path":332,"stem":333,"icon":334},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","4.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":336,"path":337,"stem":338,"icon":339},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","4.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":341,"path":342,"stem":343,"icon":318},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","4.use-cases\u002F4.audit\u002F05.compliance",{"title":345,"path":346,"stem":347,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","4.use-cases\u002F4.audit\u002F06.recipes",{"title":349,"path":350,"stem":351,"icon":352},"Enrichers","\u002Fuse-cases\u002Fenrichers","4.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":354,"path":355,"stem":356,"icon":357},"eve","\u002Fuse-cases\u002Feve","4.use-cases\u002F5.eve","i-custom-eve",{"title":284,"path":359,"stem":360,"children":361,"page":29},"\u002Fuse-cases\u002Ftelemetry","4.use-cases\u002F6.telemetry",[362],{"title":284,"path":363,"stem":364,"icon":315},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","4.use-cases\u002F6.telemetry\u002F01.overview",{"title":366,"path":367,"stem":368,"children":369,"page":29},"Extend","\u002Fextend","5.extend",[370,374,379,384,389,393,397,401,405,410,415],{"title":36,"path":371,"stem":372,"icon":373},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":375,"path":376,"stem":377,"icon":378},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":380,"path":381,"stem":382,"icon":383},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":385,"path":386,"stem":387,"icon":388},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":390,"stem":391,"icon":392},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":394,"path":395,"stem":396,"icon":373},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":398,"path":399,"stem":400,"icon":352},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":402,"path":403,"stem":404,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":406,"path":407,"stem":408,"icon":409},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":411,"path":412,"stem":413,"icon":414},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":416,"path":417,"stem":418,"icon":419},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":421,"path":422,"stem":423,"children":424,"page":29},"Reference","\u002Freference","6.reference",[425,430,433,438,442,447],{"title":426,"path":427,"stem":428,"icon":429},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":431,"stem":432,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":434,"path":435,"stem":436,"icon":437},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":439,"path":440,"stem":441,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":443,"path":444,"stem":445,"icon":446},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":448,"path":449,"stem":450,"icon":352},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":452,"title":241,"body":453,"description":1524,"extension":1525,"links":1526,"meta":1527,"navigation":1528,"path":242,"seo":1529,"stem":243,"__hash__":1530},"docs\u002F3.integrate\u002Fframeworks\u002F16.aws-lambda.md",{"type":454,"value":455,"toc":1512},"minimark",[456,487,527,536,547,562,576,579,584,655,659,1168,1177,1184,1202,1327,1340,1344,1362,1468,1472,1508],[457,458,459,460,464,465,469,470,474,475,478,479,482,483,486],"p",{},"AWS Lambda has ",[461,462,463],"strong",{},"no HTTP middleware lifecycle"," like Nuxt or Express, so evlog behaves like ",[466,467,468],"a",{"href":228},"standalone TypeScript",": call ",[471,472,473],"code",{},"initLogger()"," once, create a logger ",[461,476,477],{},"per invocation"," (or per SQS message) with ",[471,480,481],{},"createLogger()",", then call ",[471,484,485],{},"log.emit()"," when work finishes.",[488,489,492,495,514],"prompt",{":actions":490,"description":491,"icon":244},"[\"copy\",\"cursor\",\"windsurf\"]","Set up evlog in my AWS Lambda function",[457,493,494],{},"Set up evlog in an AWS Lambda function (e.g. SQS consumer).",[496,497,498,502,505,508,511],"ul",{},[499,500,501],"li",{},"Install evlog: pnpm add evlog",[499,503,504],{},"Call initLogger({ env: { service: 'my-fn' } }) once at module load (cold start)",[499,506,507],{},"In the handler, create a new createLogger({ messageId, ... }) per invocation or per message",[499,509,510],{},"Use log.set() to accumulate context; call log.emit() when done",[499,512,513],{},"Avoid a single module-level logger instance reused across invocations (Lambda reuses runtimes)",[457,515,516,517,522,523],{},"Docs: ",[466,518,519],{"href":519,"rel":520},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Faws-lambda",[521],"nofollow","\nAdapters: ",[466,524,525],{"href":525,"rel":526},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Foverview",[521],[528,529,531,532,535],"h2",{"id":530},"why-not-one-global-createlogger","Why not one global ",[471,533,534],{},"createLogger","?",[457,537,538,539,542,543,546],{},"Lambda ",[461,540,541],{},"execution environments are reused",": the same process can handle many invocations in sequence. Module-level variables persist, so ",[461,544,545],{},"one shared logger instance"," can leak fields from a previous invocation into the next.",[457,548,549,552,553,555,556,561],{},[461,550,551],{},"Do this:"," ",[471,554,473],{}," once at the top level (configuration only), and ",[461,557,558,560],{},[471,559,481],{}," inside the handler"," (or inside the loop over SQS records) for each unit of work.",[457,563,564,567,568,571,572,575],{},[461,565,566],{},"Dependency injection"," (passing ",[471,569,570],{},"log"," into functions) is optional—it helps tests and clarity—but what matters is ",[461,573,574],{},"one logger per invocation",", not whether you use DI.",[528,577,25],{"id":578},"quick-start",[580,581,583],"h3",{"id":582},"_1-install","1. Install",[585,586,587,612,626,640],"code-group",{},[588,589,595],"pre",{"className":590,"code":591,"filename":592,"language":593,"meta":594,"style":594},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog\n","pnpm","bash","",[471,596,597],{"__ignoreMap":594},[598,599,602,605,609],"span",{"class":600,"line":601},"line",1,[598,603,592],{"class":604},"sBMFI",[598,606,608],{"class":607},"sfazB"," add",[598,610,611],{"class":607}," evlog\n",[588,613,616],{"className":590,"code":614,"filename":615,"language":593,"meta":594,"style":594},"bun add evlog\n","bun",[471,617,618],{"__ignoreMap":594},[598,619,620,622,624],{"class":600,"line":601},[598,621,615],{"class":604},[598,623,608],{"class":607},[598,625,611],{"class":607},[588,627,630],{"className":590,"code":628,"filename":629,"language":593,"meta":594,"style":594},"yarn add evlog\n","yarn",[471,631,632],{"__ignoreMap":594},[598,633,634,636,638],{"class":600,"line":601},[598,635,629],{"class":604},[598,637,608],{"class":607},[598,639,611],{"class":607},[588,641,644],{"className":590,"code":642,"filename":643,"language":593,"meta":594,"style":594},"npm install evlog\n","npm",[471,645,646],{"__ignoreMap":594},[598,647,648,650,653],{"class":600,"line":601},[598,649,643],{"class":604},[598,651,652],{"class":607}," install",[598,654,611],{"class":607},[580,656,658],{"id":657},"_2-initialize-once-log-per-invocation","2. Initialize once, log per invocation",[588,660,665],{"className":661,"code":662,"filename":663,"language":664,"meta":594,"style":594},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import type { SQSEvent } from 'aws-lambda'\nimport { initLogger, createLogger } from 'evlog'\n\ninitLogger({\n  env: { service: 'sqs-consumer', environment: process.env.NODE_ENV },\n})\n\nexport async function handler(event: SQSEvent) {\n  for (const record of event.Records) {\n    const log = createLogger({\n      messageId: record.messageId,\n      approximateReceiveCount: record.attributes?.ApproximateReceiveCount,\n    })\n\n    try {\n      log.set({ queue: { name: record.eventSourceARN } })\n      \u002F\u002F … parse record.body and process the message\n      log.set({ status: 'ok' })\n    } catch (error) {\n      log.error(error instanceof Error ? error : new Error(String(error)))\n      log.set({ status: 'error' })\n      throw error\n    } finally {\n      log.emit()\n    }\n  }\n}\n","src\u002Fhandler.ts","typescript",[471,666,667,699,726,733,746,795,804,809,841,872,890,908,931,939,944,952,993,1000,1029,1046,1091,1118,1127,1137,1150,1156,1162],{"__ignoreMap":594},[598,668,669,673,676,680,684,687,690,693,696],{"class":600,"line":601},[598,670,672],{"class":671},"s7zQu","import",[598,674,675],{"class":671}," type",[598,677,679],{"class":678},"sMK4o"," {",[598,681,683],{"class":682},"sTEyZ"," SQSEvent",[598,685,686],{"class":678}," }",[598,688,689],{"class":671}," from",[598,691,692],{"class":678}," '",[598,694,695],{"class":607},"aws-lambda",[598,697,698],{"class":678},"'\n",[598,700,702,704,706,709,712,715,717,719,721,724],{"class":600,"line":701},2,[598,703,672],{"class":671},[598,705,679],{"class":678},[598,707,708],{"class":682}," initLogger",[598,710,711],{"class":678},",",[598,713,714],{"class":682}," createLogger",[598,716,686],{"class":678},[598,718,689],{"class":671},[598,720,692],{"class":678},[598,722,723],{"class":607},"evlog",[598,725,698],{"class":678},[598,727,729],{"class":600,"line":728},3,[598,730,732],{"emptyLinePlaceholder":731},true,"\n",[598,734,736,740,743],{"class":600,"line":735},4,[598,737,739],{"class":738},"s2Zo4","initLogger",[598,741,742],{"class":682},"(",[598,744,745],{"class":678},"{\n",[598,747,749,753,756,758,761,763,765,768,771,773,776,778,781,784,787,789,792],{"class":600,"line":748},5,[598,750,752],{"class":751},"swJcz","  env",[598,754,755],{"class":678},":",[598,757,679],{"class":678},[598,759,760],{"class":751}," service",[598,762,755],{"class":678},[598,764,692],{"class":678},[598,766,767],{"class":607},"sqs-consumer",[598,769,770],{"class":678},"'",[598,772,711],{"class":678},[598,774,775],{"class":751}," environment",[598,777,755],{"class":678},[598,779,780],{"class":682}," process",[598,782,783],{"class":678},".",[598,785,786],{"class":682},"env",[598,788,783],{"class":678},[598,790,791],{"class":682},"NODE_ENV ",[598,793,794],{"class":678},"},\n",[598,796,798,801],{"class":600,"line":797},6,[598,799,800],{"class":678},"}",[598,802,803],{"class":682},")\n",[598,805,807],{"class":600,"line":806},7,[598,808,732],{"emptyLinePlaceholder":731},[598,810,812,815,819,822,825,827,831,833,835,838],{"class":600,"line":811},8,[598,813,814],{"class":671},"export",[598,816,818],{"class":817},"spNyl"," async",[598,820,821],{"class":817}," function",[598,823,824],{"class":738}," handler",[598,826,742],{"class":678},[598,828,830],{"class":829},"sHdIc","event",[598,832,755],{"class":678},[598,834,683],{"class":604},[598,836,837],{"class":678},")",[598,839,840],{"class":678}," {\n",[598,842,844,847,850,853,856,859,862,864,867,870],{"class":600,"line":843},9,[598,845,846],{"class":671},"  for",[598,848,849],{"class":751}," (",[598,851,852],{"class":817},"const",[598,854,855],{"class":682}," record",[598,857,858],{"class":678}," of",[598,860,861],{"class":682}," event",[598,863,783],{"class":678},[598,865,866],{"class":682},"Records",[598,868,869],{"class":751},") ",[598,871,745],{"class":678},[598,873,875,878,881,884,886,888],{"class":600,"line":874},10,[598,876,877],{"class":817},"    const",[598,879,880],{"class":682}," log",[598,882,883],{"class":678}," =",[598,885,714],{"class":738},[598,887,742],{"class":751},[598,889,745],{"class":678},[598,891,893,896,898,900,902,905],{"class":600,"line":892},11,[598,894,895],{"class":751},"      messageId",[598,897,755],{"class":678},[598,899,855],{"class":682},[598,901,783],{"class":678},[598,903,904],{"class":682},"messageId",[598,906,907],{"class":678},",\n",[598,909,911,914,916,918,920,923,926,929],{"class":600,"line":910},12,[598,912,913],{"class":751},"      approximateReceiveCount",[598,915,755],{"class":678},[598,917,855],{"class":682},[598,919,783],{"class":678},[598,921,922],{"class":682},"attributes",[598,924,925],{"class":678},"?.",[598,927,928],{"class":682},"ApproximateReceiveCount",[598,930,907],{"class":678},[598,932,934,937],{"class":600,"line":933},13,[598,935,936],{"class":678},"    }",[598,938,803],{"class":751},[598,940,942],{"class":600,"line":941},14,[598,943,732],{"emptyLinePlaceholder":731},[598,945,947,950],{"class":600,"line":946},15,[598,948,949],{"class":671},"    try",[598,951,840],{"class":678},[598,953,955,958,960,963,965,968,971,973,975,978,980,982,984,987,989,991],{"class":600,"line":954},16,[598,956,957],{"class":682},"      log",[598,959,783],{"class":678},[598,961,962],{"class":738},"set",[598,964,742],{"class":751},[598,966,967],{"class":678},"{",[598,969,970],{"class":751}," queue",[598,972,755],{"class":678},[598,974,679],{"class":678},[598,976,977],{"class":751}," name",[598,979,755],{"class":678},[598,981,855],{"class":682},[598,983,783],{"class":678},[598,985,986],{"class":682},"eventSourceARN",[598,988,686],{"class":678},[598,990,686],{"class":678},[598,992,803],{"class":751},[598,994,996],{"class":600,"line":995},17,[598,997,999],{"class":998},"sHwdD","      \u002F\u002F … parse record.body and process the message\n",[598,1001,1003,1005,1007,1009,1011,1013,1016,1018,1020,1023,1025,1027],{"class":600,"line":1002},18,[598,1004,957],{"class":682},[598,1006,783],{"class":678},[598,1008,962],{"class":738},[598,1010,742],{"class":751},[598,1012,967],{"class":678},[598,1014,1015],{"class":751}," status",[598,1017,755],{"class":678},[598,1019,692],{"class":678},[598,1021,1022],{"class":607},"ok",[598,1024,770],{"class":678},[598,1026,686],{"class":678},[598,1028,803],{"class":751},[598,1030,1032,1034,1037,1039,1042,1044],{"class":600,"line":1031},19,[598,1033,936],{"class":678},[598,1035,1036],{"class":671}," catch",[598,1038,849],{"class":751},[598,1040,1041],{"class":682},"error",[598,1043,869],{"class":751},[598,1045,745],{"class":678},[598,1047,1049,1051,1053,1055,1057,1059,1062,1065,1068,1071,1074,1077,1079,1081,1084,1086,1088],{"class":600,"line":1048},20,[598,1050,957],{"class":682},[598,1052,783],{"class":678},[598,1054,1041],{"class":738},[598,1056,742],{"class":751},[598,1058,1041],{"class":682},[598,1060,1061],{"class":678}," instanceof",[598,1063,1064],{"class":604}," Error",[598,1066,1067],{"class":678}," ?",[598,1069,1070],{"class":682}," error",[598,1072,1073],{"class":678}," :",[598,1075,1076],{"class":678}," new",[598,1078,1064],{"class":738},[598,1080,742],{"class":751},[598,1082,1083],{"class":738},"String",[598,1085,742],{"class":751},[598,1087,1041],{"class":682},[598,1089,1090],{"class":751},")))\n",[598,1092,1094,1096,1098,1100,1102,1104,1106,1108,1110,1112,1114,1116],{"class":600,"line":1093},21,[598,1095,957],{"class":682},[598,1097,783],{"class":678},[598,1099,962],{"class":738},[598,1101,742],{"class":751},[598,1103,967],{"class":678},[598,1105,1015],{"class":751},[598,1107,755],{"class":678},[598,1109,692],{"class":678},[598,1111,1041],{"class":607},[598,1113,770],{"class":678},[598,1115,686],{"class":678},[598,1117,803],{"class":751},[598,1119,1121,1124],{"class":600,"line":1120},22,[598,1122,1123],{"class":671},"      throw",[598,1125,1126],{"class":682}," error\n",[598,1128,1130,1132,1135],{"class":600,"line":1129},23,[598,1131,936],{"class":678},[598,1133,1134],{"class":671}," finally",[598,1136,840],{"class":678},[598,1138,1140,1142,1144,1147],{"class":600,"line":1139},24,[598,1141,957],{"class":682},[598,1143,783],{"class":678},[598,1145,1146],{"class":738},"emit",[598,1148,1149],{"class":751},"()\n",[598,1151,1153],{"class":600,"line":1152},25,[598,1154,1155],{"class":678},"    }\n",[598,1157,1159],{"class":600,"line":1158},26,[598,1160,1161],{"class":678},"  }\n",[598,1163,1165],{"class":600,"line":1164},27,[598,1166,1167],{"class":678},"}\n",[457,1169,1170,1171,552,1174,1176],{},"If you process the whole batch as one logical unit, use a ",[461,1172,1173],{},"single",[471,1175,481],{}," per handler invocation with batch metadata instead of one logger per record.",[528,1178,1180,1181],{"id":1179},"stdout-and-silent","Stdout and ",[471,1182,1183],{},"silent",[457,1185,1186,1187,1190,1191,1194,1195,1198,1199,783],{},"Many teams ingest Lambda logs from ",[461,1188,1189],{},"CloudWatch"," via stdout. If you use a ",[461,1192,1193],{},"drain adapter"," (OTLP, Datadog, Axiom, etc.) and want JSON or platform-specific formatting without duplicate console noise, set ",[471,1196,1197],{},"silent: true"," in production—see ",[466,1200,426],{"href":1201},"\u002Freference\u002Fconfiguration#silent-mode",[588,1203,1205],{"className":661,"code":1204,"filename":663,"language":664,"meta":594,"style":594},"import { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { initLogger } from 'evlog'\n\ninitLogger({\n  env: { service: 'sqs-consumer' },\n  silent: process.env.NODE_ENV === 'production',\n  drain: createAxiomDrain(),\n})\n",[471,1206,1207,1227,1245,1249,1257,1278,1307,1321],{"__ignoreMap":594},[598,1208,1209,1211,1213,1216,1218,1220,1222,1225],{"class":600,"line":601},[598,1210,672],{"class":671},[598,1212,679],{"class":678},[598,1214,1215],{"class":682}," createAxiomDrain",[598,1217,686],{"class":678},[598,1219,689],{"class":671},[598,1221,692],{"class":678},[598,1223,1224],{"class":607},"evlog\u002Faxiom",[598,1226,698],{"class":678},[598,1228,1229,1231,1233,1235,1237,1239,1241,1243],{"class":600,"line":701},[598,1230,672],{"class":671},[598,1232,679],{"class":678},[598,1234,708],{"class":682},[598,1236,686],{"class":678},[598,1238,689],{"class":671},[598,1240,692],{"class":678},[598,1242,723],{"class":607},[598,1244,698],{"class":678},[598,1246,1247],{"class":600,"line":728},[598,1248,732],{"emptyLinePlaceholder":731},[598,1250,1251,1253,1255],{"class":600,"line":735},[598,1252,739],{"class":738},[598,1254,742],{"class":682},[598,1256,745],{"class":678},[598,1258,1259,1261,1263,1265,1267,1269,1271,1273,1275],{"class":600,"line":748},[598,1260,752],{"class":751},[598,1262,755],{"class":678},[598,1264,679],{"class":678},[598,1266,760],{"class":751},[598,1268,755],{"class":678},[598,1270,692],{"class":678},[598,1272,767],{"class":607},[598,1274,770],{"class":678},[598,1276,1277],{"class":678}," },\n",[598,1279,1280,1283,1285,1287,1289,1291,1293,1295,1298,1300,1303,1305],{"class":600,"line":797},[598,1281,1282],{"class":751},"  silent",[598,1284,755],{"class":678},[598,1286,780],{"class":682},[598,1288,783],{"class":678},[598,1290,786],{"class":682},[598,1292,783],{"class":678},[598,1294,791],{"class":682},[598,1296,1297],{"class":678},"===",[598,1299,692],{"class":678},[598,1301,1302],{"class":607},"production",[598,1304,770],{"class":678},[598,1306,907],{"class":678},[598,1308,1309,1312,1314,1316,1319],{"class":600,"line":806},[598,1310,1311],{"class":751},"  drain",[598,1313,755],{"class":678},[598,1315,1215],{"class":738},[598,1317,1318],{"class":682},"()",[598,1320,907],{"class":678},[598,1322,1323,1325],{"class":600,"line":811},[598,1324,800],{"class":678},[598,1326,803],{"class":682},[1328,1329,1332,1333,1335,1336,1339],"callout",{"color":1330,"icon":1331},"warning","i-lucide-alert-triangle","If ",[471,1334,1183],{}," is enabled without a ",[471,1337,1338],{},"drain",", events may not be visible anywhere. See the configuration docs for details.",[528,1341,1343],{"id":1342},"error-handling","Error handling",[457,1345,1346,1347,1350,1351,1354,1355,1354,1358,1361],{},"Use ",[471,1348,1349],{},"createError"," where you want structured fields (",[471,1352,1353],{},"why",", ",[471,1356,1357],{},"fix",[471,1359,1360],{},"link","). Map failures to your Lambda return or rethrow so SQS retry\u002FDLQ behavior stays correct—evlog does not replace AWS error semantics.",[588,1363,1365],{"className":661,"code":1364,"filename":663,"language":664,"meta":594,"style":594},"import { createError } from 'evlog'\n\nthrow createError({\n  message: 'Invalid payload',\n  status: 400,\n  why: 'Required field missing',\n  fix: 'Include orderId in the message body',\n})\n",[471,1366,1367,1386,1390,1401,1417,1430,1446,1462],{"__ignoreMap":594},[598,1368,1369,1371,1373,1376,1378,1380,1382,1384],{"class":600,"line":601},[598,1370,672],{"class":671},[598,1372,679],{"class":678},[598,1374,1375],{"class":682}," createError",[598,1377,686],{"class":678},[598,1379,689],{"class":671},[598,1381,692],{"class":678},[598,1383,723],{"class":607},[598,1385,698],{"class":678},[598,1387,1388],{"class":600,"line":701},[598,1389,732],{"emptyLinePlaceholder":731},[598,1391,1392,1395,1397,1399],{"class":600,"line":728},[598,1393,1394],{"class":671},"throw",[598,1396,1375],{"class":738},[598,1398,742],{"class":682},[598,1400,745],{"class":678},[598,1402,1403,1406,1408,1410,1413,1415],{"class":600,"line":735},[598,1404,1405],{"class":751},"  message",[598,1407,755],{"class":678},[598,1409,692],{"class":678},[598,1411,1412],{"class":607},"Invalid payload",[598,1414,770],{"class":678},[598,1416,907],{"class":678},[598,1418,1419,1422,1424,1428],{"class":600,"line":748},[598,1420,1421],{"class":751},"  status",[598,1423,755],{"class":678},[598,1425,1427],{"class":1426},"sbssI"," 400",[598,1429,907],{"class":678},[598,1431,1432,1435,1437,1439,1442,1444],{"class":600,"line":797},[598,1433,1434],{"class":751},"  why",[598,1436,755],{"class":678},[598,1438,692],{"class":678},[598,1440,1441],{"class":607},"Required field missing",[598,1443,770],{"class":678},[598,1445,907],{"class":678},[598,1447,1448,1451,1453,1455,1458,1460],{"class":600,"line":806},[598,1449,1450],{"class":751},"  fix",[598,1452,755],{"class":678},[598,1454,692],{"class":678},[598,1456,1457],{"class":607},"Include orderId in the message body",[598,1459,770],{"class":678},[598,1461,907],{"class":678},[598,1463,1464,1466],{"class":600,"line":811},[598,1465,800],{"class":678},[598,1467,803],{"class":682},[528,1469,1471],{"id":1470},"related","Related",[496,1473,1474,1489,1503],{},[499,1475,1476,1479,1480,1482,1483,1482,1485,1488],{},[466,1477,1478],{"href":228},"Standalone TypeScript",": same ",[471,1481,739],{}," + ",[471,1484,534],{},[471,1486,1487],{},"emit()"," model",[499,1490,1491,1493,1494,1354,1496,849,1499,1502],{},[466,1492,426],{"href":427},": ",[471,1495,1183],{},[471,1497,1498],{},"env.region",[471,1500,1501],{},"AWS_REGION","), drains",[499,1504,1505,1507],{},[466,1506,46],{"href":47},": designing one comprehensive event per unit of work",[1509,1510,1511],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":594,"searchDepth":701,"depth":701,"links":1513},[1514,1516,1520,1522,1523],{"id":530,"depth":701,"text":1515},"Why not one global createLogger?",{"id":578,"depth":701,"text":25,"children":1517},[1518,1519],{"id":582,"depth":728,"text":583},{"id":657,"depth":728,"text":658},{"id":1179,"depth":701,"text":1521},"Stdout and silent",{"id":1342,"depth":701,"text":1343},{"id":1470,"depth":701,"text":1471},"Wide events and structured logging in AWS Lambda functions, including SQS consumers and event-driven handlers.","md",null,{},{"title":241,"icon":244},{"title":241,"description":1524},"G-NR1RzdqqG4Ln17ujCFAO6dZ2kuzPnu8yT5yoYVuw4",[1532,1534],{"title":236,"path":237,"stem":238,"description":1533,"icon":239,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in oRPC applications.",{"title":36,"path":251,"stem":252,"description":1535,"icon":253,"children":-1},"Recipes that solve a specific problem with evlog — capture browser logs, observe AI SDK calls, identify users from Better Auth, build a tamper-evident audit trail, instrument tool telemetry, enrich every event with derived context.",1784142034336]