[{"data":1,"prerenderedAt":1362},["ShallowReactive",2],{"navigation_docs_hu":3,"-hu-telemetry-sentry":442,"-hu-telemetry-sentry-surround":1357},[4,45,60,81,112,129,146,173,197,213,242,280,357,373,385,404,430],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":44},"Kezdő lépések","i-lucide-rocket","\u002Fhu\u002Fgetting-started","hu\u002F1.getting-started",[10,15,20,24,29,34,39],{"title":11,"path":12,"stem":13,"icon":14},"Bevezetés","\u002Fhu\u002Fgetting-started\u002Fintroduction","hu\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Laravelből érkezőknek","\u002Fhu\u002Fgetting-started\u002Fcoming-from-laravel","hu\u002F1.getting-started\u002F2.coming-from-laravel","i-lucide-arrow-right-left",{"title":21,"path":22,"stem":23,"icon":19},"Symfonyból érkezőknek","\u002Fhu\u002Fgetting-started\u002Fcoming-from-symfony","hu\u002F1.getting-started\u002F3.coming-from-symfony",{"title":25,"path":26,"stem":27,"icon":28},"Telepítés","\u002Fhu\u002Fgetting-started\u002Finstallation","hu\u002F1.getting-started\u002F4.installation","i-lucide-download",{"title":30,"path":31,"stem":32,"icon":33},"Az első modulod","\u002Fhu\u002Fgetting-started\u002Ffirst-module","hu\u002F1.getting-started\u002F5.first-module","i-lucide-package-plus",{"title":35,"path":36,"stem":37,"icon":38},"Projektstruktúra","\u002Fhu\u002Fgetting-started\u002Fproject-structure","hu\u002F1.getting-started\u002F6.project-structure","i-lucide-folder-tree",{"title":40,"path":41,"stem":42,"icon":43},"A shop mintaalkalmazás","\u002Fhu\u002Fgetting-started\u002Fsample-app","hu\u002F1.getting-started\u002F7.sample-app","i-lucide-shopping-cart",false,{"title":46,"icon":47,"path":48,"stem":49,"children":50,"page":44},"queue","i-lucide-layers","\u002Fhu\u002Fqueue","hu\u002F10.queue",[51,56],{"title":52,"path":53,"stem":54,"icon":55},"Áttekintés","\u002Fhu\u002Fqueue\u002Foverview","hu\u002F10.queue\u002F1.overview","i-lucide-list-ordered",{"title":57,"path":58,"stem":59,"icon":47},"Taskok","\u002Fhu\u002Fqueue\u002Ftasks","hu\u002F10.queue\u002F2.tasks",{"title":61,"icon":62,"path":63,"stem":64,"children":65,"page":44},"events","i-lucide-workflow","\u002Fhu\u002Fevents","hu\u002F11.events",[66,71,76],{"title":67,"path":68,"stem":69,"icon":70},"Események","\u002Fhu\u002Fevents\u002Foverview","hu\u002F11.events\u002F1.overview","i-lucide-radio",{"title":72,"path":73,"stem":74,"icon":75},"Outbox","\u002Fhu\u002Fevents\u002Foutbox","hu\u002F11.events\u002F2.outbox","i-lucide-inbox",{"title":77,"path":78,"stem":79,"icon":80},"Ütemezés","\u002Fhu\u002Fevents\u002Fscheduler","hu\u002F11.events\u002F3.scheduler","i-lucide-calendar-clock",{"title":82,"icon":83,"path":84,"stem":85,"children":86,"page":44},"auth","i-lucide-shield-check","\u002Fhu\u002Fauth","hu\u002F12.auth",[87,92,97,102,107],{"title":88,"path":89,"stem":90,"icon":91},"Autentikáció","\u002Fhu\u002Fauth\u002Foverview","hu\u002F12.auth\u002F1.overview","i-lucide-key-round",{"title":93,"path":94,"stem":95,"icon":96},"RBAC","\u002Fhu\u002Fauth\u002Frbac","hu\u002F12.auth\u002F2.rbac","i-lucide-users",{"title":98,"path":99,"stem":100,"icon":101},"Policy-k","\u002Fhu\u002Fauth\u002Fpolicy","hu\u002F12.auth\u002F3.policy","i-lucide-gavel",{"title":103,"path":104,"stem":105,"icon":106},"Az auth önálló használata","\u002Fhu\u002Fauth\u002Fstandalone","hu\u002F12.auth\u002F4.standalone","i-lucide-plug",{"title":108,"path":109,"stem":110,"icon":111},"Social login goth-tal, önállóan","\u002Fhu\u002Fauth\u002Fsocial-standalone","hu\u002F12.auth\u002F5.social-standalone","i-lucide-log-in",{"title":113,"icon":114,"path":115,"stem":116,"children":117,"page":44},"mail","i-lucide-mail","\u002Fhu\u002Fmail","hu\u002F13.mail",[118,121,125],{"title":52,"path":119,"stem":120,"icon":114},"\u002Fhu\u002Fmail\u002Foverview","hu\u002F13.mail\u002F1.overview",{"title":122,"path":123,"stem":124,"icon":114},"SMTP","\u002Fhu\u002Fmail\u002Fsmtp","hu\u002F13.mail\u002F2.smtp",{"title":126,"path":127,"stem":128,"icon":114},"MJML","\u002Fhu\u002Fmail\u002Fmjml","hu\u002F13.mail\u002F3.mjml",{"title":130,"icon":131,"path":132,"stem":133,"children":134,"page":44},"notify","i-lucide-bell","\u002Fhu\u002Fnotify","hu\u002F14.notify",[135,138,142],{"title":52,"path":136,"stem":137,"icon":131},"\u002Fhu\u002Fnotify\u002Foverview","hu\u002F14.notify\u002F1.overview",{"title":139,"path":140,"stem":141,"icon":131},"Database csatorna","\u002Fhu\u002Fnotify\u002Fdatabase","hu\u002F14.notify\u002F2.database",{"title":143,"path":144,"stem":145,"icon":131},"Broadcast csatorna","\u002Fhu\u002Fnotify\u002Fbroadcast","hu\u002F14.notify\u002F3.broadcast",{"title":147,"icon":148,"path":149,"stem":150,"children":151,"page":44},"storage","i-lucide-hard-drive","\u002Fhu\u002Fstorage","hu\u002F15.storage",[152,155,159,163,168],{"title":52,"path":153,"stem":154,"icon":148},"\u002Fhu\u002Fstorage\u002Foverview","hu\u002F15.storage\u002F1.overview",{"title":156,"path":157,"stem":158},"Disk API","\u002Fhu\u002Fstorage\u002Fdisk-api","hu\u002F15.storage\u002F2.disk-api",{"title":160,"path":161,"stem":162,"icon":148},"Memória és helyi lemez","\u002Fhu\u002Fstorage\u002Flocal","hu\u002F15.storage\u002F3.local",{"title":164,"path":165,"stem":166,"icon":167},"S3","\u002Fhu\u002Fstorage\u002Fs3","hu\u002F15.storage\u002F4.s3","i-lucide-cloud",{"title":169,"path":170,"stem":171,"icon":172},"Tesztelés","\u002Fhu\u002Fstorage\u002Ftesting","hu\u002F15.storage\u002F5.testing","i-lucide-flask-conical",{"title":174,"icon":175,"path":176,"stem":177,"children":178,"page":44},"telemetry","i-lucide-activity","\u002Fhu\u002Ftelemetry","hu\u002F16.telemetry",[179,182,187,192],{"title":52,"path":180,"stem":181,"icon":175},"\u002Fhu\u002Ftelemetry\u002Foverview","hu\u002F16.telemetry\u002F1.overview",{"title":183,"path":184,"stem":185,"icon":186},"Logolás","\u002Fhu\u002Ftelemetry\u002Flogging","hu\u002F16.telemetry\u002F2.logging","i-lucide-scroll-text",{"title":188,"path":189,"stem":190,"icon":191},"OpenTelemetry","\u002Fhu\u002Ftelemetry\u002Fopentelemetry","hu\u002F16.telemetry\u002F3.opentelemetry","i-lucide-radar",{"title":193,"path":194,"stem":195,"icon":196},"Sentry","\u002Fhu\u002Ftelemetry\u002Fsentry","hu\u002F16.telemetry\u002F4.sentry","i-lucide-bug",{"title":198,"icon":199,"path":200,"stem":201,"children":202,"page":44},"Referencia","i-lucide-book-open","\u002Fhu\u002Freference","hu\u002F17.reference",[203,208],{"title":204,"path":205,"stem":206,"icon":207},"Konfiguráció","\u002Fhu\u002Freference\u002Fconfiguration","hu\u002F17.reference\u002F1.configuration","i-lucide-settings",{"title":209,"path":210,"stem":211,"icon":212},"Külső függőségek","\u002Fhu\u002Freference\u002Fdependencies","hu\u002F17.reference\u002F2.dependencies","i-lucide-package",{"title":214,"icon":215,"path":216,"stem":217,"children":218,"page":44},"Koncepciók","i-lucide-lightbulb","\u002Fhu\u002Fconcepts","hu\u002F2.concepts",[219,223,228,232,237],{"title":220,"path":221,"stem":222,"icon":47},"Architektúra","\u002Fhu\u002Fconcepts\u002Farchitecture","hu\u002F2.concepts\u002F1.architecture",{"title":224,"path":225,"stem":226,"icon":227},"Hibamodell","\u002Fhu\u002Fconcepts\u002Ferror-model","hu\u002F2.concepts\u002F2.error-model","i-lucide-shield-alert",{"title":204,"path":229,"stem":230,"icon":231},"\u002Fhu\u002Fconcepts\u002Fconfiguration","hu\u002F2.concepts\u002F3.configuration","i-lucide-settings-2",{"title":233,"path":234,"stem":235,"icon":236},"Codegen pipeline","\u002Fhu\u002Fconcepts\u002Fcodegen-pipeline","hu\u002F2.concepts\u002F4.codegen-pipeline","i-lucide-file-json",{"title":238,"path":239,"stem":240,"icon":241},"Design patternek","\u002Fhu\u002Fconcepts\u002Fdesign-patterns","hu\u002F2.concepts\u002F5.design-patterns","i-lucide-puzzle",{"title":243,"icon":244,"path":245,"stem":246,"children":247,"page":44},"A kit","i-lucide-box","\u002Fhu\u002Fkit","hu\u002F3.kit",[248,252,257,262,267,271,276],{"title":249,"path":250,"stem":251,"icon":244},"A kit áttekintése","\u002Fhu\u002Fkit\u002Foverview","hu\u002F3.kit\u002F1.overview",{"title":253,"path":254,"stem":255,"icon":256},"Alkalmazás-életciklus","\u002Fhu\u002Fkit\u002Fapp","hu\u002F3.kit\u002F2.app","i-lucide-power",{"title":258,"path":259,"stem":260,"icon":261},"Szerver","\u002Fhu\u002Fkit\u002Fserver","hu\u002F3.kit\u002F3.server","i-lucide-server",{"title":263,"path":264,"stem":265,"icon":266},"Worker","\u002Fhu\u002Fkit\u002Fworker","hu\u002F3.kit\u002F4.worker","i-lucide-cog",{"title":268,"path":269,"stem":270,"icon":70},"Realtime","\u002Fhu\u002Fkit\u002Frealtime","hu\u002F3.kit\u002F5.realtime",{"title":272,"path":273,"stem":274,"icon":275},"Migrációk","\u002Fhu\u002Fkit\u002Fmigrations","hu\u002F3.kit\u002F6.migrations","i-lucide-file-stack",{"title":277,"path":278,"stem":279,"icon":111},"Social login","\u002Fhu\u002Fkit\u002Fsocial-login","hu\u002F3.kit\u002F7.social-login",{"title":281,"icon":282,"path":283,"stem":284,"children":285,"page":44},"CLI referencia","i-lucide-terminal","\u002Fhu\u002Fcli","hu\u002F4.cli",[286,289,294,299,304,309,314,319,324,329,334,338,343,348,352],{"title":52,"path":287,"stem":288,"icon":282},"\u002Fhu\u002Fcli\u002Foverview","hu\u002F4.cli\u002F1.overview",{"title":290,"path":291,"stem":292,"icon":293},"add db","\u002Fhu\u002Fcli\u002Fadd-db","hu\u002F4.cli\u002F10.add-db","i-lucide-database-zap",{"title":295,"path":296,"stem":297,"icon":298},"add compose \u002F add docker","\u002Fhu\u002Fcli\u002Fadd-compose","hu\u002F4.cli\u002F11.add-compose","i-lucide-container",{"title":300,"path":301,"stem":302,"icon":303},"add mail","\u002Fhu\u002Fcli\u002Fadd-mail","hu\u002F4.cli\u002F12.add-mail","i-lucide-mail-plus",{"title":305,"path":306,"stem":307,"icon":308},"add notification","\u002Fhu\u002Fcli\u002Fadd-notification","hu\u002F4.cli\u002F13.add-notification","i-lucide-bell-plus",{"title":310,"path":311,"stem":312,"icon":313},"add realtime","\u002Fhu\u002Fcli\u002Fadd-realtime","hu\u002F4.cli\u002F14.add-realtime","i-lucide-radio-tower",{"title":315,"path":316,"stem":317,"icon":318},"add seeder","\u002Fhu\u002Fcli\u002Fadd-seeder","hu\u002F4.cli\u002F15.add-seeder","i-lucide-sprout",{"title":320,"path":321,"stem":322,"icon":323},"new project","\u002Fhu\u002Fcli\u002Fnew-project","hu\u002F4.cli\u002F2.new-project","i-lucide-folder-plus",{"title":325,"path":326,"stem":327,"icon":328},"new module","\u002Fhu\u002Fcli\u002Fnew-module","hu\u002F4.cli\u002F3.new-module","i-lucide-blocks",{"title":330,"path":331,"stem":332,"icon":333},"add surface","\u002Fhu\u002Fcli\u002Fadd-surface","hu\u002F4.cli\u002F4.add-surface","i-lucide-layers-2",{"title":335,"path":336,"stem":337,"icon":244},"add core","\u002Fhu\u002Fcli\u002Fadd-core","hu\u002F4.cli\u002F5.add-core",{"title":339,"path":340,"stem":341,"icon":342},"add handler","\u002Fhu\u002Fcli\u002Fadd-handler","hu\u002F4.cli\u002F6.add-handler","i-lucide-webhook",{"title":344,"path":345,"stem":346,"icon":347},"new migration","\u002Fhu\u002Fcli\u002Fnew-migration","hu\u002F4.cli\u002F7.new-migration","i-lucide-file-plus",{"title":349,"path":350,"stem":351,"icon":266},"worker generátorok","\u002Fhu\u002Fcli\u002Fworker-generators","hu\u002F4.cli\u002F8.worker-generators",{"title":353,"path":354,"stem":355,"icon":356},"upgrade templates","\u002Fhu\u002Fcli\u002Fupgrade-templates","hu\u002F4.cli\u002F9.upgrade-templates","i-lucide-refresh-cw",{"title":358,"icon":227,"path":359,"stem":360,"children":361,"page":44},"errs","\u002Fhu\u002Ferrs","hu\u002F5.errs",[362,365,369],{"title":52,"path":363,"stem":364,"icon":227},"\u002Fhu\u002Ferrs\u002Foverview","hu\u002F5.errs\u002F1.overview",{"title":366,"path":367,"stem":368},"API","\u002Fhu\u002Ferrs\u002Fapi","hu\u002F5.errs\u002F2.api",{"title":370,"path":371,"stem":372,"icon":227},"Integráció","\u002Fhu\u002Ferrs\u002Fintegration","hu\u002F5.errs\u002F3.integration",{"title":374,"icon":231,"path":375,"stem":376,"children":377,"page":44},"envconf","\u002Fhu\u002Fenvconf","hu\u002F6.envconf",[378,381],{"title":52,"path":379,"stem":380,"icon":231},"\u002Fhu\u002Fenvconf\u002Foverview","hu\u002F6.envconf\u002F1.overview",{"title":382,"path":383,"stem":384},"Receptek","\u002Fhu\u002Fenvconf\u002Frecipes","hu\u002F6.envconf\u002F2.recipes",{"title":386,"icon":387,"path":388,"stem":389,"children":390,"page":44},"httperr","i-lucide-globe","\u002Fhu\u002Fhttperr","hu\u002F7.httperr",[391,394,399],{"title":52,"path":392,"stem":393,"icon":387},"\u002Fhu\u002Fhttperr\u002Foverview","hu\u002F7.httperr\u002F1.overview",{"title":395,"path":396,"stem":397,"icon":398},"Hibaválaszok","\u002Fhu\u002Fhttperr\u002Ferror-responses","hu\u002F7.httperr\u002F2.error-responses","i-lucide-octagon-alert",{"title":400,"path":401,"stem":402,"icon":403},"Validáció","\u002Fhu\u002Fhttperr\u002Fvalidation","hu\u002F7.httperr\u002F3.validation","i-lucide-badge-check",{"title":405,"icon":406,"path":407,"stem":408,"children":409,"page":44},"dbx","i-lucide-database","\u002Fhu\u002Fdbx","hu\u002F8.dbx",[410,413,417,421,426],{"title":52,"path":411,"stem":412,"icon":406},"\u002Fhu\u002Fdbx\u002Foverview","hu\u002F8.dbx\u002F1.overview",{"title":414,"path":415,"stem":416,"icon":106},"pgx","\u002Fhu\u002Fdbx\u002Fpg","hu\u002F8.dbx\u002F2.pg",{"title":418,"path":419,"stem":420,"icon":47},"bun","\u002Fhu\u002Fdbx\u002Fbunx","hu\u002F8.dbx\u002F3.bunx",{"title":422,"path":423,"stem":424,"icon":425},"Tranzakciók","\u002Fhu\u002Fdbx\u002Ftransactions","hu\u002F8.dbx\u002F4.transactions","i-lucide-git-merge",{"title":427,"path":428,"stem":429,"icon":318},"Seederek","\u002Fhu\u002Fdbx\u002Fseed","hu\u002F8.dbx\u002F5.seed",{"title":431,"icon":55,"path":432,"stem":433,"children":434,"page":44},"paginate","\u002Fhu\u002Fpaginate","hu\u002F9.paginate",[435,438],{"title":52,"path":436,"stem":437,"icon":55},"\u002Fhu\u002Fpaginate\u002Foverview","hu\u002F9.paginate\u002F1.overview",{"title":439,"path":440,"stem":441,"icon":19},"Cursor-lapozás","\u002Fhu\u002Fpaginate\u002Fcursor","hu\u002F9.paginate\u002F2.cursor",{"id":443,"title":193,"body":444,"description":1350,"extension":1351,"links":1352,"meta":1353,"navigation":1354,"path":194,"seo":1355,"stem":195,"__hash__":1356},"docs_hu\u002Fhu\u002F16.telemetry\u002F4.sentry.md",{"type":445,"value":446,"toc":1341},"minimark",[447,476,479,535,545,549,637,652,656,672,744,755,759,775,813,819,959,977,986,990,1007,1011,1045,1051,1282,1286,1305,1309,1328,1337],[448,449,450,451,455,456,464,465,468,469,472,473,475],"p",{},"Egy DSN beállítása után a ",[452,453,454],"code",{},"sentryx"," a Sentry hibariportolást ",[457,458,459,460,463],"strong",{},"a ",[452,461,462],{},"slog","-on és az OpenTelemetryn keresztül"," kapcsolja be. Ez nem technikai apróság, hanem a lényeg: mivel a ",[466,467,386],"a",{"href":396}," handlerek, a chi panic-recovery és a ",[466,470,471],{"href":264},"worker"," már ma is ",[452,474,462],{},"-on, trace-hordozó contexttel logolnak minden 5xx-et és task-hibát, egyetlen slog-handler bekötése az összes belépési pontot lefedi: a te kódodban semmi Sentry-specifikus nincs.",[448,477,478],{},"Bekapcsolás:",[480,481,486],"pre",{"className":482,"code":483,"language":484,"meta":485,"style":485},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","SENTRY_DSN=https:\u002F\u002F\u003Ckey>@\u003Corg>.ingest.sentry.io\u002F\u003Cproject>\n","sh","",[452,487,488],{"__ignoreMap":485},[489,490,493,497,501,505,508,511,514,517,519,522,524,527,529,532],"span",{"class":491,"line":492},"line",1,[489,494,496],{"class":495},"sTEyZ","SENTRY_DSN",[489,498,500],{"class":499},"sMK4o","=",[489,502,504],{"class":503},"sfazB","https:\u002F\u002F",[489,506,507],{"class":499},"\u003C",[489,509,510],{"class":503},"key",[489,512,513],{"class":499},">",[489,515,516],{"class":503},"@",[489,518,507],{"class":499},[489,520,521],{"class":503},"org",[489,523,513],{"class":499},[489,525,526],{"class":503},".ingest.sentry.io\u002F",[489,528,507],{"class":499},[489,530,531],{"class":503},"project",[489,533,534],{"class":499},">\n",[448,536,537,538,540,541,544],{},"Ennyi. ",[452,539,496],{}," nélkül az integráció ",[457,542,543],{},"teljesen ki van kapcsolva",": minden hook no-op, a viselkedés azonos egy Sentry nélküli kittel.",[546,547,204],"h2",{"id":548},"konfiguráció",[550,551,552,568],"table",{},[553,554,555],"thead",{},[556,557,558,562,565],"tr",{},[559,560,561],"th",{},"Változó",[559,563,564],{},"Default",[559,566,567],{},"Jelentés",[569,570,571,584,604,623],"tbody",{},[556,572,573,578,581],{},[574,575,576],"td",{},[452,577,496],{},[574,579,580],{},"üres",[574,582,583],{},"projekt DSN; üresen az integráció teljesen ki",[556,585,586,591,601],{},[574,587,588],{},[452,589,590],{},"SENTRY_ENVIRONMENT",[574,592,593,594,597,598],{},"dev → ",[452,595,596],{},"development",", egyébként ",[452,599,600],{},"production",[574,602,603],{},"environment tag minden eventen",[556,605,606,611,616],{},[574,607,608],{},[452,609,610],{},"SENTRY_TRACES",[574,612,613],{},[452,614,615],{},"true",[574,617,618,619,622],{},"a kit OTel spanjeinek küldése a Sentrybe; ",[452,620,621],{},"false",", ha a collectorod továbbítja őket",[556,624,625,630,634],{},[574,626,627],{},[452,628,629],{},"SENTRY_DEBUG",[574,631,632],{},[452,633,621],{},[574,635,636],{},"a Sentry SDK saját debug-logja stderr-re",[448,638,639,640,643,644,647,648,651],{},"A release minden eventen ",[452,641,642],{},"\u003Cservice>@\u003Cverzió>"," (az ",[452,645,646],{},"OTEL_SERVICE_NAME"," \u002F ",[452,649,650],{},"OTEL_SERVICE_VERSION"," értékéből), a Sentry release-követése külön beállítás nélkül működik.",[546,653,655],{"id":654},"az-otel-tetején-nem-helyette","Az OTel tetején, nem helyette",[448,657,658,659,661,662,667,668,671],{},"A ",[452,660,454],{}," nem hoz saját trace-elést, saját middleware-hálót, saját mérést: az OTel marad a gerinc, a Sentry három ponton csatlakozik rá. Mindhármat a ",[466,663,664],{"href":180},[452,665,666],{},"telemetry.Setup"," drótozza be, te sosem hívod a ",[452,669,670],{},"sentryx.Setup","-ot:",[673,674,675,698,738],"ul",{},[676,677,678,681,682,685,686,689,690,693,694,697],"li",{},[457,679,680],{},"Spanek → Sentry."," A ",[452,683,684],{},"Handle.SpanExporter()"," egy plusz exporterként kerül az ",[452,687,688],{},"otelx"," tracer providerére (",[452,691,692],{},"otelx.WithSpanExporter","): ugyanazok a spanek mennek a collectorodba és a Sentrybe. A hiba így a teljes trace-waterfallhoz linkelődik: a HTTP-span, minden DB-query az idejével, a queue-taskok. A sampling OTel-vezérelt marad (",[452,695,696],{},"OTEL_TRACES_SAMPLER","), nincs külön Sentry sample rate.",[676,699,700,681,703,706,707,710,711,715,716,718,719,722,723,722,726,729,730,733,734,737],{},[457,701,702],{},"Hibák → Sentry.",[452,704,705],{},"Handle.SlogHandler()"," a log-fanout egyik ága: minden ",[452,708,709],{},"ERROR","-szintű rekord Sentry event lesz. A rekord első hiba-értékű attr-ja a captured exception; egy ",[466,712,713],{"href":225},[452,714,358],{}," hiba a keletkezési pontján rögzített stackjét, kódját, publikus üzenetét és wrap-láncát is magával viszi (az event ",[452,717,358],{}," contextjében). Az alacsonyabb szintű rekordok (",[452,720,721],{},"DEBUG","\u002F",[452,724,725],{},"INFO",[452,727,728],{},"WARN",") ",[457,731,732],{},"breadcrumb","-ként gyűlnek, így az event alatt ott a hozzá vezető log-nyomvonal, a ",[452,735,736],{},"LOG_LEVEL","-t ugyanúgy tisztelik, mint bármely sink.",[676,739,740,743],{},[457,741,742],{},"Hiba ↔ trace linkelés."," Az OTel-integráció minden eventre rábélyegzi az aktív trace\u002Fspan ID-t, így a hiba a helyes spanre kerül a waterfallban.",[448,745,746,747,750,751,754],{},"A breadcrumb-izoláció kérésenkénti: a chassis minden belépési ponton (chi middleware, worker task-middleware) meghívja a ",[452,748,749],{},"sentryx.WithRequestHub","-ot, ami a contextre egy friss, klónozott hubot tesz, így az egyik kérés logsorai nem szivárognak át a másik kérés eventjébe. Hub nélküli contextben (pl. egy saját goroutine ",[452,752,753],{},"context.Background()","-dal) a breadcrumb-ok inkább eldobódnak, mint hogy a globális hubot szennyezzék.",[546,756,758],{"id":757},"egy-hiba-egy-issue-az-errs-kód-mint-fingerprint","Egy hiba = egy issue: az errs-kód mint fingerprint",[448,760,761,762,764,765,768,769,771,772,774],{},"A Sentry alapból a legkülső exception típusa szerint címez és csoportosít. Go-ban ez a típusnév lenne, és mivel egy ",[452,763,358],{},"-lánc minden szintje ugyanazt a ",[452,766,767],{},"*errs.Error"," típust hordozza, minden hibád egyetlen ",[452,770,767],{}," nevű issue-ba folyna össze. A ",[452,773,454],{}," ezért küldés előtt átírja az eventet:",[673,776,777,786,796],{},[676,778,779,785],{},[457,780,781,782,784],{},"Az issue címe a hiba ",[452,783,358],{},"-kódja"," lesz (kód híján a legkülső wrap-üzenete).",[676,787,788,791,792,795],{},[457,789,790],{},"A kód a grouping fingerprint is",": egy ",[466,793,794],{"href":225},"deklarált hiba"," minden előfordulása egy issue-ba csoportosul, függetlenül attól, hány különböző kódútvonalon keletkezett.",[676,797,798,805,806,809,810,812],{},[457,799,800,801,804],{},"A másodlagos sor a ",[452,802,803],{},"Public"," üzenet"," (ha van): az issue-lista ",[452,807,808],{},"kód \u002F kliens felé mutatott szöveg"," formában olvasható, a teljes belső lánc egy kattintásra, az event ",[452,811,358],{}," contextjében.",[448,814,658,815,818],{},[466,816,817],{"href":41},"shop"," kanonikus hibáján ez így fest:",[480,820,824],{"className":821,"code":822,"language":823,"meta":485,"style":485},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","var ErrOutOfStock = errs.Define(\"shop_out_of_stock\",\n    errs.Public(\"Egy vagy több tétel nincs elegendő készleten.\"))\n\n\u002F\u002F repository:\nreturn ErrOutOfStock.New(\"inventory: decrement: insufficient stock\")\n\u002F\u002F service:\nreturn errs.Wrap(err, \"shop: place order\")\n","go",[452,825,826,860,882,889,896,923,929],{"__ignoreMap":485},[489,827,828,831,834,836,839,842,846,849,852,855,857],{"class":491,"line":492},[489,829,830],{"class":499},"var",[489,832,833],{"class":495}," ErrOutOfStock ",[489,835,500],{"class":499},[489,837,838],{"class":495}," errs",[489,840,841],{"class":499},".",[489,843,845],{"class":844},"s2Zo4","Define",[489,847,848],{"class":499},"(",[489,850,851],{"class":499},"\"",[489,853,854],{"class":503},"shop_out_of_stock",[489,856,851],{"class":499},[489,858,859],{"class":499},",\n",[489,861,863,866,868,870,872,874,877,879],{"class":491,"line":862},2,[489,864,865],{"class":495},"    errs",[489,867,841],{"class":499},[489,869,803],{"class":844},[489,871,848],{"class":499},[489,873,851],{"class":499},[489,875,876],{"class":503},"Egy vagy több tétel nincs elegendő készleten.",[489,878,851],{"class":499},[489,880,881],{"class":499},"))\n",[489,883,885],{"class":491,"line":884},3,[489,886,888],{"emptyLinePlaceholder":887},true,"\n",[489,890,892],{"class":491,"line":891},4,[489,893,895],{"class":894},"sHwdD","\u002F\u002F repository:\n",[489,897,899,903,906,908,911,913,915,918,920],{"class":491,"line":898},5,[489,900,902],{"class":901},"s7zQu","return",[489,904,905],{"class":495}," ErrOutOfStock",[489,907,841],{"class":499},[489,909,910],{"class":844},"New",[489,912,848],{"class":499},[489,914,851],{"class":499},[489,916,917],{"class":503},"inventory: decrement: insufficient stock",[489,919,851],{"class":499},[489,921,922],{"class":499},")\n",[489,924,926],{"class":491,"line":925},6,[489,927,928],{"class":894},"\u002F\u002F service:\n",[489,930,932,934,936,938,941,943,946,949,952,955,957],{"class":491,"line":931},7,[489,933,902],{"class":901},[489,935,838],{"class":495},[489,937,841],{"class":499},[489,939,940],{"class":844},"Wrap",[489,942,848],{"class":499},[489,944,945],{"class":495},"err",[489,947,948],{"class":499},",",[489,950,951],{"class":499}," \"",[489,953,954],{"class":503},"shop: place order",[489,956,851],{"class":499},[489,958,922],{"class":499},[448,960,961,962,965,966,968,969,972,973,976],{},"Akárhány rendelés bukik el, akárhogy alakul közben a stack, a Sentryben ",[457,963,964],{},"egyetlen issue",": ",[452,967,854],{},", alatta a publikus üzenettel, minden eventjén a teljes stackkel, a wrap-lánccal, a request breadcrumb-jaival és a trace-linkkel. Amikor pedig eldöntitek, hogy a készlethiány nem incidens, hanem elvárt kliens-viselkedés, adjatok a definícióhoz ",[452,970,971],{},"errs.Status(http.StatusConflict)","-ot: onnantól 409-ként megy ki, és se ",[452,974,975],{},"request failed"," logsor, se Sentry event nem születik belőle, az issue magától elhal.",[978,979,980,981,985],"note",{},"A Sentry OTLP-ingestje a trace-eket fogadja, de az OTel span-",[982,983,984],"em",{},"eventeket"," eldobja: a lifecycle-nézet a valódi spanekből (HTTP, DB, queue, S3) és a breadcrumb-nyomvonalból áll össze. A forráskód-kontextust a Sentry felületén a GitHub\u002FSCM integráció adja; a Go binárisok nem hordoznak forrást.",[546,987,989],{"id":988},"dev-módban-is-működik-collector-nélkül","Dev módban is működik: collector nélkül",[448,991,992,995,996,999,1000,1002,1003,1006],{},[452,993,994],{},"OTEL_DEV_MODE=true"," mellett az OTel ",[466,997,998],{"href":189},"nem épít exportert",", de ha a ",[452,1001,496],{}," be van állítva, a kit egy Sentry-only tracer providert húz fel, így ",[457,1004,1005],{},"lokálisan, mindenféle collector nélkül"," megkapod a teljes trace-t és a hibát a Sentryben. Ez a legolcsóbb módja annak, hogy a „kövesd a rendelést\" trace-t élőben lásd: dev mód + egy dev Sentry-projekt DSN-je.",[546,1008,1010],{"id":1009},"miért-wrapper-a-kivétel-ami-erősíti-a-szabályt","Miért wrapper: a kivétel, ami erősíti a szabályt",[448,1012,1013,1014,1017,1018,1020,1021,1024,1025,1027,1028,1030,1031,1033,1034,1036,1037,1040,1041,1044],{},"A kit elve a ",[466,1015,1016],{"href":12},"centralizál, nem absztrahál",", és a ",[452,1019,454],{}," a három kimondott kivétel egyike: a sentry-go-t tényleg becsomagolja. Az ok az ",[457,1022,1023],{},"elhagyhatóság",". A Sentry opcionális integráció: env-ből kapcsolható, és mivel kizárólag a ",[452,1026,174],{}," facade és a chassis importálja a ",[452,1029,454],{},"-et, egy nem-chassis bináris (CLI, migrátor, bármi, ami csak ",[452,1032,688],{},"-et vagy ",[452,1035,405],{},"-et használ) ",[457,1038,1039],{},"be sem linkeli a sentry-go-t",". Ha a sentry-go típusok átfolynának a kit API-ján, ez a garancia elveszne. A napi munkában amúgy sem hívod: a hibáid a ",[452,1042,1043],{},"return err","-rel jutnak el a Sentrybe.",[448,1046,1047,1048,1050],{},"Az API ettől még ott van, ha kell (a ",[452,1049,174],{}," is ezen keresztül dolgozik):",[480,1052,1054],{"className":821,"code":1053,"language":823,"meta":485,"style":485},"func Setup(ctx context.Context, cfg Config, serviceName, serviceVersion string, dev bool) (*Handle, error)\n\nfunc (h *Handle) Enabled() bool\nfunc (h *Handle) SpanExporter() sdktrace.SpanExporter  \u002F\u002F nil, ha ki van kapcsolva \u002F SENTRY_TRACES=false\nfunc (h *Handle) SlogHandler() slog.Handler            \u002F\u002F nil, ha ki van kapcsolva\nfunc (h *Handle) Flush(ctx context.Context) error      \u002F\u002F event-transport drain\n\nfunc WithRequestHub(ctx context.Context) context.Context \u002F\u002F kérésenkénti hub, a chassis hívja\n",[452,1055,1056,1125,1129,1155,1185,1215,1249,1253],{"__ignoreMap":485},[489,1057,1058,1061,1064,1066,1070,1074,1076,1079,1081,1084,1087,1089,1092,1094,1097,1101,1103,1106,1109,1112,1115,1118,1120,1123],{"class":491,"line":492},[489,1059,1060],{"class":499},"func",[489,1062,1063],{"class":844}," Setup",[489,1065,848],{"class":499},[489,1067,1069],{"class":1068},"sHdIc","ctx",[489,1071,1073],{"class":1072},"sBMFI"," context",[489,1075,841],{"class":499},[489,1077,1078],{"class":1072},"Context",[489,1080,948],{"class":499},[489,1082,1083],{"class":1068}," cfg",[489,1085,1086],{"class":1072}," Config",[489,1088,948],{"class":499},[489,1090,1091],{"class":1068}," serviceName",[489,1093,948],{"class":499},[489,1095,1096],{"class":1068}," serviceVersion",[489,1098,1100],{"class":1099},"spNyl"," string",[489,1102,948],{"class":499},[489,1104,1105],{"class":1068}," dev",[489,1107,1108],{"class":1099}," bool",[489,1110,1111],{"class":499},")",[489,1113,1114],{"class":499}," (*",[489,1116,1117],{"class":1072},"Handle",[489,1119,948],{"class":499},[489,1121,1122],{"class":1099}," error",[489,1124,922],{"class":499},[489,1126,1127],{"class":491,"line":862},[489,1128,888],{"emptyLinePlaceholder":887},[489,1130,1131,1133,1136,1139,1142,1144,1146,1149,1152],{"class":491,"line":884},[489,1132,1060],{"class":499},[489,1134,1135],{"class":499}," (",[489,1137,1138],{"class":1068},"h ",[489,1140,1141],{"class":499},"*",[489,1143,1117],{"class":1072},[489,1145,1111],{"class":499},[489,1147,1148],{"class":844}," Enabled",[489,1150,1151],{"class":499},"()",[489,1153,1154],{"class":1099}," bool\n",[489,1156,1157,1159,1161,1163,1165,1167,1169,1172,1174,1177,1179,1182],{"class":491,"line":891},[489,1158,1060],{"class":499},[489,1160,1135],{"class":499},[489,1162,1138],{"class":1068},[489,1164,1141],{"class":499},[489,1166,1117],{"class":1072},[489,1168,1111],{"class":499},[489,1170,1171],{"class":844}," SpanExporter",[489,1173,1151],{"class":499},[489,1175,1176],{"class":1072}," sdktrace",[489,1178,841],{"class":499},[489,1180,1181],{"class":1072},"SpanExporter",[489,1183,1184],{"class":894},"  \u002F\u002F nil, ha ki van kapcsolva \u002F SENTRY_TRACES=false\n",[489,1186,1187,1189,1191,1193,1195,1197,1199,1202,1204,1207,1209,1212],{"class":491,"line":898},[489,1188,1060],{"class":499},[489,1190,1135],{"class":499},[489,1192,1138],{"class":1068},[489,1194,1141],{"class":499},[489,1196,1117],{"class":1072},[489,1198,1111],{"class":499},[489,1200,1201],{"class":844}," SlogHandler",[489,1203,1151],{"class":499},[489,1205,1206],{"class":1072}," slog",[489,1208,841],{"class":499},[489,1210,1211],{"class":1072},"Handler",[489,1213,1214],{"class":894},"            \u002F\u002F nil, ha ki van kapcsolva\n",[489,1216,1217,1219,1221,1223,1225,1227,1229,1232,1234,1236,1238,1240,1242,1244,1246],{"class":491,"line":925},[489,1218,1060],{"class":499},[489,1220,1135],{"class":499},[489,1222,1138],{"class":1068},[489,1224,1141],{"class":499},[489,1226,1117],{"class":1072},[489,1228,1111],{"class":499},[489,1230,1231],{"class":844}," Flush",[489,1233,848],{"class":499},[489,1235,1069],{"class":1068},[489,1237,1073],{"class":1072},[489,1239,841],{"class":499},[489,1241,1078],{"class":1072},[489,1243,1111],{"class":499},[489,1245,1122],{"class":1099},[489,1247,1248],{"class":894},"      \u002F\u002F event-transport drain\n",[489,1250,1251],{"class":491,"line":931},[489,1252,888],{"emptyLinePlaceholder":887},[489,1254,1256,1258,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279],{"class":491,"line":1255},8,[489,1257,1060],{"class":499},[489,1259,1260],{"class":844}," WithRequestHub",[489,1262,848],{"class":499},[489,1264,1069],{"class":1068},[489,1266,1073],{"class":1072},[489,1268,841],{"class":499},[489,1270,1078],{"class":1072},[489,1272,1111],{"class":499},[489,1274,1073],{"class":1072},[489,1276,841],{"class":499},[489,1278,1078],{"class":1072},[489,1280,1281],{"class":894}," \u002F\u002F kérésenkénti hub, a chassis hívja\n",[546,1283,1285],{"id":1284},"flush-a-legvégén","Flush a legvégén",[448,1287,1288,1289,1292,1293,1296,1297,1300,1301,1304],{},"A Sentry event-transportja aszinkron: a capture sosem blokkolja a kérést. A lezárást a ",[466,1290,1291],{"href":180},"telemetria-shutdown"," intézi: a ",[452,1294,1295],{},"Flush"," az OTel providerek leállása ",[457,1298,1299],{},"után"," fut, legutolsóként az ",[466,1302,1303],{"href":254},"életciklusban",", így a leállás közben keletkező hibák is kimennek, mielőtt a processz kilép.",[546,1306,1308],{"id":1307},"használt-patternek","Használt patternek",[448,1310,658,1311,1313,1314,1318,1319,1322,1323,1327],{},[452,1312,454],{}," a kit három kimondott interfész-mögé-rejtési kivételének egyike; lásd ",[466,1315,1317],{"href":1316},"\u002Fhu\u002Fconcepts\u002Fdesign-patterns#architektur%C3%A1lis-alapelvek","Design patternek: Architekturális alapelvek",". A ",[452,1320,1321],{},"WithSpanExporter","-be illesztés a ",[466,1324,1326],{"href":1325},"\u002Fhu\u002Fconcepts\u002Fdesign-patterns#functional-options","functional options"," nil-toleráns variánsának konkrét példája.",[448,1329,1330,1331,841],{},"A Sentry hivatalos Go-dokumentációja: ",[466,1332,1336],{"href":1333,"rel":1334},"https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fgo\u002F",[1335],"nofollow","docs.sentry.io\u002Fplatforms\u002Fgo",[1338,1339,1340],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":485,"searchDepth":862,"depth":862,"links":1342},[1343,1344,1345,1346,1347,1348,1349],{"id":548,"depth":862,"text":204},{"id":654,"depth":862,"text":655},{"id":757,"depth":862,"text":758},{"id":988,"depth":862,"text":989},{"id":1009,"depth":862,"text":1010},{"id":1284,"depth":862,"text":1285},{"id":1307,"depth":862,"text":1308},"Env-kapcsolós hibariportolás az OTel tetején: errs-kód szerinti issue-csoportosítással és teljes trace-linkeléssel.","md",null,{},{"icon":196},{"title":193,"description":1350},"yxDG_3SStL84bpb05NWo8UVSBiqYpsZ0of5GlEKRVLs",[1358,1360],{"title":188,"path":189,"stem":190,"description":1359,"icon":191,"children":-1},"Trace-ek, metrikák és logok egy hívással, HTTP, adatbázis, queue és S3 instrumentáció, standard OTEL_* konfigurációval.",{"title":204,"path":205,"stem":206,"description":1361,"icon":207,"children":-1},"Minden modul Config structjának minden környezeti változója, modulonként csoportosítva.",1785445886090]