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