[{"data":1,"prerenderedAt":8546},["ShallowReactive",2],{"navigation":3,"\u002Freference\u002Flog-events-reference":189,"\u002Freference\u002Flog-events-reference-surround":8543},[4,34,60,116,137,153],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":33},"Getting Started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,15,18,23,28],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-house",{"title":5,"path":16,"stem":17,"icon":6},"\u002Fgetting-started\u002Fgetting-started","1.getting-started\u002F2.getting-started",{"title":19,"path":20,"stem":21,"icon":22},"Choosing a Preset","\u002Fgetting-started\u002Fchoosing-a-preset","1.getting-started\u002F3.choosing-a-preset","i-lucide-git-branch",{"title":24,"path":25,"stem":26,"icon":27},"Deployment","\u002Fgetting-started\u002Fdeployment","1.getting-started\u002F4.deployment","i-lucide-cloud",{"title":29,"path":30,"stem":31,"icon":32},"Background Maintenance","\u002Fgetting-started\u002Fbackground-maintenance","1.getting-started\u002F5.background-maintenance","i-lucide-timer-reset",false,{"title":35,"icon":36,"path":37,"stem":38,"children":39,"page":33},"Build","i-lucide-wrench","\u002Fbuild","2.build",[40,45,50,55],{"title":41,"path":42,"stem":43,"icon":44},"Routers & Prefixes","\u002Fbuild\u002Frouters-and-prefixes","2.build\u002F1.routers-and-prefixes","i-lucide-route",{"title":46,"path":47,"stem":48,"icon":49},"Configuration","\u002Fbuild\u002Fconfiguration","2.build\u002F2.configuration","i-lucide-settings",{"title":51,"path":52,"stem":53,"icon":54},"Authorization Dependencies","\u002Fbuild\u002Fauthorization-dependencies","2.build\u002F3.authorization-dependencies","i-lucide-shield-check",{"title":56,"path":57,"stem":58,"icon":59},"Command Line","\u002Fbuild\u002Fcli","2.build\u002F4.cli","i-lucide-terminal",{"title":61,"icon":62,"path":63,"stem":64,"children":65,"page":33},"Auth","i-lucide-lock","\u002Fauth","3.auth",[66,71,76,81,86,91,96,101,106,111],{"title":67,"path":68,"stem":69,"icon":70},"OAuth & Social Login","\u002Fauth\u002Foauth-and-social-login","3.auth\u002F1.oauth-and-social-login","i-lucide-log-in",{"title":72,"path":73,"stem":74,"icon":75},"Multi-Frontend Support","\u002Fauth\u002Fmulti-frontend","3.auth\u002F10.multi-frontend","i-lucide-layout-grid",{"title":77,"path":78,"stem":79,"icon":80},"Sessions & Audit","\u002Fauth\u002Fsessions-and-audit","3.auth\u002F2.sessions-and-audit","i-lucide-monitor-smartphone",{"title":82,"path":83,"stem":84,"icon":85},"Passwordless & Messaging","\u002Fauth\u002Fpasswordless-and-messaging","3.auth\u002F3.passwordless-and-messaging","i-lucide-mail",{"title":87,"path":88,"stem":89,"icon":90},"JWT Tokens","\u002Fauth\u002Fjwt-tokens","3.auth\u002F4.jwt-tokens","i-lucide-key-round",{"title":92,"path":93,"stem":94,"icon":95},"User Management API","\u002Fauth\u002Fuser-management-api","3.auth\u002F5.user-management-api","i-lucide-users",{"title":97,"path":98,"stem":99,"icon":100},"User Invitations","\u002Fauth\u002Fuser-invitations","3.auth\u002F6.user-invitations","i-lucide-send",{"title":102,"path":103,"stem":104,"icon":105},"Roles & Permissions","\u002Fauth\u002Froles-and-permissions","3.auth\u002F7.roles-and-permissions","i-lucide-shield",{"title":107,"path":108,"stem":109,"icon":110},"ABAC","\u002Fauth\u002Fabac","3.auth\u002F8.abac","i-lucide-filter",{"title":112,"path":113,"stem":114,"icon":115},"User Status","\u002Fauth\u002Fuser-status","3.auth\u002F9.user-status","i-lucide-user-cog",{"title":117,"icon":118,"path":119,"stem":120,"children":121,"page":33},"Enterprise","i-lucide-building-2","\u002Fenterprise","4.enterprise",[122,127,132],{"title":123,"path":124,"stem":125,"icon":126},"Core Authorization Concepts","\u002Fenterprise\u002Fcore-authorization-concepts","4.enterprise\u002F1.core-authorization-concepts","i-lucide-network",{"title":128,"path":129,"stem":130,"icon":131},"Entities","\u002Fenterprise\u002Fentities","4.enterprise\u002F2.entities","i-lucide-folder-tree",{"title":133,"path":134,"stem":135,"icon":136},"Entity Memberships","\u002Fenterprise\u002Fentity-memberships","4.enterprise\u002F3.entity-memberships","i-lucide-user-plus",{"title":138,"icon":139,"path":140,"stem":141,"children":142,"page":33},"Integrations","i-lucide-plug","\u002Fintegrations","5.integrations",[143,148],{"title":144,"path":145,"stem":146,"icon":147},"API Keys","\u002Fintegrations\u002Fapi-keys","5.integrations\u002F1.api-keys","i-lucide-key",{"title":149,"path":150,"stem":151,"icon":152},"OutlabsAuth UI","\u002Fintegrations\u002Foutlabsauth-ui","5.integrations\u002F2.outlabsauth-ui","i-lucide-layout-dashboard",{"title":154,"icon":155,"path":156,"stem":157,"children":158,"page":33},"Reference","i-lucide-book-marked","\u002Freference","6.reference",[159,164,169,174,179,184],{"title":160,"path":161,"stem":162,"icon":163},"Data Models","\u002Freference\u002Fdata-models","6.reference\u002F1.data-models","i-lucide-database",{"title":165,"path":166,"stem":167,"icon":168},"Activity Tracking","\u002Freference\u002Factivity-tracking","6.reference\u002F2.activity-tracking","i-lucide-activity",{"title":170,"path":171,"stem":172,"icon":173},"Testing","\u002Freference\u002Ftesting","6.reference\u002F3.testing","i-lucide-flask-conical",{"title":175,"path":176,"stem":177,"icon":178},"Observability","\u002Freference\u002Fobservability","6.reference\u002F4.observability","i-lucide-eye",{"title":180,"path":181,"stem":182,"icon":183},"Metrics Reference","\u002Freference\u002Fmetrics-reference","6.reference\u002F5.metrics-reference","i-lucide-chart-bar",{"title":185,"path":186,"stem":187,"icon":188},"Log Events Reference","\u002Freference\u002Flog-events-reference","6.reference\u002F6.log-events-reference","i-lucide-scroll-text",{"id":190,"title":185,"body":191,"description":8536,"extension":8537,"links":8538,"meta":8539,"navigation":8540,"path":186,"seo":8541,"stem":187,"__hash__":8542},"docs\u002F6.reference\u002F6.log-events-reference.md",{"type":192,"value":193,"toc":8481},"minimark",[194,205,216,221,224,230,270,294,297,301,304,318,323,380,385,628,633,711,713,716,727,731,813,817,1023,1027,1132,1134,1137,1147,1151,1198,1202,1374,1376,1379,1393,1397,1408,1412,1548,1550,1553,1563,1567,1597,1601,1722,1724,1726,1736,1740,1766,1770,1961,1965,2045,2047,2051,2054,2072,2076,2108,2112,2267,2269,2272,2288,2292,2353,2357,2548,2552,2645,2647,2650,2663,2667,2698,2702,2905,2907,2911,2914,2928,2932,2959,2963,3118,3120,3123,3133,3137,3184,3188,3347,3351,3428,3430,3433,3443,3447,3470,3474,3642,3644,3648,3651,3662,3666,3727,3731,3957,3959,3962,3973,3977,4036,4040,4234,4236,4240,4243,4253,4257,4313,4317,4475,4477,4480,4493,4500,4504,4551,4558,4562,4726,4735,4737,4741,4744,4753,4757,4787,4791,4950,4952,4955,4964,4968,4988,4992,5170,5172,5175,5185,5194,5226,5230,5275,5279,5517,5521,5638,5640,5643,5652,5656,5692,5696,5929,5933,6026,6028,6031,6040,6044,6072,6076,6290,6294,6371,6373,6376,6389,6393,6417,6421,6616,6618,6622,6625,6635,6639,6699,6703,6894,6898,6965,6967,6971,6974,6984,6988,7031,7035,7241,7245,7312,7314,7318,7321,7331,7335,7357,7361,7499,7501,7504,7514,7518,7549,7553,7730,7732,7736,7739,7749,7753,7778,7782,7937,7939,7942,7952,7956,7981,7985,8143,8147,8224,8226,8230,8234,8430,8432,8436,8462,8464,8477],[195,196,197],"note",{},[198,199,200,201,204],"p",{},"— structured log event catalog. Setup: ",[202,203,175],"a",{"href":176},".",[198,206,207,208,212,213,204],{},"Lookup page — jump to the ",[209,210,211],"code",{},"event"," name you need. For integration modes and host\nownership rules, start with ",[202,214,215],{"href":176},"97",[217,218,220],"h2",{"id":219},"overview","Overview",[198,222,223],{},"OutlabsAuth emits structured log events for auth-domain operations. Each event\nhas a consistent schema plus event-specific fields.",[198,225,226],{},[227,228,229],"strong",{},"Standard fields (most events):",[231,232,233,240,246,255,261],"ul",{},[234,235,236,239],"li",{},[209,237,238],{},"timestamp"," — ISO 8601 UTC",[234,241,242,245],{},[209,243,244],{},"level"," — debug \u002F info \u002F warning \u002F error \u002F critical",[234,247,248,250,251,254],{},[209,249,211],{}," — event name (e.g. ",[209,252,253],{},"user_login_success",")",[234,256,257,260],{},[209,258,259],{},"correlation_id"," — request correlation id when present",[234,262,263,266,267],{},[209,264,265],{},"service"," — typically ",[209,268,269],{},"outlabs_auth",[198,271,272,275,276,279,280,283,284,287,288,279,291,204],{},[227,273,274],{},"Often present:"," ",[209,277,278],{},"user_id",", ",[209,281,282],{},"email"," (if not redacted), ",[209,285,286],{},"ip_address",",\n",[209,289,290],{},"user_agent",[209,292,293],{},"duration_ms",[295,296],"hr",{},[217,298,300],{"id":299},"authentication-events","Authentication Events",[302,303,253],"h3",{"id":253},[198,305,306,309,310,313,314,317],{},[227,307,308],{},"Level:"," INFO\n",[227,311,312],{},"When:"," User successfully logs in with any authentication method\n",[227,315,316],{},"Frequency:"," Per login (moderate volume)",[198,319,320],{},[227,321,322],{},"Fields:",[231,324,325,330,335,359,364,369,374],{},[234,326,327,329],{},[209,328,278],{}," (string) - User's ID",[234,331,332,334],{},[209,333,282],{}," (string) - User's email",[234,336,337,340,341,279,344,279,347,279,350,279,353,279,356],{},[209,338,339],{},"method"," (string) - Auth method: ",[209,342,343],{},"password",[209,345,346],{},"google",[209,348,349],{},"facebook",[209,351,352],{},"apple",[209,354,355],{},"github",[209,357,358],{},"api_key",[234,360,361,363],{},[209,362,293],{}," (float) - Time taken for login operation",[234,365,366,368],{},[209,367,286],{}," (string, optional) - Client IP address",[234,370,371,373],{},[209,372,290],{}," (string, optional) - Client user agent",[234,375,376,379],{},[209,377,378],{},"device_name"," (string, optional) - Device name if provided",[198,381,382],{},[227,383,384],{},"Example:",[386,387,392],"pre",{"className":388,"code":389,"language":390,"meta":391,"style":391},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"timestamp\": \"2025-01-24T10:15:23.456Z\",\n  \"level\": \"info\",\n  \"event\": \"user_login_success\",\n  \"correlation_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n  \"service\": \"outlabs_auth\",\n  \"user_id\": \"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47\",\n  \"email\": \"john@example.com\",\n  \"method\": \"password\",\n  \"duration_ms\": 145.3,\n  \"ip_address\": \"192.168.1.1\",\n  \"user_agent\": \"Mozilla\u002F5.0 (Macintosh; Intel Mac OS X 10_15_7)...\"\n}\n","json","",[209,393,394,403,429,449,468,488,507,527,547,566,583,603,622],{"__ignoreMap":391},[395,396,399],"span",{"class":397,"line":398},"line",1,[395,400,402],{"class":401},"sMK4o","{\n",[395,404,406,409,412,415,418,421,425,427],{"class":397,"line":405},2,[395,407,408],{"class":401},"  \"",[395,410,238],{"class":411},"spNyl",[395,413,414],{"class":401},"\"",[395,416,417],{"class":401},":",[395,419,420],{"class":401}," \"",[395,422,424],{"class":423},"sfazB","2025-01-24T10:15:23.456Z",[395,426,414],{"class":401},[395,428,287],{"class":401},[395,430,432,434,436,438,440,442,445,447],{"class":397,"line":431},3,[395,433,408],{"class":401},[395,435,244],{"class":411},[395,437,414],{"class":401},[395,439,417],{"class":401},[395,441,420],{"class":401},[395,443,444],{"class":423},"info",[395,446,414],{"class":401},[395,448,287],{"class":401},[395,450,452,454,456,458,460,462,464,466],{"class":397,"line":451},4,[395,453,408],{"class":401},[395,455,211],{"class":411},[395,457,414],{"class":401},[395,459,417],{"class":401},[395,461,420],{"class":401},[395,463,253],{"class":423},[395,465,414],{"class":401},[395,467,287],{"class":401},[395,469,471,473,475,477,479,481,484,486],{"class":397,"line":470},5,[395,472,408],{"class":401},[395,474,259],{"class":411},[395,476,414],{"class":401},[395,478,417],{"class":401},[395,480,420],{"class":401},[395,482,483],{"class":423},"a1b2c3d4-e5f6-7890-abcd-ef1234567890",[395,485,414],{"class":401},[395,487,287],{"class":401},[395,489,491,493,495,497,499,501,503,505],{"class":397,"line":490},6,[395,492,408],{"class":401},[395,494,265],{"class":411},[395,496,414],{"class":401},[395,498,417],{"class":401},[395,500,420],{"class":401},[395,502,269],{"class":423},[395,504,414],{"class":401},[395,506,287],{"class":401},[395,508,510,512,514,516,518,520,523,525],{"class":397,"line":509},7,[395,511,408],{"class":401},[395,513,278],{"class":411},[395,515,414],{"class":401},[395,517,417],{"class":401},[395,519,420],{"class":401},[395,521,522],{"class":423},"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47",[395,524,414],{"class":401},[395,526,287],{"class":401},[395,528,530,532,534,536,538,540,543,545],{"class":397,"line":529},8,[395,531,408],{"class":401},[395,533,282],{"class":411},[395,535,414],{"class":401},[395,537,417],{"class":401},[395,539,420],{"class":401},[395,541,542],{"class":423},"john@example.com",[395,544,414],{"class":401},[395,546,287],{"class":401},[395,548,550,552,554,556,558,560,562,564],{"class":397,"line":549},9,[395,551,408],{"class":401},[395,553,339],{"class":411},[395,555,414],{"class":401},[395,557,417],{"class":401},[395,559,420],{"class":401},[395,561,343],{"class":423},[395,563,414],{"class":401},[395,565,287],{"class":401},[395,567,569,571,573,575,577,581],{"class":397,"line":568},10,[395,570,408],{"class":401},[395,572,293],{"class":411},[395,574,414],{"class":401},[395,576,417],{"class":401},[395,578,580],{"class":579},"sbssI"," 145.3",[395,582,287],{"class":401},[395,584,586,588,590,592,594,596,599,601],{"class":397,"line":585},11,[395,587,408],{"class":401},[395,589,286],{"class":411},[395,591,414],{"class":401},[395,593,417],{"class":401},[395,595,420],{"class":401},[395,597,598],{"class":423},"192.168.1.1",[395,600,414],{"class":401},[395,602,287],{"class":401},[395,604,606,608,610,612,614,616,619],{"class":397,"line":605},12,[395,607,408],{"class":401},[395,609,290],{"class":411},[395,611,414],{"class":401},[395,613,417],{"class":401},[395,615,420],{"class":401},[395,617,618],{"class":423},"Mozilla\u002F5.0 (Macintosh; Intel Mac OS X 10_15_7)...",[395,620,621],{"class":401},"\"\n",[395,623,625],{"class":397,"line":624},13,[395,626,627],{"class":401},"}\n",[198,629,630],{},[227,631,632],{},"Search Examples:",[386,634,639],{"className":635,"code":636,"filename":637,"language":638,"meta":391,"style":391},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Find all logins by specific user\njq 'select(.event == \"user_login_success\" and .user_id == \"3f8a1c2e-...\")' app.log\n\n# Find all Google OAuth logins\njq 'select(.event == \"user_login_success\" and .method == \"google\")' app.log\n\n# Find slow logins (>500ms)\njq 'select(.event == \"user_login_success\" and .duration_ms > 500)' app.log\n","Terminal","bash",[209,640,641,647,665,671,676,689,693,698],{"__ignoreMap":391},[395,642,643],{"class":397,"line":398},[395,644,646],{"class":645},"sHwdD","# Find all logins by specific user\n",[395,648,649,653,656,659,662],{"class":397,"line":405},[395,650,652],{"class":651},"sBMFI","jq",[395,654,655],{"class":401}," '",[395,657,658],{"class":423},"select(.event == \"user_login_success\" and .user_id == \"3f8a1c2e-...\")",[395,660,661],{"class":401},"'",[395,663,664],{"class":423}," app.log\n",[395,666,667],{"class":397,"line":431},[395,668,670],{"emptyLinePlaceholder":669},true,"\n",[395,672,673],{"class":397,"line":451},[395,674,675],{"class":645},"# Find all Google OAuth logins\n",[395,677,678,680,682,685,687],{"class":397,"line":470},[395,679,652],{"class":651},[395,681,655],{"class":401},[395,683,684],{"class":423},"select(.event == \"user_login_success\" and .method == \"google\")",[395,686,661],{"class":401},[395,688,664],{"class":423},[395,690,691],{"class":397,"line":490},[395,692,670],{"emptyLinePlaceholder":669},[395,694,695],{"class":397,"line":509},[395,696,697],{"class":645},"# Find slow logins (>500ms)\n",[395,699,700,702,704,707,709],{"class":397,"line":529},[395,701,652],{"class":651},[395,703,655],{"class":401},[395,705,706],{"class":423},"select(.event == \"user_login_success\" and .duration_ms > 500)",[395,708,661],{"class":401},[395,710,664],{"class":423},[295,712],{},[302,714,715],{"id":715},"user_login_failed",[198,717,718,720,721,723,724,726],{},[227,719,308],{}," WARNING\n",[227,722,312],{}," Login attempt fails\n",[227,725,316],{}," Per failed login (should be low, spikes indicate attacks)",[198,728,729],{},[227,730,322],{},[231,732,733,738,743,793,798,803,807],{},[234,734,735,737],{},[209,736,282],{}," (string, optional) - Email attempted (may be invalid)",[234,739,740,742],{},[209,741,339],{}," (string) - Auth method attempted",[234,744,745,748,749],{},[209,746,747],{},"reason"," (string) - Failure reason:\n",[231,750,751,757,763,769,775,781,787],{},[234,752,753,756],{},[209,754,755],{},"invalid_credentials"," - Wrong password",[234,758,759,762],{},[209,760,761],{},"user_not_found"," - Email doesn't exist",[234,764,765,768],{},[209,766,767],{},"account_locked"," - Too many failed attempts",[234,770,771,774],{},[209,772,773],{},"account_suspended"," - Account suspended by admin",[234,776,777,780],{},[209,778,779],{},"account_deleted"," - Account has been deleted",[234,782,783,786],{},[209,784,785],{},"email_not_verified"," - Email verification required",[234,788,789,792],{},[209,790,791],{},"oauth_error"," - OAuth provider error",[234,794,795,797],{},[209,796,293],{}," (float) - Time taken",[234,799,800,802],{},[209,801,286],{}," (string, optional) - Client IP",[234,804,805,373],{},[209,806,290],{},[234,808,809,812],{},[209,810,811],{},"failed_attempts"," (int, optional) - Current failed attempt count",[198,814,815],{},[227,816,384],{},[386,818,820],{"className":388,"code":819,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:16:45.123Z\",\n  \"level\": \"warning\",\n  \"event\": \"user_login_failed\",\n  \"correlation_id\": \"b2c3d4e5-f6a7-8901-bcde-f23456789abc\",\n  \"service\": \"outlabs_auth\",\n  \"email\": \"john@example.com\",\n  \"method\": \"password\",\n  \"reason\": \"invalid_credentials\",\n  \"duration_ms\": 98.2,\n  \"ip_address\": \"192.168.1.1\",\n  \"failed_attempts\": 3\n}\n",[209,821,822,826,845,864,882,901,919,937,955,973,988,1006,1019],{"__ignoreMap":391},[395,823,824],{"class":397,"line":398},[395,825,402],{"class":401},[395,827,828,830,832,834,836,838,841,843],{"class":397,"line":405},[395,829,408],{"class":401},[395,831,238],{"class":411},[395,833,414],{"class":401},[395,835,417],{"class":401},[395,837,420],{"class":401},[395,839,840],{"class":423},"2025-01-24T10:16:45.123Z",[395,842,414],{"class":401},[395,844,287],{"class":401},[395,846,847,849,851,853,855,857,860,862],{"class":397,"line":431},[395,848,408],{"class":401},[395,850,244],{"class":411},[395,852,414],{"class":401},[395,854,417],{"class":401},[395,856,420],{"class":401},[395,858,859],{"class":423},"warning",[395,861,414],{"class":401},[395,863,287],{"class":401},[395,865,866,868,870,872,874,876,878,880],{"class":397,"line":451},[395,867,408],{"class":401},[395,869,211],{"class":411},[395,871,414],{"class":401},[395,873,417],{"class":401},[395,875,420],{"class":401},[395,877,715],{"class":423},[395,879,414],{"class":401},[395,881,287],{"class":401},[395,883,884,886,888,890,892,894,897,899],{"class":397,"line":470},[395,885,408],{"class":401},[395,887,259],{"class":411},[395,889,414],{"class":401},[395,891,417],{"class":401},[395,893,420],{"class":401},[395,895,896],{"class":423},"b2c3d4e5-f6a7-8901-bcde-f23456789abc",[395,898,414],{"class":401},[395,900,287],{"class":401},[395,902,903,905,907,909,911,913,915,917],{"class":397,"line":490},[395,904,408],{"class":401},[395,906,265],{"class":411},[395,908,414],{"class":401},[395,910,417],{"class":401},[395,912,420],{"class":401},[395,914,269],{"class":423},[395,916,414],{"class":401},[395,918,287],{"class":401},[395,920,921,923,925,927,929,931,933,935],{"class":397,"line":509},[395,922,408],{"class":401},[395,924,282],{"class":411},[395,926,414],{"class":401},[395,928,417],{"class":401},[395,930,420],{"class":401},[395,932,542],{"class":423},[395,934,414],{"class":401},[395,936,287],{"class":401},[395,938,939,941,943,945,947,949,951,953],{"class":397,"line":529},[395,940,408],{"class":401},[395,942,339],{"class":411},[395,944,414],{"class":401},[395,946,417],{"class":401},[395,948,420],{"class":401},[395,950,343],{"class":423},[395,952,414],{"class":401},[395,954,287],{"class":401},[395,956,957,959,961,963,965,967,969,971],{"class":397,"line":549},[395,958,408],{"class":401},[395,960,747],{"class":411},[395,962,414],{"class":401},[395,964,417],{"class":401},[395,966,420],{"class":401},[395,968,755],{"class":423},[395,970,414],{"class":401},[395,972,287],{"class":401},[395,974,975,977,979,981,983,986],{"class":397,"line":568},[395,976,408],{"class":401},[395,978,293],{"class":411},[395,980,414],{"class":401},[395,982,417],{"class":401},[395,984,985],{"class":579}," 98.2",[395,987,287],{"class":401},[395,989,990,992,994,996,998,1000,1002,1004],{"class":397,"line":585},[395,991,408],{"class":401},[395,993,286],{"class":411},[395,995,414],{"class":401},[395,997,417],{"class":401},[395,999,420],{"class":401},[395,1001,598],{"class":423},[395,1003,414],{"class":401},[395,1005,287],{"class":401},[395,1007,1008,1010,1012,1014,1016],{"class":397,"line":605},[395,1009,408],{"class":401},[395,1011,811],{"class":411},[395,1013,414],{"class":401},[395,1015,417],{"class":401},[395,1017,1018],{"class":579}," 3\n",[395,1020,1021],{"class":397,"line":624},[395,1022,627],{"class":401},[198,1024,1025],{},[227,1026,632],{},[386,1028,1030],{"className":635,"code":1029,"filename":637,"language":638,"meta":391,"style":391},"# Find all failed login attempts\njq 'select(.event == \"user_login_failed\")' app.log\n\n# Find brute force attempts (multiple failures from same IP)\njq 'select(.event == \"user_login_failed\") | .ip_address' app.log | sort | uniq -c | sort -rn\n\n# Find accounts being targeted\njq 'select(.event == \"user_login_failed\") | .email' app.log | sort | uniq -c | sort -rn\n",[209,1031,1032,1037,1050,1054,1059,1094,1098,1103],{"__ignoreMap":391},[395,1033,1034],{"class":397,"line":398},[395,1035,1036],{"class":645},"# Find all failed login attempts\n",[395,1038,1039,1041,1043,1046,1048],{"class":397,"line":405},[395,1040,652],{"class":651},[395,1042,655],{"class":401},[395,1044,1045],{"class":423},"select(.event == \"user_login_failed\")",[395,1047,661],{"class":401},[395,1049,664],{"class":423},[395,1051,1052],{"class":397,"line":431},[395,1053,670],{"emptyLinePlaceholder":669},[395,1055,1056],{"class":397,"line":451},[395,1057,1058],{"class":645},"# Find brute force attempts (multiple failures from same IP)\n",[395,1060,1061,1063,1065,1068,1070,1073,1076,1079,1081,1084,1087,1089,1091],{"class":397,"line":470},[395,1062,652],{"class":651},[395,1064,655],{"class":401},[395,1066,1067],{"class":423},"select(.event == \"user_login_failed\") | .ip_address",[395,1069,661],{"class":401},[395,1071,1072],{"class":423}," app.log",[395,1074,1075],{"class":401}," |",[395,1077,1078],{"class":651}," sort",[395,1080,1075],{"class":401},[395,1082,1083],{"class":651}," uniq",[395,1085,1086],{"class":423}," -c",[395,1088,1075],{"class":401},[395,1090,1078],{"class":651},[395,1092,1093],{"class":423}," -rn\n",[395,1095,1096],{"class":397,"line":490},[395,1097,670],{"emptyLinePlaceholder":669},[395,1099,1100],{"class":397,"line":509},[395,1101,1102],{"class":645},"# Find accounts being targeted\n",[395,1104,1105,1107,1109,1112,1114,1116,1118,1120,1122,1124,1126,1128,1130],{"class":397,"line":529},[395,1106,652],{"class":651},[395,1108,655],{"class":401},[395,1110,1111],{"class":423},"select(.event == \"user_login_failed\") | .email",[395,1113,661],{"class":401},[395,1115,1072],{"class":423},[395,1117,1075],{"class":401},[395,1119,1078],{"class":651},[395,1121,1075],{"class":401},[395,1123,1083],{"class":651},[395,1125,1086],{"class":423},[395,1127,1075],{"class":401},[395,1129,1078],{"class":651},[395,1131,1093],{"class":423},[295,1133],{},[302,1135,1136],{"id":1136},"user_logout",[198,1138,1139,309,1141,1143,1144,1146],{},[227,1140,308],{},[227,1142,312],{}," User logs out (explicit or token expiry)\n",[227,1145,316],{}," Per logout (moderate volume)",[198,1148,1149],{},[227,1150,322],{},[231,1152,1153,1157,1161,1192],{},[234,1154,1155,329],{},[209,1156,278],{},[234,1158,1159,334],{},[209,1160,282],{},[234,1162,1163,1165,1166],{},[209,1164,339],{}," (string) - Logout trigger:\n",[231,1167,1168,1174,1180,1186],{},[234,1169,1170,1173],{},[209,1171,1172],{},"explicit"," - User clicked logout",[234,1175,1176,1179],{},[209,1177,1178],{},"token_expiry"," - Refresh token expired",[234,1181,1182,1185],{},[209,1183,1184],{},"admin_revoke"," - Admin revoked session",[234,1187,1188,1191],{},[209,1189,1190],{},"security_revoke"," - Revoked for security reasons",[234,1193,1194,1197],{},[209,1195,1196],{},"session_duration_seconds"," (int) - How long user was logged in",[198,1199,1200],{},[227,1201,384],{},[386,1203,1205],{"className":388,"code":1204,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T12:30:15.789Z\",\n  \"level\": \"info\",\n  \"event\": \"user_logout\",\n  \"correlation_id\": \"c3d4e5f6-a7b8-9012-cdef-34567890abcd\",\n  \"service\": \"outlabs_auth\",\n  \"user_id\": \"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47\",\n  \"email\": \"john@example.com\",\n  \"method\": \"explicit\",\n  \"session_duration_seconds\": 7892\n}\n",[209,1206,1207,1211,1230,1248,1266,1285,1303,1321,1339,1357,1370],{"__ignoreMap":391},[395,1208,1209],{"class":397,"line":398},[395,1210,402],{"class":401},[395,1212,1213,1215,1217,1219,1221,1223,1226,1228],{"class":397,"line":405},[395,1214,408],{"class":401},[395,1216,238],{"class":411},[395,1218,414],{"class":401},[395,1220,417],{"class":401},[395,1222,420],{"class":401},[395,1224,1225],{"class":423},"2025-01-24T12:30:15.789Z",[395,1227,414],{"class":401},[395,1229,287],{"class":401},[395,1231,1232,1234,1236,1238,1240,1242,1244,1246],{"class":397,"line":431},[395,1233,408],{"class":401},[395,1235,244],{"class":411},[395,1237,414],{"class":401},[395,1239,417],{"class":401},[395,1241,420],{"class":401},[395,1243,444],{"class":423},[395,1245,414],{"class":401},[395,1247,287],{"class":401},[395,1249,1250,1252,1254,1256,1258,1260,1262,1264],{"class":397,"line":451},[395,1251,408],{"class":401},[395,1253,211],{"class":411},[395,1255,414],{"class":401},[395,1257,417],{"class":401},[395,1259,420],{"class":401},[395,1261,1136],{"class":423},[395,1263,414],{"class":401},[395,1265,287],{"class":401},[395,1267,1268,1270,1272,1274,1276,1278,1281,1283],{"class":397,"line":470},[395,1269,408],{"class":401},[395,1271,259],{"class":411},[395,1273,414],{"class":401},[395,1275,417],{"class":401},[395,1277,420],{"class":401},[395,1279,1280],{"class":423},"c3d4e5f6-a7b8-9012-cdef-34567890abcd",[395,1282,414],{"class":401},[395,1284,287],{"class":401},[395,1286,1287,1289,1291,1293,1295,1297,1299,1301],{"class":397,"line":490},[395,1288,408],{"class":401},[395,1290,265],{"class":411},[395,1292,414],{"class":401},[395,1294,417],{"class":401},[395,1296,420],{"class":401},[395,1298,269],{"class":423},[395,1300,414],{"class":401},[395,1302,287],{"class":401},[395,1304,1305,1307,1309,1311,1313,1315,1317,1319],{"class":397,"line":509},[395,1306,408],{"class":401},[395,1308,278],{"class":411},[395,1310,414],{"class":401},[395,1312,417],{"class":401},[395,1314,420],{"class":401},[395,1316,522],{"class":423},[395,1318,414],{"class":401},[395,1320,287],{"class":401},[395,1322,1323,1325,1327,1329,1331,1333,1335,1337],{"class":397,"line":529},[395,1324,408],{"class":401},[395,1326,282],{"class":411},[395,1328,414],{"class":401},[395,1330,417],{"class":401},[395,1332,420],{"class":401},[395,1334,542],{"class":423},[395,1336,414],{"class":401},[395,1338,287],{"class":401},[395,1340,1341,1343,1345,1347,1349,1351,1353,1355],{"class":397,"line":549},[395,1342,408],{"class":401},[395,1344,339],{"class":411},[395,1346,414],{"class":401},[395,1348,417],{"class":401},[395,1350,420],{"class":401},[395,1352,1172],{"class":423},[395,1354,414],{"class":401},[395,1356,287],{"class":401},[395,1358,1359,1361,1363,1365,1367],{"class":397,"line":568},[395,1360,408],{"class":401},[395,1362,1196],{"class":411},[395,1364,414],{"class":401},[395,1366,417],{"class":401},[395,1368,1369],{"class":579}," 7892\n",[395,1371,1372],{"class":397,"line":585},[395,1373,627],{"class":401},[295,1375],{},[302,1377,1378],{"id":1378},"token_refreshed",[198,1380,1381,309,1383,1385,1386,1388,1389,1392],{},[227,1382,308],{},[227,1384,312],{}," Access token successfully refreshed\n",[227,1387,316],{}," High volume (every 15 minutes per active user)\n",[227,1390,1391],{},"Default:"," Not logged (use metrics instead)",[198,1394,1395],{},[227,1396,322],{},[231,1398,1399,1403],{},[234,1400,1401,329],{},[209,1402,278],{},[234,1404,1405,1407],{},[209,1406,293],{}," (float) - Refresh operation duration",[198,1409,1410],{},[227,1411,384],{},[386,1413,1415],{"className":388,"code":1414,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:30:00.123Z\",\n  \"level\": \"info\",\n  \"event\": \"token_refreshed\",\n  \"correlation_id\": \"d4e5f6a7-b8c9-0123-def4-567890abcdef\",\n  \"service\": \"outlabs_auth\",\n  \"user_id\": \"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47\",\n  \"duration_ms\": 12.5\n}\n",[209,1416,1417,1421,1440,1458,1476,1495,1513,1531,1544],{"__ignoreMap":391},[395,1418,1419],{"class":397,"line":398},[395,1420,402],{"class":401},[395,1422,1423,1425,1427,1429,1431,1433,1436,1438],{"class":397,"line":405},[395,1424,408],{"class":401},[395,1426,238],{"class":411},[395,1428,414],{"class":401},[395,1430,417],{"class":401},[395,1432,420],{"class":401},[395,1434,1435],{"class":423},"2025-01-24T10:30:00.123Z",[395,1437,414],{"class":401},[395,1439,287],{"class":401},[395,1441,1442,1444,1446,1448,1450,1452,1454,1456],{"class":397,"line":431},[395,1443,408],{"class":401},[395,1445,244],{"class":411},[395,1447,414],{"class":401},[395,1449,417],{"class":401},[395,1451,420],{"class":401},[395,1453,444],{"class":423},[395,1455,414],{"class":401},[395,1457,287],{"class":401},[395,1459,1460,1462,1464,1466,1468,1470,1472,1474],{"class":397,"line":451},[395,1461,408],{"class":401},[395,1463,211],{"class":411},[395,1465,414],{"class":401},[395,1467,417],{"class":401},[395,1469,420],{"class":401},[395,1471,1378],{"class":423},[395,1473,414],{"class":401},[395,1475,287],{"class":401},[395,1477,1478,1480,1482,1484,1486,1488,1491,1493],{"class":397,"line":470},[395,1479,408],{"class":401},[395,1481,259],{"class":411},[395,1483,414],{"class":401},[395,1485,417],{"class":401},[395,1487,420],{"class":401},[395,1489,1490],{"class":423},"d4e5f6a7-b8c9-0123-def4-567890abcdef",[395,1492,414],{"class":401},[395,1494,287],{"class":401},[395,1496,1497,1499,1501,1503,1505,1507,1509,1511],{"class":397,"line":490},[395,1498,408],{"class":401},[395,1500,265],{"class":411},[395,1502,414],{"class":401},[395,1504,417],{"class":401},[395,1506,420],{"class":401},[395,1508,269],{"class":423},[395,1510,414],{"class":401},[395,1512,287],{"class":401},[395,1514,1515,1517,1519,1521,1523,1525,1527,1529],{"class":397,"line":509},[395,1516,408],{"class":401},[395,1518,278],{"class":411},[395,1520,414],{"class":401},[395,1522,417],{"class":401},[395,1524,420],{"class":401},[395,1526,522],{"class":423},[395,1528,414],{"class":401},[395,1530,287],{"class":401},[395,1532,1533,1535,1537,1539,1541],{"class":397,"line":529},[395,1534,408],{"class":401},[395,1536,293],{"class":411},[395,1538,414],{"class":401},[395,1540,417],{"class":401},[395,1542,1543],{"class":579}," 12.5\n",[395,1545,1546],{"class":397,"line":549},[395,1547,627],{"class":401},[295,1549],{},[302,1551,1552],{"id":1552},"token_refresh_failed",[198,1554,1555,720,1557,1559,1560,1562],{},[227,1556,308],{},[227,1558,312],{}," Token refresh fails (invalid or expired refresh token)\n",[227,1561,316],{}," Low (users need to re-login when this happens)",[198,1564,1565],{},[227,1566,322],{},[231,1568,1569],{},[234,1570,1571,748,1573],{},[209,1572,747],{},[231,1574,1575,1581,1586,1592],{},[234,1576,1577,1580],{},[209,1578,1579],{},"invalid_token"," - Token malformed or doesn't exist",[234,1582,1583,1179],{},[209,1584,1585],{},"expired_token",[234,1587,1588,1591],{},[209,1589,1590],{},"revoked_token"," - Token was revoked",[234,1593,1594,1596],{},[209,1595,761],{}," - User deleted",[198,1598,1599],{},[227,1600,384],{},[386,1602,1604],{"className":388,"code":1603,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:31:00.456Z\",\n  \"level\": \"warning\",\n  \"event\": \"token_refresh_failed\",\n  \"correlation_id\": \"e5f6a7b8-c9d0-1234-ef56-7890abcdef01\",\n  \"service\": \"outlabs_auth\",\n  \"reason\": \"expired_token\"\n}\n",[209,1605,1606,1610,1629,1647,1665,1684,1702,1718],{"__ignoreMap":391},[395,1607,1608],{"class":397,"line":398},[395,1609,402],{"class":401},[395,1611,1612,1614,1616,1618,1620,1622,1625,1627],{"class":397,"line":405},[395,1613,408],{"class":401},[395,1615,238],{"class":411},[395,1617,414],{"class":401},[395,1619,417],{"class":401},[395,1621,420],{"class":401},[395,1623,1624],{"class":423},"2025-01-24T10:31:00.456Z",[395,1626,414],{"class":401},[395,1628,287],{"class":401},[395,1630,1631,1633,1635,1637,1639,1641,1643,1645],{"class":397,"line":431},[395,1632,408],{"class":401},[395,1634,244],{"class":411},[395,1636,414],{"class":401},[395,1638,417],{"class":401},[395,1640,420],{"class":401},[395,1642,859],{"class":423},[395,1644,414],{"class":401},[395,1646,287],{"class":401},[395,1648,1649,1651,1653,1655,1657,1659,1661,1663],{"class":397,"line":451},[395,1650,408],{"class":401},[395,1652,211],{"class":411},[395,1654,414],{"class":401},[395,1656,417],{"class":401},[395,1658,420],{"class":401},[395,1660,1552],{"class":423},[395,1662,414],{"class":401},[395,1664,287],{"class":401},[395,1666,1667,1669,1671,1673,1675,1677,1680,1682],{"class":397,"line":470},[395,1668,408],{"class":401},[395,1670,259],{"class":411},[395,1672,414],{"class":401},[395,1674,417],{"class":401},[395,1676,420],{"class":401},[395,1678,1679],{"class":423},"e5f6a7b8-c9d0-1234-ef56-7890abcdef01",[395,1681,414],{"class":401},[395,1683,287],{"class":401},[395,1685,1686,1688,1690,1692,1694,1696,1698,1700],{"class":397,"line":490},[395,1687,408],{"class":401},[395,1689,265],{"class":411},[395,1691,414],{"class":401},[395,1693,417],{"class":401},[395,1695,420],{"class":401},[395,1697,269],{"class":423},[395,1699,414],{"class":401},[395,1701,287],{"class":401},[395,1703,1704,1706,1708,1710,1712,1714,1716],{"class":397,"line":509},[395,1705,408],{"class":401},[395,1707,747],{"class":411},[395,1709,414],{"class":401},[395,1711,417],{"class":401},[395,1713,420],{"class":401},[395,1715,1585],{"class":423},[395,1717,621],{"class":401},[395,1719,1720],{"class":397,"line":529},[395,1721,627],{"class":401},[295,1723],{},[302,1725,767],{"id":767},[198,1727,1728,720,1730,1732,1733,1735],{},[227,1729,308],{},[227,1731,312],{}," Account locked due to failed login attempts\n",[227,1734,316],{}," Low (should be rare, spikes indicate attacks)",[198,1737,1738],{},[227,1739,322],{},[231,1741,1742,1746,1750,1755,1761],{},[234,1743,1744,329],{},[209,1745,278],{},[234,1747,1748,334],{},[209,1749,282],{},[234,1751,1752,1754],{},[209,1753,811],{}," (int) - Number of failed attempts that triggered lockout",[234,1756,1757,1760],{},[209,1758,1759],{},"locked_until"," (string, optional) - ISO timestamp when lock expires (if temporary)",[234,1762,1763,1765],{},[209,1764,286],{}," (string, optional) - Last IP address that attempted login",[198,1767,1768],{},[227,1769,384],{},[386,1771,1773],{"className":388,"code":1772,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:20:00.789Z\",\n  \"level\": \"warning\",\n  \"event\": \"account_locked\",\n  \"correlation_id\": \"f6a7b8c9-d0e1-2345-f678-90abcdef0123\",\n  \"service\": \"outlabs_auth\",\n  \"user_id\": \"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47\",\n  \"email\": \"john@example.com\",\n  \"failed_attempts\": 5,\n  \"locked_until\": \"2025-01-24T11:20:00.000Z\",\n  \"ip_address\": \"192.168.1.1\"\n}\n",[209,1774,1775,1779,1798,1816,1834,1853,1871,1889,1907,1922,1941,1957],{"__ignoreMap":391},[395,1776,1777],{"class":397,"line":398},[395,1778,402],{"class":401},[395,1780,1781,1783,1785,1787,1789,1791,1794,1796],{"class":397,"line":405},[395,1782,408],{"class":401},[395,1784,238],{"class":411},[395,1786,414],{"class":401},[395,1788,417],{"class":401},[395,1790,420],{"class":401},[395,1792,1793],{"class":423},"2025-01-24T10:20:00.789Z",[395,1795,414],{"class":401},[395,1797,287],{"class":401},[395,1799,1800,1802,1804,1806,1808,1810,1812,1814],{"class":397,"line":431},[395,1801,408],{"class":401},[395,1803,244],{"class":411},[395,1805,414],{"class":401},[395,1807,417],{"class":401},[395,1809,420],{"class":401},[395,1811,859],{"class":423},[395,1813,414],{"class":401},[395,1815,287],{"class":401},[395,1817,1818,1820,1822,1824,1826,1828,1830,1832],{"class":397,"line":451},[395,1819,408],{"class":401},[395,1821,211],{"class":411},[395,1823,414],{"class":401},[395,1825,417],{"class":401},[395,1827,420],{"class":401},[395,1829,767],{"class":423},[395,1831,414],{"class":401},[395,1833,287],{"class":401},[395,1835,1836,1838,1840,1842,1844,1846,1849,1851],{"class":397,"line":470},[395,1837,408],{"class":401},[395,1839,259],{"class":411},[395,1841,414],{"class":401},[395,1843,417],{"class":401},[395,1845,420],{"class":401},[395,1847,1848],{"class":423},"f6a7b8c9-d0e1-2345-f678-90abcdef0123",[395,1850,414],{"class":401},[395,1852,287],{"class":401},[395,1854,1855,1857,1859,1861,1863,1865,1867,1869],{"class":397,"line":490},[395,1856,408],{"class":401},[395,1858,265],{"class":411},[395,1860,414],{"class":401},[395,1862,417],{"class":401},[395,1864,420],{"class":401},[395,1866,269],{"class":423},[395,1868,414],{"class":401},[395,1870,287],{"class":401},[395,1872,1873,1875,1877,1879,1881,1883,1885,1887],{"class":397,"line":509},[395,1874,408],{"class":401},[395,1876,278],{"class":411},[395,1878,414],{"class":401},[395,1880,417],{"class":401},[395,1882,420],{"class":401},[395,1884,522],{"class":423},[395,1886,414],{"class":401},[395,1888,287],{"class":401},[395,1890,1891,1893,1895,1897,1899,1901,1903,1905],{"class":397,"line":529},[395,1892,408],{"class":401},[395,1894,282],{"class":411},[395,1896,414],{"class":401},[395,1898,417],{"class":401},[395,1900,420],{"class":401},[395,1902,542],{"class":423},[395,1904,414],{"class":401},[395,1906,287],{"class":401},[395,1908,1909,1911,1913,1915,1917,1920],{"class":397,"line":549},[395,1910,408],{"class":401},[395,1912,811],{"class":411},[395,1914,414],{"class":401},[395,1916,417],{"class":401},[395,1918,1919],{"class":579}," 5",[395,1921,287],{"class":401},[395,1923,1924,1926,1928,1930,1932,1934,1937,1939],{"class":397,"line":568},[395,1925,408],{"class":401},[395,1927,1759],{"class":411},[395,1929,414],{"class":401},[395,1931,417],{"class":401},[395,1933,420],{"class":401},[395,1935,1936],{"class":423},"2025-01-24T11:20:00.000Z",[395,1938,414],{"class":401},[395,1940,287],{"class":401},[395,1942,1943,1945,1947,1949,1951,1953,1955],{"class":397,"line":585},[395,1944,408],{"class":401},[395,1946,286],{"class":411},[395,1948,414],{"class":401},[395,1950,417],{"class":401},[395,1952,420],{"class":401},[395,1954,598],{"class":423},[395,1956,621],{"class":401},[395,1958,1959],{"class":397,"line":605},[395,1960,627],{"class":401},[198,1962,1963],{},[227,1964,632],{},[386,1966,1968],{"className":635,"code":1967,"filename":637,"language":638,"meta":391,"style":391},"# Find all locked accounts today\njq 'select(.event == \"account_locked\")' app.log | jq -r '.email' | sort | uniq\n\n# Find IPs causing lockouts\njq 'select(.event == \"account_locked\") | .ip_address' app.log | sort | uniq -c\n",[209,1969,1970,1975,2012,2016,2021],{"__ignoreMap":391},[395,1971,1972],{"class":397,"line":398},[395,1973,1974],{"class":645},"# Find all locked accounts today\n",[395,1976,1977,1979,1981,1984,1986,1988,1990,1993,1996,1998,2001,2003,2005,2007,2009],{"class":397,"line":405},[395,1978,652],{"class":651},[395,1980,655],{"class":401},[395,1982,1983],{"class":423},"select(.event == \"account_locked\")",[395,1985,661],{"class":401},[395,1987,1072],{"class":423},[395,1989,1075],{"class":401},[395,1991,1992],{"class":651}," jq",[395,1994,1995],{"class":423}," -r",[395,1997,655],{"class":401},[395,1999,2000],{"class":423},".email",[395,2002,661],{"class":401},[395,2004,1075],{"class":401},[395,2006,1078],{"class":651},[395,2008,1075],{"class":401},[395,2010,2011],{"class":651}," uniq\n",[395,2013,2014],{"class":397,"line":431},[395,2015,670],{"emptyLinePlaceholder":669},[395,2017,2018],{"class":397,"line":451},[395,2019,2020],{"class":645},"# Find IPs causing lockouts\n",[395,2022,2023,2025,2027,2030,2032,2034,2036,2038,2040,2042],{"class":397,"line":470},[395,2024,652],{"class":651},[395,2026,655],{"class":401},[395,2028,2029],{"class":423},"select(.event == \"account_locked\") | .ip_address",[395,2031,661],{"class":401},[395,2033,1072],{"class":423},[395,2035,1075],{"class":401},[395,2037,1078],{"class":651},[395,2039,1075],{"class":401},[395,2041,1083],{"class":651},[395,2043,2044],{"class":423}," -c\n",[295,2046],{},[217,2048,2050],{"id":2049},"authorization-events","Authorization Events",[302,2052,2053],{"id":2053},"permission_check_granted",[198,2055,2056,2058,2059,2061,2062,2064,2065,2067,2068,2071],{},[227,2057,308],{}," DEBUG\n",[227,2060,312],{}," Permission check allows access\n",[227,2063,316],{}," Very high volume\n",[227,2066,1391],{}," Not logged (use ",[209,2069,2070],{},"log_permission_checks=\"all\""," to enable)",[198,2073,2074],{},[227,2075,322],{},[231,2077,2078,2082,2091,2097,2103],{},[234,2079,2080,329],{},[209,2081,278],{},[234,2083,2084,2087,2088,254],{},[209,2085,2086],{},"permission"," (string) - Permission checked (e.g., ",[209,2089,2090],{},"user:read",[234,2092,2093,2096],{},[209,2094,2095],{},"resource_id"," (string, optional) - Specific resource being accessed",[234,2098,2099,2102],{},[209,2100,2101],{},"entity_id"," (string, optional) - Entity context (EnterpriseRBAC)",[234,2104,2105,2107],{},[209,2106,293],{}," (float) - Time taken for check",[198,2109,2110],{},[227,2111,384],{},[386,2113,2115],{"className":388,"code":2114,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:15:30.123Z\",\n  \"level\": \"debug\",\n  \"event\": \"permission_check_granted\",\n  \"correlation_id\": \"a7b8c9d0-e1f2-3456-789a-bcdef0123456\",\n  \"service\": \"outlabs_auth\",\n  \"user_id\": \"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47\",\n  \"permission\": \"user:read\",\n  \"duration_ms\": 2.3\n}\n",[209,2116,2117,2121,2140,2159,2177,2196,2214,2232,2250,2263],{"__ignoreMap":391},[395,2118,2119],{"class":397,"line":398},[395,2120,402],{"class":401},[395,2122,2123,2125,2127,2129,2131,2133,2136,2138],{"class":397,"line":405},[395,2124,408],{"class":401},[395,2126,238],{"class":411},[395,2128,414],{"class":401},[395,2130,417],{"class":401},[395,2132,420],{"class":401},[395,2134,2135],{"class":423},"2025-01-24T10:15:30.123Z",[395,2137,414],{"class":401},[395,2139,287],{"class":401},[395,2141,2142,2144,2146,2148,2150,2152,2155,2157],{"class":397,"line":431},[395,2143,408],{"class":401},[395,2145,244],{"class":411},[395,2147,414],{"class":401},[395,2149,417],{"class":401},[395,2151,420],{"class":401},[395,2153,2154],{"class":423},"debug",[395,2156,414],{"class":401},[395,2158,287],{"class":401},[395,2160,2161,2163,2165,2167,2169,2171,2173,2175],{"class":397,"line":451},[395,2162,408],{"class":401},[395,2164,211],{"class":411},[395,2166,414],{"class":401},[395,2168,417],{"class":401},[395,2170,420],{"class":401},[395,2172,2053],{"class":423},[395,2174,414],{"class":401},[395,2176,287],{"class":401},[395,2178,2179,2181,2183,2185,2187,2189,2192,2194],{"class":397,"line":470},[395,2180,408],{"class":401},[395,2182,259],{"class":411},[395,2184,414],{"class":401},[395,2186,417],{"class":401},[395,2188,420],{"class":401},[395,2190,2191],{"class":423},"a7b8c9d0-e1f2-3456-789a-bcdef0123456",[395,2193,414],{"class":401},[395,2195,287],{"class":401},[395,2197,2198,2200,2202,2204,2206,2208,2210,2212],{"class":397,"line":490},[395,2199,408],{"class":401},[395,2201,265],{"class":411},[395,2203,414],{"class":401},[395,2205,417],{"class":401},[395,2207,420],{"class":401},[395,2209,269],{"class":423},[395,2211,414],{"class":401},[395,2213,287],{"class":401},[395,2215,2216,2218,2220,2222,2224,2226,2228,2230],{"class":397,"line":509},[395,2217,408],{"class":401},[395,2219,278],{"class":411},[395,2221,414],{"class":401},[395,2223,417],{"class":401},[395,2225,420],{"class":401},[395,2227,522],{"class":423},[395,2229,414],{"class":401},[395,2231,287],{"class":401},[395,2233,2234,2236,2238,2240,2242,2244,2246,2248],{"class":397,"line":529},[395,2235,408],{"class":401},[395,2237,2086],{"class":411},[395,2239,414],{"class":401},[395,2241,417],{"class":401},[395,2243,420],{"class":401},[395,2245,2090],{"class":423},[395,2247,414],{"class":401},[395,2249,287],{"class":401},[395,2251,2252,2254,2256,2258,2260],{"class":397,"line":549},[395,2253,408],{"class":401},[395,2255,293],{"class":411},[395,2257,414],{"class":401},[395,2259,417],{"class":401},[395,2261,2262],{"class":579}," 2.3\n",[395,2264,2265],{"class":397,"line":568},[395,2266,627],{"class":401},[295,2268],{},[302,2270,2271],{"id":2271},"permission_check_denied",[198,2273,2274,720,2276,2278,2279,2281,2282,2284,2285,254],{},[227,2275,308],{},[227,2277,312],{}," Permission check denies access\n",[227,2280,316],{}," Should be low (high rates indicate misconfigured roles)\n",[227,2283,1391],{}," Always logged (can disable with ",[209,2286,2287],{},"log_permission_checks=\"none\"",[198,2289,2290],{},[227,2291,322],{},[231,2293,2294,2298,2303,2308,2313,2318,2322],{},[234,2295,2296,329],{},[209,2297,278],{},[234,2299,2300,2302],{},[209,2301,282],{}," (string, optional) - User's email",[234,2304,2305,2307],{},[209,2306,2086],{}," (string) - Permission checked",[234,2309,2310,2312],{},[209,2311,2095],{}," (string, optional) - Specific resource",[234,2314,2315,2317],{},[209,2316,2101],{}," (string, optional) - Entity context",[234,2319,2320,797],{},[209,2321,293],{},[234,2323,2324,2326,2327],{},[209,2325,747],{}," (string, optional) - Denial reason:\n",[231,2328,2329,2335,2341,2347],{},[234,2330,2331,2334],{},[209,2332,2333],{},"no_permission"," - User doesn't have permission",[234,2336,2337,2340],{},[209,2338,2339],{},"abac_denied"," - ABAC condition failed",[234,2342,2343,2346],{},[209,2344,2345],{},"entity_denied"," - Not member of required entity",[234,2348,2349,2352],{},[209,2350,2351],{},"inactive_user"," - User account inactive",[198,2354,2355],{},[227,2356,384],{},[386,2358,2360],{"className":388,"code":2359,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:16:00.456Z\",\n  \"level\": \"warning\",\n  \"event\": \"permission_check_denied\",\n  \"correlation_id\": \"b8c9d0e1-f2a3-4567-890b-cdef01234567\",\n  \"service\": \"outlabs_auth\",\n  \"user_id\": \"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47\",\n  \"email\": \"john@example.com\",\n  \"permission\": \"user:delete\",\n  \"reason\": \"no_permission\",\n  \"duration_ms\": 3.1\n}\n",[209,2361,2362,2366,2385,2403,2421,2440,2458,2476,2494,2513,2531,2544],{"__ignoreMap":391},[395,2363,2364],{"class":397,"line":398},[395,2365,402],{"class":401},[395,2367,2368,2370,2372,2374,2376,2378,2381,2383],{"class":397,"line":405},[395,2369,408],{"class":401},[395,2371,238],{"class":411},[395,2373,414],{"class":401},[395,2375,417],{"class":401},[395,2377,420],{"class":401},[395,2379,2380],{"class":423},"2025-01-24T10:16:00.456Z",[395,2382,414],{"class":401},[395,2384,287],{"class":401},[395,2386,2387,2389,2391,2393,2395,2397,2399,2401],{"class":397,"line":431},[395,2388,408],{"class":401},[395,2390,244],{"class":411},[395,2392,414],{"class":401},[395,2394,417],{"class":401},[395,2396,420],{"class":401},[395,2398,859],{"class":423},[395,2400,414],{"class":401},[395,2402,287],{"class":401},[395,2404,2405,2407,2409,2411,2413,2415,2417,2419],{"class":397,"line":451},[395,2406,408],{"class":401},[395,2408,211],{"class":411},[395,2410,414],{"class":401},[395,2412,417],{"class":401},[395,2414,420],{"class":401},[395,2416,2271],{"class":423},[395,2418,414],{"class":401},[395,2420,287],{"class":401},[395,2422,2423,2425,2427,2429,2431,2433,2436,2438],{"class":397,"line":470},[395,2424,408],{"class":401},[395,2426,259],{"class":411},[395,2428,414],{"class":401},[395,2430,417],{"class":401},[395,2432,420],{"class":401},[395,2434,2435],{"class":423},"b8c9d0e1-f2a3-4567-890b-cdef01234567",[395,2437,414],{"class":401},[395,2439,287],{"class":401},[395,2441,2442,2444,2446,2448,2450,2452,2454,2456],{"class":397,"line":490},[395,2443,408],{"class":401},[395,2445,265],{"class":411},[395,2447,414],{"class":401},[395,2449,417],{"class":401},[395,2451,420],{"class":401},[395,2453,269],{"class":423},[395,2455,414],{"class":401},[395,2457,287],{"class":401},[395,2459,2460,2462,2464,2466,2468,2470,2472,2474],{"class":397,"line":509},[395,2461,408],{"class":401},[395,2463,278],{"class":411},[395,2465,414],{"class":401},[395,2467,417],{"class":401},[395,2469,420],{"class":401},[395,2471,522],{"class":423},[395,2473,414],{"class":401},[395,2475,287],{"class":401},[395,2477,2478,2480,2482,2484,2486,2488,2490,2492],{"class":397,"line":529},[395,2479,408],{"class":401},[395,2481,282],{"class":411},[395,2483,414],{"class":401},[395,2485,417],{"class":401},[395,2487,420],{"class":401},[395,2489,542],{"class":423},[395,2491,414],{"class":401},[395,2493,287],{"class":401},[395,2495,2496,2498,2500,2502,2504,2506,2509,2511],{"class":397,"line":549},[395,2497,408],{"class":401},[395,2499,2086],{"class":411},[395,2501,414],{"class":401},[395,2503,417],{"class":401},[395,2505,420],{"class":401},[395,2507,2508],{"class":423},"user:delete",[395,2510,414],{"class":401},[395,2512,287],{"class":401},[395,2514,2515,2517,2519,2521,2523,2525,2527,2529],{"class":397,"line":568},[395,2516,408],{"class":401},[395,2518,747],{"class":411},[395,2520,414],{"class":401},[395,2522,417],{"class":401},[395,2524,420],{"class":401},[395,2526,2333],{"class":423},[395,2528,414],{"class":401},[395,2530,287],{"class":401},[395,2532,2533,2535,2537,2539,2541],{"class":397,"line":585},[395,2534,408],{"class":401},[395,2536,293],{"class":411},[395,2538,414],{"class":401},[395,2540,417],{"class":401},[395,2542,2543],{"class":579}," 3.1\n",[395,2545,2546],{"class":397,"line":605},[395,2547,627],{"class":401},[198,2549,2550],{},[227,2551,632],{},[386,2553,2555],{"className":635,"code":2554,"filename":637,"language":638,"meta":391,"style":391},"# Find all denied permissions\njq 'select(.event == \"permission_check_denied\")' app.log\n\n# Top denied permissions\njq 'select(.event == \"permission_check_denied\") | .permission' app.log | sort | uniq -c | sort -rn\n\n# Users experiencing denials\njq 'select(.event == \"permission_check_denied\") | .email' app.log | sort | uniq -c\n",[209,2556,2557,2562,2575,2579,2584,2613,2617,2622],{"__ignoreMap":391},[395,2558,2559],{"class":397,"line":398},[395,2560,2561],{"class":645},"# Find all denied permissions\n",[395,2563,2564,2566,2568,2571,2573],{"class":397,"line":405},[395,2565,652],{"class":651},[395,2567,655],{"class":401},[395,2569,2570],{"class":423},"select(.event == \"permission_check_denied\")",[395,2572,661],{"class":401},[395,2574,664],{"class":423},[395,2576,2577],{"class":397,"line":431},[395,2578,670],{"emptyLinePlaceholder":669},[395,2580,2581],{"class":397,"line":451},[395,2582,2583],{"class":645},"# Top denied permissions\n",[395,2585,2586,2588,2590,2593,2595,2597,2599,2601,2603,2605,2607,2609,2611],{"class":397,"line":470},[395,2587,652],{"class":651},[395,2589,655],{"class":401},[395,2591,2592],{"class":423},"select(.event == \"permission_check_denied\") | .permission",[395,2594,661],{"class":401},[395,2596,1072],{"class":423},[395,2598,1075],{"class":401},[395,2600,1078],{"class":651},[395,2602,1075],{"class":401},[395,2604,1083],{"class":651},[395,2606,1086],{"class":423},[395,2608,1075],{"class":401},[395,2610,1078],{"class":651},[395,2612,1093],{"class":423},[395,2614,2615],{"class":397,"line":490},[395,2616,670],{"emptyLinePlaceholder":669},[395,2618,2619],{"class":397,"line":509},[395,2620,2621],{"class":645},"# Users experiencing denials\n",[395,2623,2624,2626,2628,2631,2633,2635,2637,2639,2641,2643],{"class":397,"line":529},[395,2625,652],{"class":651},[395,2627,655],{"class":401},[395,2629,2630],{"class":423},"select(.event == \"permission_check_denied\") | .email",[395,2632,661],{"class":401},[395,2634,1072],{"class":423},[395,2636,1075],{"class":401},[395,2638,1078],{"class":651},[395,2640,1075],{"class":401},[395,2642,1083],{"class":651},[395,2644,2044],{"class":423},[295,2646],{},[302,2648,2649],{"id":2649},"permission_check_slow",[198,2651,2652,720,2654,2656,2657,2659,2660,2662],{},[227,2653,308],{},[227,2655,312],{}," Permission check takes >100ms (performance issue)\n",[227,2658,316],{}," Should be rare\n",[227,2661,1391],{}," Always logged",[198,2664,2665],{},[227,2666,322],{},[231,2668,2669,2673,2677,2681,2686,2692],{},[234,2670,2671,329],{},[209,2672,278],{},[234,2674,2675,2307],{},[209,2676,2086],{},[234,2678,2679,2317],{},[209,2680,2101],{},[234,2682,2683,2685],{},[209,2684,293],{}," (float) - Time taken (>100ms)",[234,2687,2688,2691],{},[209,2689,2690],{},"hierarchy_depth"," (int, optional) - Entity hierarchy depth traversed",[234,2693,2694,2697],{},[209,2695,2696],{},"abac_conditions_evaluated"," (int, optional) - Number of ABAC conditions",[198,2699,2700],{},[227,2701,384],{},[386,2703,2705],{"className":388,"code":2704,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:17:00.789Z\",\n  \"level\": \"warning\",\n  \"event\": \"permission_check_slow\",\n  \"correlation_id\": \"c9d0e1f2-a3b4-5678-901c-def012345678\",\n  \"service\": \"outlabs_auth\",\n  \"user_id\": \"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47\",\n  \"permission\": \"lead:read_tree\",\n  \"entity_id\": \"ent_workspace_abc123\",\n  \"duration_ms\": 156.7,\n  \"hierarchy_depth\": 8,\n  \"abac_conditions_evaluated\": 3\n}\n",[209,2706,2707,2711,2730,2748,2766,2785,2803,2821,2840,2859,2874,2889,2901],{"__ignoreMap":391},[395,2708,2709],{"class":397,"line":398},[395,2710,402],{"class":401},[395,2712,2713,2715,2717,2719,2721,2723,2726,2728],{"class":397,"line":405},[395,2714,408],{"class":401},[395,2716,238],{"class":411},[395,2718,414],{"class":401},[395,2720,417],{"class":401},[395,2722,420],{"class":401},[395,2724,2725],{"class":423},"2025-01-24T10:17:00.789Z",[395,2727,414],{"class":401},[395,2729,287],{"class":401},[395,2731,2732,2734,2736,2738,2740,2742,2744,2746],{"class":397,"line":431},[395,2733,408],{"class":401},[395,2735,244],{"class":411},[395,2737,414],{"class":401},[395,2739,417],{"class":401},[395,2741,420],{"class":401},[395,2743,859],{"class":423},[395,2745,414],{"class":401},[395,2747,287],{"class":401},[395,2749,2750,2752,2754,2756,2758,2760,2762,2764],{"class":397,"line":451},[395,2751,408],{"class":401},[395,2753,211],{"class":411},[395,2755,414],{"class":401},[395,2757,417],{"class":401},[395,2759,420],{"class":401},[395,2761,2649],{"class":423},[395,2763,414],{"class":401},[395,2765,287],{"class":401},[395,2767,2768,2770,2772,2774,2776,2778,2781,2783],{"class":397,"line":470},[395,2769,408],{"class":401},[395,2771,259],{"class":411},[395,2773,414],{"class":401},[395,2775,417],{"class":401},[395,2777,420],{"class":401},[395,2779,2780],{"class":423},"c9d0e1f2-a3b4-5678-901c-def012345678",[395,2782,414],{"class":401},[395,2784,287],{"class":401},[395,2786,2787,2789,2791,2793,2795,2797,2799,2801],{"class":397,"line":490},[395,2788,408],{"class":401},[395,2790,265],{"class":411},[395,2792,414],{"class":401},[395,2794,417],{"class":401},[395,2796,420],{"class":401},[395,2798,269],{"class":423},[395,2800,414],{"class":401},[395,2802,287],{"class":401},[395,2804,2805,2807,2809,2811,2813,2815,2817,2819],{"class":397,"line":509},[395,2806,408],{"class":401},[395,2808,278],{"class":411},[395,2810,414],{"class":401},[395,2812,417],{"class":401},[395,2814,420],{"class":401},[395,2816,522],{"class":423},[395,2818,414],{"class":401},[395,2820,287],{"class":401},[395,2822,2823,2825,2827,2829,2831,2833,2836,2838],{"class":397,"line":529},[395,2824,408],{"class":401},[395,2826,2086],{"class":411},[395,2828,414],{"class":401},[395,2830,417],{"class":401},[395,2832,420],{"class":401},[395,2834,2835],{"class":423},"lead:read_tree",[395,2837,414],{"class":401},[395,2839,287],{"class":401},[395,2841,2842,2844,2846,2848,2850,2852,2855,2857],{"class":397,"line":549},[395,2843,408],{"class":401},[395,2845,2101],{"class":411},[395,2847,414],{"class":401},[395,2849,417],{"class":401},[395,2851,420],{"class":401},[395,2853,2854],{"class":423},"ent_workspace_abc123",[395,2856,414],{"class":401},[395,2858,287],{"class":401},[395,2860,2861,2863,2865,2867,2869,2872],{"class":397,"line":568},[395,2862,408],{"class":401},[395,2864,293],{"class":411},[395,2866,414],{"class":401},[395,2868,417],{"class":401},[395,2870,2871],{"class":579}," 156.7",[395,2873,287],{"class":401},[395,2875,2876,2878,2880,2882,2884,2887],{"class":397,"line":585},[395,2877,408],{"class":401},[395,2879,2690],{"class":411},[395,2881,414],{"class":401},[395,2883,417],{"class":401},[395,2885,2886],{"class":579}," 8",[395,2888,287],{"class":401},[395,2890,2891,2893,2895,2897,2899],{"class":397,"line":605},[395,2892,408],{"class":401},[395,2894,2696],{"class":411},[395,2896,414],{"class":401},[395,2898,417],{"class":401},[395,2900,1018],{"class":579},[395,2902,2903],{"class":397,"line":624},[395,2904,627],{"class":401},[295,2906],{},[217,2908,2910],{"id":2909},"api-key-events","API Key Events",[302,2912,2913],{"id":2913},"api_key_validated",[198,2915,2916,2058,2918,2920,2921,2064,2923,2067,2925,2071],{},[227,2917,308],{},[227,2919,312],{}," API key successfully validated\n",[227,2922,316],{},[227,2924,1391],{},[209,2926,2927],{},"log_api_key_hits=True",[198,2929,2930],{},[227,2931,322],{},[231,2933,2934,2943,2949,2954],{},[234,2935,2936,2939,2940,254],{},[209,2937,2938],{},"api_key_prefix"," (string) - First 12 chars of API key (e.g., ",[209,2941,2942],{},"sk_live_abc1",[234,2944,2945,2948],{},[209,2946,2947],{},"api_key_id"," (string) - API key ID",[234,2950,2951,2953],{},[209,2952,278],{}," (string, optional) - Associated user ID",[234,2955,2956,2958],{},[209,2957,293],{}," (float) - Validation time",[198,2960,2961],{},[227,2962,384],{},[386,2964,2966],{"className":388,"code":2965,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:18:00.123Z\",\n  \"level\": \"debug\",\n  \"event\": \"api_key_validated\",\n  \"correlation_id\": \"d0e1f2a3-b4c5-6789-012d-ef0123456789\",\n  \"service\": \"outlabs_auth\",\n  \"api_key_prefix\": \"sk_live_abc1\",\n  \"api_key_id\": \"key_123456\",\n  \"duration_ms\": 1.2\n}\n",[209,2967,2968,2972,2991,3009,3027,3046,3064,3082,3101,3114],{"__ignoreMap":391},[395,2969,2970],{"class":397,"line":398},[395,2971,402],{"class":401},[395,2973,2974,2976,2978,2980,2982,2984,2987,2989],{"class":397,"line":405},[395,2975,408],{"class":401},[395,2977,238],{"class":411},[395,2979,414],{"class":401},[395,2981,417],{"class":401},[395,2983,420],{"class":401},[395,2985,2986],{"class":423},"2025-01-24T10:18:00.123Z",[395,2988,414],{"class":401},[395,2990,287],{"class":401},[395,2992,2993,2995,2997,2999,3001,3003,3005,3007],{"class":397,"line":431},[395,2994,408],{"class":401},[395,2996,244],{"class":411},[395,2998,414],{"class":401},[395,3000,417],{"class":401},[395,3002,420],{"class":401},[395,3004,2154],{"class":423},[395,3006,414],{"class":401},[395,3008,287],{"class":401},[395,3010,3011,3013,3015,3017,3019,3021,3023,3025],{"class":397,"line":451},[395,3012,408],{"class":401},[395,3014,211],{"class":411},[395,3016,414],{"class":401},[395,3018,417],{"class":401},[395,3020,420],{"class":401},[395,3022,2913],{"class":423},[395,3024,414],{"class":401},[395,3026,287],{"class":401},[395,3028,3029,3031,3033,3035,3037,3039,3042,3044],{"class":397,"line":470},[395,3030,408],{"class":401},[395,3032,259],{"class":411},[395,3034,414],{"class":401},[395,3036,417],{"class":401},[395,3038,420],{"class":401},[395,3040,3041],{"class":423},"d0e1f2a3-b4c5-6789-012d-ef0123456789",[395,3043,414],{"class":401},[395,3045,287],{"class":401},[395,3047,3048,3050,3052,3054,3056,3058,3060,3062],{"class":397,"line":490},[395,3049,408],{"class":401},[395,3051,265],{"class":411},[395,3053,414],{"class":401},[395,3055,417],{"class":401},[395,3057,420],{"class":401},[395,3059,269],{"class":423},[395,3061,414],{"class":401},[395,3063,287],{"class":401},[395,3065,3066,3068,3070,3072,3074,3076,3078,3080],{"class":397,"line":509},[395,3067,408],{"class":401},[395,3069,2938],{"class":411},[395,3071,414],{"class":401},[395,3073,417],{"class":401},[395,3075,420],{"class":401},[395,3077,2942],{"class":423},[395,3079,414],{"class":401},[395,3081,287],{"class":401},[395,3083,3084,3086,3088,3090,3092,3094,3097,3099],{"class":397,"line":529},[395,3085,408],{"class":401},[395,3087,2947],{"class":411},[395,3089,414],{"class":401},[395,3091,417],{"class":401},[395,3093,420],{"class":401},[395,3095,3096],{"class":423},"key_123456",[395,3098,414],{"class":401},[395,3100,287],{"class":401},[395,3102,3103,3105,3107,3109,3111],{"class":397,"line":549},[395,3104,408],{"class":401},[395,3106,293],{"class":411},[395,3108,414],{"class":401},[395,3110,417],{"class":401},[395,3112,3113],{"class":579}," 1.2\n",[395,3115,3116],{"class":397,"line":568},[395,3117,627],{"class":401},[295,3119],{},[302,3121,3122],{"id":3122},"api_key_validation_failed",[198,3124,3125,720,3127,3129,3130,3132],{},[227,3126,308],{},[227,3128,312],{}," API key validation fails\n",[227,3131,316],{}," Should be low (spikes indicate scanning attacks)",[198,3134,3135],{},[227,3136,322],{},[231,3138,3139,3144,3180],{},[234,3140,3141,3143],{},[209,3142,2938],{}," (string, optional) - Prefix if key format is valid",[234,3145,3146,748,3148],{},[209,3147,747],{},[231,3149,3150,3156,3162,3168,3174],{},[234,3151,3152,3155],{},[209,3153,3154],{},"invalid_format"," - Malformed API key",[234,3157,3158,3161],{},[209,3159,3160],{},"not_found"," - API key doesn't exist",[234,3163,3164,3167],{},[209,3165,3166],{},"expired"," - API key expired",[234,3169,3170,3173],{},[209,3171,3172],{},"disabled"," - API key was disabled",[234,3175,3176,3179],{},[209,3177,3178],{},"rate_limited"," - Rate limit exceeded",[234,3181,3182,802],{},[209,3183,286],{},[198,3185,3186],{},[227,3187,384],{},[386,3189,3191],{"className":388,"code":3190,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:19:00.456Z\",\n  \"level\": \"warning\",\n  \"event\": \"api_key_validation_failed\",\n  \"correlation_id\": \"e1f2a3b4-c5d6-7890-123e-f01234567890\",\n  \"service\": \"outlabs_auth\",\n  \"api_key_prefix\": \"sk_live_xyz9\",\n  \"reason\": \"not_found\",\n  \"ip_address\": \"203.0.113.42\"\n}\n",[209,3192,3193,3197,3216,3234,3252,3271,3289,3308,3326,3343],{"__ignoreMap":391},[395,3194,3195],{"class":397,"line":398},[395,3196,402],{"class":401},[395,3198,3199,3201,3203,3205,3207,3209,3212,3214],{"class":397,"line":405},[395,3200,408],{"class":401},[395,3202,238],{"class":411},[395,3204,414],{"class":401},[395,3206,417],{"class":401},[395,3208,420],{"class":401},[395,3210,3211],{"class":423},"2025-01-24T10:19:00.456Z",[395,3213,414],{"class":401},[395,3215,287],{"class":401},[395,3217,3218,3220,3222,3224,3226,3228,3230,3232],{"class":397,"line":431},[395,3219,408],{"class":401},[395,3221,244],{"class":411},[395,3223,414],{"class":401},[395,3225,417],{"class":401},[395,3227,420],{"class":401},[395,3229,859],{"class":423},[395,3231,414],{"class":401},[395,3233,287],{"class":401},[395,3235,3236,3238,3240,3242,3244,3246,3248,3250],{"class":397,"line":451},[395,3237,408],{"class":401},[395,3239,211],{"class":411},[395,3241,414],{"class":401},[395,3243,417],{"class":401},[395,3245,420],{"class":401},[395,3247,3122],{"class":423},[395,3249,414],{"class":401},[395,3251,287],{"class":401},[395,3253,3254,3256,3258,3260,3262,3264,3267,3269],{"class":397,"line":470},[395,3255,408],{"class":401},[395,3257,259],{"class":411},[395,3259,414],{"class":401},[395,3261,417],{"class":401},[395,3263,420],{"class":401},[395,3265,3266],{"class":423},"e1f2a3b4-c5d6-7890-123e-f01234567890",[395,3268,414],{"class":401},[395,3270,287],{"class":401},[395,3272,3273,3275,3277,3279,3281,3283,3285,3287],{"class":397,"line":490},[395,3274,408],{"class":401},[395,3276,265],{"class":411},[395,3278,414],{"class":401},[395,3280,417],{"class":401},[395,3282,420],{"class":401},[395,3284,269],{"class":423},[395,3286,414],{"class":401},[395,3288,287],{"class":401},[395,3290,3291,3293,3295,3297,3299,3301,3304,3306],{"class":397,"line":509},[395,3292,408],{"class":401},[395,3294,2938],{"class":411},[395,3296,414],{"class":401},[395,3298,417],{"class":401},[395,3300,420],{"class":401},[395,3302,3303],{"class":423},"sk_live_xyz9",[395,3305,414],{"class":401},[395,3307,287],{"class":401},[395,3309,3310,3312,3314,3316,3318,3320,3322,3324],{"class":397,"line":529},[395,3311,408],{"class":401},[395,3313,747],{"class":411},[395,3315,414],{"class":401},[395,3317,417],{"class":401},[395,3319,420],{"class":401},[395,3321,3160],{"class":423},[395,3323,414],{"class":401},[395,3325,287],{"class":401},[395,3327,3328,3330,3332,3334,3336,3338,3341],{"class":397,"line":549},[395,3329,408],{"class":401},[395,3331,286],{"class":411},[395,3333,414],{"class":401},[395,3335,417],{"class":401},[395,3337,420],{"class":401},[395,3339,3340],{"class":423},"203.0.113.42",[395,3342,621],{"class":401},[395,3344,3345],{"class":397,"line":568},[395,3346,627],{"class":401},[198,3348,3349],{},[227,3350,632],{},[386,3352,3354],{"className":635,"code":3353,"filename":637,"language":638,"meta":391,"style":391},"# Find invalid API key attempts\njq 'select(.event == \"api_key_validation_failed\")' app.log\n\n# Find API key scanning attacks (invalid formats)\njq 'select(.event == \"api_key_validation_failed\" and .reason == \"invalid_format\")' app.log\n\n# IPs attempting invalid keys\njq 'select(.event == \"api_key_validation_failed\") | .ip_address' app.log | sort | uniq -c\n",[209,3355,3356,3361,3374,3378,3383,3396,3400,3405],{"__ignoreMap":391},[395,3357,3358],{"class":397,"line":398},[395,3359,3360],{"class":645},"# Find invalid API key attempts\n",[395,3362,3363,3365,3367,3370,3372],{"class":397,"line":405},[395,3364,652],{"class":651},[395,3366,655],{"class":401},[395,3368,3369],{"class":423},"select(.event == \"api_key_validation_failed\")",[395,3371,661],{"class":401},[395,3373,664],{"class":423},[395,3375,3376],{"class":397,"line":431},[395,3377,670],{"emptyLinePlaceholder":669},[395,3379,3380],{"class":397,"line":451},[395,3381,3382],{"class":645},"# Find API key scanning attacks (invalid formats)\n",[395,3384,3385,3387,3389,3392,3394],{"class":397,"line":470},[395,3386,652],{"class":651},[395,3388,655],{"class":401},[395,3390,3391],{"class":423},"select(.event == \"api_key_validation_failed\" and .reason == \"invalid_format\")",[395,3393,661],{"class":401},[395,3395,664],{"class":423},[395,3397,3398],{"class":397,"line":490},[395,3399,670],{"emptyLinePlaceholder":669},[395,3401,3402],{"class":397,"line":509},[395,3403,3404],{"class":645},"# IPs attempting invalid keys\n",[395,3406,3407,3409,3411,3414,3416,3418,3420,3422,3424,3426],{"class":397,"line":529},[395,3408,652],{"class":651},[395,3410,655],{"class":401},[395,3412,3413],{"class":423},"select(.event == \"api_key_validation_failed\") | .ip_address",[395,3415,661],{"class":401},[395,3417,1072],{"class":423},[395,3419,1075],{"class":401},[395,3421,1078],{"class":651},[395,3423,1075],{"class":401},[395,3425,1083],{"class":651},[395,3427,2044],{"class":423},[295,3429],{},[302,3431,3432],{"id":3432},"api_key_rate_limit_exceeded",[198,3434,3435,720,3437,3439,3440,3442],{},[227,3436,308],{},[227,3438,312],{}," API key hits rate limit\n",[227,3441,316],{}," Depends on usage patterns",[198,3444,3445],{},[227,3446,322],{},[231,3448,3449,3454,3458,3464],{},[234,3450,3451,3453],{},[209,3452,2938],{}," (string) - API key prefix",[234,3455,3456,2948],{},[209,3457,2947],{},[234,3459,3460,3463],{},[209,3461,3462],{},"rate_limit"," (int) - Configured rate limit (requests per minute)",[234,3465,3466,3469],{},[209,3467,3468],{},"current_rate"," (int) - Current request rate",[198,3471,3472],{},[227,3473,384],{},[386,3475,3477],{"className":388,"code":3476,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:20:00.789Z\",\n  \"level\": \"warning\",\n  \"event\": \"api_key_rate_limit_exceeded\",\n  \"correlation_id\": \"f2a3b4c5-d6e7-8901-234f-012345678901\",\n  \"service\": \"outlabs_auth\",\n  \"api_key_prefix\": \"sk_live_abc1\",\n  \"api_key_id\": \"key_123456\",\n  \"rate_limit\": 1000,\n  \"current_rate\": 1247\n}\n",[209,3478,3479,3483,3501,3519,3537,3556,3574,3592,3610,3625,3638],{"__ignoreMap":391},[395,3480,3481],{"class":397,"line":398},[395,3482,402],{"class":401},[395,3484,3485,3487,3489,3491,3493,3495,3497,3499],{"class":397,"line":405},[395,3486,408],{"class":401},[395,3488,238],{"class":411},[395,3490,414],{"class":401},[395,3492,417],{"class":401},[395,3494,420],{"class":401},[395,3496,1793],{"class":423},[395,3498,414],{"class":401},[395,3500,287],{"class":401},[395,3502,3503,3505,3507,3509,3511,3513,3515,3517],{"class":397,"line":431},[395,3504,408],{"class":401},[395,3506,244],{"class":411},[395,3508,414],{"class":401},[395,3510,417],{"class":401},[395,3512,420],{"class":401},[395,3514,859],{"class":423},[395,3516,414],{"class":401},[395,3518,287],{"class":401},[395,3520,3521,3523,3525,3527,3529,3531,3533,3535],{"class":397,"line":451},[395,3522,408],{"class":401},[395,3524,211],{"class":411},[395,3526,414],{"class":401},[395,3528,417],{"class":401},[395,3530,420],{"class":401},[395,3532,3432],{"class":423},[395,3534,414],{"class":401},[395,3536,287],{"class":401},[395,3538,3539,3541,3543,3545,3547,3549,3552,3554],{"class":397,"line":470},[395,3540,408],{"class":401},[395,3542,259],{"class":411},[395,3544,414],{"class":401},[395,3546,417],{"class":401},[395,3548,420],{"class":401},[395,3550,3551],{"class":423},"f2a3b4c5-d6e7-8901-234f-012345678901",[395,3553,414],{"class":401},[395,3555,287],{"class":401},[395,3557,3558,3560,3562,3564,3566,3568,3570,3572],{"class":397,"line":490},[395,3559,408],{"class":401},[395,3561,265],{"class":411},[395,3563,414],{"class":401},[395,3565,417],{"class":401},[395,3567,420],{"class":401},[395,3569,269],{"class":423},[395,3571,414],{"class":401},[395,3573,287],{"class":401},[395,3575,3576,3578,3580,3582,3584,3586,3588,3590],{"class":397,"line":509},[395,3577,408],{"class":401},[395,3579,2938],{"class":411},[395,3581,414],{"class":401},[395,3583,417],{"class":401},[395,3585,420],{"class":401},[395,3587,2942],{"class":423},[395,3589,414],{"class":401},[395,3591,287],{"class":401},[395,3593,3594,3596,3598,3600,3602,3604,3606,3608],{"class":397,"line":529},[395,3595,408],{"class":401},[395,3597,2947],{"class":411},[395,3599,414],{"class":401},[395,3601,417],{"class":401},[395,3603,420],{"class":401},[395,3605,3096],{"class":423},[395,3607,414],{"class":401},[395,3609,287],{"class":401},[395,3611,3612,3614,3616,3618,3620,3623],{"class":397,"line":549},[395,3613,408],{"class":401},[395,3615,3462],{"class":411},[395,3617,414],{"class":401},[395,3619,417],{"class":401},[395,3621,3622],{"class":579}," 1000",[395,3624,287],{"class":401},[395,3626,3627,3629,3631,3633,3635],{"class":397,"line":568},[395,3628,408],{"class":401},[395,3630,3468],{"class":411},[395,3632,414],{"class":401},[395,3634,417],{"class":401},[395,3636,3637],{"class":579}," 1247\n",[395,3639,3640],{"class":397,"line":585},[395,3641,627],{"class":401},[295,3643],{},[217,3645,3647],{"id":3646},"security-events","Security Events",[302,3649,3650],{"id":3650},"suspicious_activity_detected",[198,3652,3653,3655,3656,3658,3659,3661],{},[227,3654,308],{}," WARNING \u002F ERROR\n",[227,3657,312],{}," Suspicious activity patterns detected\n",[227,3660,316],{}," Should be rare",[198,3663,3664],{},[227,3665,322],{},[231,3667,3668,3706,3711,3716,3721],{},[234,3669,3670,3673,3674],{},[209,3671,3672],{},"type"," (string) - Activity type:\n",[231,3675,3676,3682,3688,3694,3700],{},[234,3677,3678,3681],{},[209,3679,3680],{},"brute_force"," - Multiple failed logins",[234,3683,3684,3687],{},[209,3685,3686],{},"session_hijack"," - IP\u002Fuser agent changed mid-session",[234,3689,3690,3693],{},[209,3691,3692],{},"rate_limit_abuse"," - Excessive requests",[234,3695,3696,3699],{},[209,3697,3698],{},"invalid_token_flood"," - Many invalid tokens",[234,3701,3702,3705],{},[209,3703,3704],{},"api_key_scanning"," - Scanning for valid API keys",[234,3707,3708,3710],{},[209,3709,278],{}," (string, optional) - Affected user",[234,3712,3713,3715],{},[209,3714,282],{}," (string, optional) - User email",[234,3717,3718,3720],{},[209,3719,286],{}," (string, optional) - Suspicious IP",[234,3722,3723,3726],{},[209,3724,3725],{},"details"," (object) - Additional context",[198,3728,3729],{},[227,3730,384],{},[386,3732,3734],{"className":388,"code":3733,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:21:00.123Z\",\n  \"level\": \"error\",\n  \"event\": \"suspicious_activity_detected\",\n  \"correlation_id\": \"a3b4c5d6-e7f8-9012-345a-123456789012\",\n  \"service\": \"outlabs_auth\",\n  \"type\": \"brute_force\",\n  \"email\": \"target@example.com\",\n  \"ip_address\": \"203.0.113.42\",\n  \"details\": {\n    \"failed_attempts\": 50,\n    \"time_window_minutes\": 5,\n    \"accounts_targeted\": 12\n  }\n}\n",[209,3735,3736,3740,3759,3778,3796,3815,3833,3851,3870,3888,3901,3917,3932,3946,3952],{"__ignoreMap":391},[395,3737,3738],{"class":397,"line":398},[395,3739,402],{"class":401},[395,3741,3742,3744,3746,3748,3750,3752,3755,3757],{"class":397,"line":405},[395,3743,408],{"class":401},[395,3745,238],{"class":411},[395,3747,414],{"class":401},[395,3749,417],{"class":401},[395,3751,420],{"class":401},[395,3753,3754],{"class":423},"2025-01-24T10:21:00.123Z",[395,3756,414],{"class":401},[395,3758,287],{"class":401},[395,3760,3761,3763,3765,3767,3769,3771,3774,3776],{"class":397,"line":431},[395,3762,408],{"class":401},[395,3764,244],{"class":411},[395,3766,414],{"class":401},[395,3768,417],{"class":401},[395,3770,420],{"class":401},[395,3772,3773],{"class":423},"error",[395,3775,414],{"class":401},[395,3777,287],{"class":401},[395,3779,3780,3782,3784,3786,3788,3790,3792,3794],{"class":397,"line":451},[395,3781,408],{"class":401},[395,3783,211],{"class":411},[395,3785,414],{"class":401},[395,3787,417],{"class":401},[395,3789,420],{"class":401},[395,3791,3650],{"class":423},[395,3793,414],{"class":401},[395,3795,287],{"class":401},[395,3797,3798,3800,3802,3804,3806,3808,3811,3813],{"class":397,"line":470},[395,3799,408],{"class":401},[395,3801,259],{"class":411},[395,3803,414],{"class":401},[395,3805,417],{"class":401},[395,3807,420],{"class":401},[395,3809,3810],{"class":423},"a3b4c5d6-e7f8-9012-345a-123456789012",[395,3812,414],{"class":401},[395,3814,287],{"class":401},[395,3816,3817,3819,3821,3823,3825,3827,3829,3831],{"class":397,"line":490},[395,3818,408],{"class":401},[395,3820,265],{"class":411},[395,3822,414],{"class":401},[395,3824,417],{"class":401},[395,3826,420],{"class":401},[395,3828,269],{"class":423},[395,3830,414],{"class":401},[395,3832,287],{"class":401},[395,3834,3835,3837,3839,3841,3843,3845,3847,3849],{"class":397,"line":509},[395,3836,408],{"class":401},[395,3838,3672],{"class":411},[395,3840,414],{"class":401},[395,3842,417],{"class":401},[395,3844,420],{"class":401},[395,3846,3680],{"class":423},[395,3848,414],{"class":401},[395,3850,287],{"class":401},[395,3852,3853,3855,3857,3859,3861,3863,3866,3868],{"class":397,"line":529},[395,3854,408],{"class":401},[395,3856,282],{"class":411},[395,3858,414],{"class":401},[395,3860,417],{"class":401},[395,3862,420],{"class":401},[395,3864,3865],{"class":423},"target@example.com",[395,3867,414],{"class":401},[395,3869,287],{"class":401},[395,3871,3872,3874,3876,3878,3880,3882,3884,3886],{"class":397,"line":549},[395,3873,408],{"class":401},[395,3875,286],{"class":411},[395,3877,414],{"class":401},[395,3879,417],{"class":401},[395,3881,420],{"class":401},[395,3883,3340],{"class":423},[395,3885,414],{"class":401},[395,3887,287],{"class":401},[395,3889,3890,3892,3894,3896,3898],{"class":397,"line":568},[395,3891,408],{"class":401},[395,3893,3725],{"class":411},[395,3895,414],{"class":401},[395,3897,417],{"class":401},[395,3899,3900],{"class":401}," {\n",[395,3902,3903,3906,3908,3910,3912,3915],{"class":397,"line":585},[395,3904,3905],{"class":401},"    \"",[395,3907,811],{"class":651},[395,3909,414],{"class":401},[395,3911,417],{"class":401},[395,3913,3914],{"class":579}," 50",[395,3916,287],{"class":401},[395,3918,3919,3921,3924,3926,3928,3930],{"class":397,"line":605},[395,3920,3905],{"class":401},[395,3922,3923],{"class":651},"time_window_minutes",[395,3925,414],{"class":401},[395,3927,417],{"class":401},[395,3929,1919],{"class":579},[395,3931,287],{"class":401},[395,3933,3934,3936,3939,3941,3943],{"class":397,"line":624},[395,3935,3905],{"class":401},[395,3937,3938],{"class":651},"accounts_targeted",[395,3940,414],{"class":401},[395,3942,417],{"class":401},[395,3944,3945],{"class":579}," 12\n",[395,3947,3949],{"class":397,"line":3948},14,[395,3950,3951],{"class":401},"  }\n",[395,3953,3955],{"class":397,"line":3954},15,[395,3956,627],{"class":401},[295,3958],{},[302,3960,3961],{"id":3961},"session_hijack_suspected",[198,3963,3964,3966,3967,3969,3970,3972],{},[227,3965,308],{}," ERROR\n",[227,3968,312],{}," Session shows signs of hijacking\n",[227,3971,316],{}," Should be very rare",[198,3974,3975],{},[227,3976,322],{},[231,3978,3979,3983,3987,4012,4018,4024,4030],{},[234,3980,3981,329],{},[209,3982,278],{},[234,3984,3985,334],{},[209,3986,282],{},[234,3988,3989,3991,3992],{},[209,3990,747],{}," (string) - Detection reason:\n",[231,3993,3994,4000,4006],{},[234,3995,3996,3999],{},[209,3997,3998],{},"ip_changed"," - IP address changed during session",[234,4001,4002,4005],{},[209,4003,4004],{},"user_agent_changed"," - User agent changed",[234,4007,4008,4011],{},[209,4009,4010],{},"location_anomaly"," - Geographic location jumped",[234,4013,4014,4017],{},[209,4015,4016],{},"original_ip"," (string, optional) - Original IP",[234,4019,4020,4023],{},[209,4021,4022],{},"new_ip"," (string, optional) - New IP",[234,4025,4026,4029],{},[209,4027,4028],{},"original_user_agent"," (string, optional) - Original user agent",[234,4031,4032,4035],{},[209,4033,4034],{},"new_user_agent"," (string, optional) - New user agent",[198,4037,4038],{},[227,4039,384],{},[386,4041,4043],{"className":388,"code":4042,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:22:00.456Z\",\n  \"level\": \"error\",\n  \"event\": \"session_hijack_suspected\",\n  \"correlation_id\": \"b4c5d6e7-f8a9-0123-456b-234567890123\",\n  \"service\": \"outlabs_auth\",\n  \"user_id\": \"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47\",\n  \"email\": \"john@example.com\",\n  \"reason\": \"ip_changed\",\n  \"original_ip\": \"192.168.1.1\",\n  \"new_ip\": \"203.0.113.99\"\n}\n",[209,4044,4045,4049,4068,4086,4104,4123,4141,4159,4177,4195,4213,4230],{"__ignoreMap":391},[395,4046,4047],{"class":397,"line":398},[395,4048,402],{"class":401},[395,4050,4051,4053,4055,4057,4059,4061,4064,4066],{"class":397,"line":405},[395,4052,408],{"class":401},[395,4054,238],{"class":411},[395,4056,414],{"class":401},[395,4058,417],{"class":401},[395,4060,420],{"class":401},[395,4062,4063],{"class":423},"2025-01-24T10:22:00.456Z",[395,4065,414],{"class":401},[395,4067,287],{"class":401},[395,4069,4070,4072,4074,4076,4078,4080,4082,4084],{"class":397,"line":431},[395,4071,408],{"class":401},[395,4073,244],{"class":411},[395,4075,414],{"class":401},[395,4077,417],{"class":401},[395,4079,420],{"class":401},[395,4081,3773],{"class":423},[395,4083,414],{"class":401},[395,4085,287],{"class":401},[395,4087,4088,4090,4092,4094,4096,4098,4100,4102],{"class":397,"line":451},[395,4089,408],{"class":401},[395,4091,211],{"class":411},[395,4093,414],{"class":401},[395,4095,417],{"class":401},[395,4097,420],{"class":401},[395,4099,3961],{"class":423},[395,4101,414],{"class":401},[395,4103,287],{"class":401},[395,4105,4106,4108,4110,4112,4114,4116,4119,4121],{"class":397,"line":470},[395,4107,408],{"class":401},[395,4109,259],{"class":411},[395,4111,414],{"class":401},[395,4113,417],{"class":401},[395,4115,420],{"class":401},[395,4117,4118],{"class":423},"b4c5d6e7-f8a9-0123-456b-234567890123",[395,4120,414],{"class":401},[395,4122,287],{"class":401},[395,4124,4125,4127,4129,4131,4133,4135,4137,4139],{"class":397,"line":490},[395,4126,408],{"class":401},[395,4128,265],{"class":411},[395,4130,414],{"class":401},[395,4132,417],{"class":401},[395,4134,420],{"class":401},[395,4136,269],{"class":423},[395,4138,414],{"class":401},[395,4140,287],{"class":401},[395,4142,4143,4145,4147,4149,4151,4153,4155,4157],{"class":397,"line":509},[395,4144,408],{"class":401},[395,4146,278],{"class":411},[395,4148,414],{"class":401},[395,4150,417],{"class":401},[395,4152,420],{"class":401},[395,4154,522],{"class":423},[395,4156,414],{"class":401},[395,4158,287],{"class":401},[395,4160,4161,4163,4165,4167,4169,4171,4173,4175],{"class":397,"line":529},[395,4162,408],{"class":401},[395,4164,282],{"class":411},[395,4166,414],{"class":401},[395,4168,417],{"class":401},[395,4170,420],{"class":401},[395,4172,542],{"class":423},[395,4174,414],{"class":401},[395,4176,287],{"class":401},[395,4178,4179,4181,4183,4185,4187,4189,4191,4193],{"class":397,"line":549},[395,4180,408],{"class":401},[395,4182,747],{"class":411},[395,4184,414],{"class":401},[395,4186,417],{"class":401},[395,4188,420],{"class":401},[395,4190,3998],{"class":423},[395,4192,414],{"class":401},[395,4194,287],{"class":401},[395,4196,4197,4199,4201,4203,4205,4207,4209,4211],{"class":397,"line":568},[395,4198,408],{"class":401},[395,4200,4016],{"class":411},[395,4202,414],{"class":401},[395,4204,417],{"class":401},[395,4206,420],{"class":401},[395,4208,598],{"class":423},[395,4210,414],{"class":401},[395,4212,287],{"class":401},[395,4214,4215,4217,4219,4221,4223,4225,4228],{"class":397,"line":585},[395,4216,408],{"class":401},[395,4218,4022],{"class":411},[395,4220,414],{"class":401},[395,4222,417],{"class":401},[395,4224,420],{"class":401},[395,4226,4227],{"class":423},"203.0.113.99",[395,4229,621],{"class":401},[395,4231,4232],{"class":397,"line":605},[395,4233,627],{"class":401},[295,4235],{},[217,4237,4239],{"id":4238},"performance-events","Performance Events",[302,4241,4242],{"id":4242},"cache_invalidated",[198,4244,4245,2058,4247,4249,4250,4252],{},[227,4246,308],{},[227,4248,312],{}," Cache entry invalidated (Redis pub\u002Fsub)\n",[227,4251,316],{}," Per cache invalidation",[198,4254,4255],{},[227,4256,322],{},[231,4258,4259,4276,4282],{},[234,4260,4261,4264,4265,279,4267,279,4270,279,4273],{},[209,4262,4263],{},"cache_type"," (string) - Type: ",[209,4266,2086],{},[209,4268,4269],{},"role",[209,4271,4272],{},"user",[209,4274,4275],{},"entity",[234,4277,4278,4281],{},[209,4279,4280],{},"cache_key"," (string) - Invalidated key",[234,4283,4284,4286,4287],{},[209,4285,747],{}," (string) - Invalidation reason:\n",[231,4288,4289,4295,4301,4307],{},[234,4290,4291,4294],{},[209,4292,4293],{},"update"," - Data was updated",[234,4296,4297,4300],{},[209,4298,4299],{},"delete"," - Data was deleted",[234,4302,4303,4306],{},[209,4304,4305],{},"ttl_expired"," - TTL expired",[234,4308,4309,4312],{},[209,4310,4311],{},"manual_flush"," - Manually flushed",[198,4314,4315],{},[227,4316,384],{},[386,4318,4320],{"className":388,"code":4319,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:23:00.789Z\",\n  \"level\": \"debug\",\n  \"event\": \"cache_invalidated\",\n  \"correlation_id\": \"c5d6e7f8-a9b0-1234-567c-345678901234\",\n  \"service\": \"outlabs_auth\",\n  \"cache_type\": \"permission\",\n  \"cache_key\": \"perm:3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47:user:read\",\n  \"reason\": \"update\"\n}\n",[209,4321,4322,4326,4345,4363,4381,4400,4418,4436,4455,4471],{"__ignoreMap":391},[395,4323,4324],{"class":397,"line":398},[395,4325,402],{"class":401},[395,4327,4328,4330,4332,4334,4336,4338,4341,4343],{"class":397,"line":405},[395,4329,408],{"class":401},[395,4331,238],{"class":411},[395,4333,414],{"class":401},[395,4335,417],{"class":401},[395,4337,420],{"class":401},[395,4339,4340],{"class":423},"2025-01-24T10:23:00.789Z",[395,4342,414],{"class":401},[395,4344,287],{"class":401},[395,4346,4347,4349,4351,4353,4355,4357,4359,4361],{"class":397,"line":431},[395,4348,408],{"class":401},[395,4350,244],{"class":411},[395,4352,414],{"class":401},[395,4354,417],{"class":401},[395,4356,420],{"class":401},[395,4358,2154],{"class":423},[395,4360,414],{"class":401},[395,4362,287],{"class":401},[395,4364,4365,4367,4369,4371,4373,4375,4377,4379],{"class":397,"line":451},[395,4366,408],{"class":401},[395,4368,211],{"class":411},[395,4370,414],{"class":401},[395,4372,417],{"class":401},[395,4374,420],{"class":401},[395,4376,4242],{"class":423},[395,4378,414],{"class":401},[395,4380,287],{"class":401},[395,4382,4383,4385,4387,4389,4391,4393,4396,4398],{"class":397,"line":470},[395,4384,408],{"class":401},[395,4386,259],{"class":411},[395,4388,414],{"class":401},[395,4390,417],{"class":401},[395,4392,420],{"class":401},[395,4394,4395],{"class":423},"c5d6e7f8-a9b0-1234-567c-345678901234",[395,4397,414],{"class":401},[395,4399,287],{"class":401},[395,4401,4402,4404,4406,4408,4410,4412,4414,4416],{"class":397,"line":490},[395,4403,408],{"class":401},[395,4405,265],{"class":411},[395,4407,414],{"class":401},[395,4409,417],{"class":401},[395,4411,420],{"class":401},[395,4413,269],{"class":423},[395,4415,414],{"class":401},[395,4417,287],{"class":401},[395,4419,4420,4422,4424,4426,4428,4430,4432,4434],{"class":397,"line":509},[395,4421,408],{"class":401},[395,4423,4263],{"class":411},[395,4425,414],{"class":401},[395,4427,417],{"class":401},[395,4429,420],{"class":401},[395,4431,2086],{"class":423},[395,4433,414],{"class":401},[395,4435,287],{"class":401},[395,4437,4438,4440,4442,4444,4446,4448,4451,4453],{"class":397,"line":529},[395,4439,408],{"class":401},[395,4441,4280],{"class":411},[395,4443,414],{"class":401},[395,4445,417],{"class":401},[395,4447,420],{"class":401},[395,4449,4450],{"class":423},"perm:3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47:user:read",[395,4452,414],{"class":401},[395,4454,287],{"class":401},[395,4456,4457,4459,4461,4463,4465,4467,4469],{"class":397,"line":549},[395,4458,408],{"class":401},[395,4460,747],{"class":411},[395,4462,414],{"class":401},[395,4464,417],{"class":401},[395,4466,420],{"class":401},[395,4468,4293],{"class":423},[395,4470,621],{"class":401},[395,4472,4473],{"class":397,"line":568},[395,4474,627],{"class":401},[295,4476],{},[302,4478,4479],{"id":4479},"db_query",[198,4481,4482,2058,4484,4486,4487,4490,4492],{},[227,4483,308],{},[227,4485,312],{}," Every SQL statement executed, when ",[209,4488,4489],{},"log_db_queries=True",[227,4491,316],{}," Very high - enabled only in development\u002Fdebug presets",[198,4494,4495,4496,4499],{},"Emitted by the SQLAlchemy cursor-event instrumentation\n(",[209,4497,4498],{},"ObservabilityService.instrument_sqlalchemy_engine","), which times each\nstatement at the DBAPI level.",[198,4501,4502],{},[227,4503,322],{},[231,4505,4506,4526,4531,4545],{},[234,4507,4508,4511,4512,279,4515,279,4518,279,4520,279,4522,4525],{},[209,4509,4510],{},"operation"," (string) - First word of the SQL statement, lowercased: ",[209,4513,4514],{},"select",[209,4516,4517],{},"insert",[209,4519,4293],{},[209,4521,4299],{},[209,4523,4524],{},"begin",", ...",[234,4527,4528,4530],{},[209,4529,293],{}," (float) - Statement duration",[234,4532,4533,4536,4537,4540,4541,4544],{},[209,4534,4535],{},"collection"," (string or null) - Always ",[209,4538,4539],{},"null"," from engine instrumentation; accepted by ",[209,4542,4543],{},"log_db_query()"," for callers that pass a table name",[234,4546,4547,4550],{},[209,4548,4549],{},"executemany"," (bool) - Whether the statement ran as a batch execute",[198,4552,4553,4554,4557],{},"Query parameters are ",[227,4555,4556],{},"never"," logged - they may contain secrets or PII.",[198,4559,4560],{},[227,4561,384],{},[386,4563,4565],{"className":388,"code":4564,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:24:00.123Z\",\n  \"level\": \"debug\",\n  \"event\": \"db_query\",\n  \"correlation_id\": \"d6e7f8a9-b0c1-2345-678d-456789012345\",\n  \"service\": \"outlabs_auth\",\n  \"operation\": \"select\",\n  \"duration_ms\": 156.3,\n  \"collection\": null,\n  \"executemany\": false\n}\n",[209,4566,4567,4571,4590,4608,4626,4645,4663,4681,4696,4709,4722],{"__ignoreMap":391},[395,4568,4569],{"class":397,"line":398},[395,4570,402],{"class":401},[395,4572,4573,4575,4577,4579,4581,4583,4586,4588],{"class":397,"line":405},[395,4574,408],{"class":401},[395,4576,238],{"class":411},[395,4578,414],{"class":401},[395,4580,417],{"class":401},[395,4582,420],{"class":401},[395,4584,4585],{"class":423},"2025-01-24T10:24:00.123Z",[395,4587,414],{"class":401},[395,4589,287],{"class":401},[395,4591,4592,4594,4596,4598,4600,4602,4604,4606],{"class":397,"line":431},[395,4593,408],{"class":401},[395,4595,244],{"class":411},[395,4597,414],{"class":401},[395,4599,417],{"class":401},[395,4601,420],{"class":401},[395,4603,2154],{"class":423},[395,4605,414],{"class":401},[395,4607,287],{"class":401},[395,4609,4610,4612,4614,4616,4618,4620,4622,4624],{"class":397,"line":451},[395,4611,408],{"class":401},[395,4613,211],{"class":411},[395,4615,414],{"class":401},[395,4617,417],{"class":401},[395,4619,420],{"class":401},[395,4621,4479],{"class":423},[395,4623,414],{"class":401},[395,4625,287],{"class":401},[395,4627,4628,4630,4632,4634,4636,4638,4641,4643],{"class":397,"line":470},[395,4629,408],{"class":401},[395,4631,259],{"class":411},[395,4633,414],{"class":401},[395,4635,417],{"class":401},[395,4637,420],{"class":401},[395,4639,4640],{"class":423},"d6e7f8a9-b0c1-2345-678d-456789012345",[395,4642,414],{"class":401},[395,4644,287],{"class":401},[395,4646,4647,4649,4651,4653,4655,4657,4659,4661],{"class":397,"line":490},[395,4648,408],{"class":401},[395,4650,265],{"class":411},[395,4652,414],{"class":401},[395,4654,417],{"class":401},[395,4656,420],{"class":401},[395,4658,269],{"class":423},[395,4660,414],{"class":401},[395,4662,287],{"class":401},[395,4664,4665,4667,4669,4671,4673,4675,4677,4679],{"class":397,"line":509},[395,4666,408],{"class":401},[395,4668,4510],{"class":411},[395,4670,414],{"class":401},[395,4672,417],{"class":401},[395,4674,420],{"class":401},[395,4676,4514],{"class":423},[395,4678,414],{"class":401},[395,4680,287],{"class":401},[395,4682,4683,4685,4687,4689,4691,4694],{"class":397,"line":529},[395,4684,408],{"class":401},[395,4686,293],{"class":411},[395,4688,414],{"class":401},[395,4690,417],{"class":401},[395,4692,4693],{"class":579}," 156.3",[395,4695,287],{"class":401},[395,4697,4698,4700,4702,4704,4706],{"class":397,"line":549},[395,4699,408],{"class":401},[395,4701,4535],{"class":411},[395,4703,414],{"class":401},[395,4705,417],{"class":401},[395,4707,4708],{"class":401}," null,\n",[395,4710,4711,4713,4715,4717,4719],{"class":397,"line":568},[395,4712,408],{"class":401},[395,4714,4549],{"class":411},[395,4716,414],{"class":401},[395,4718,417],{"class":401},[395,4720,4721],{"class":401}," false\n",[395,4723,4724],{"class":397,"line":585},[395,4725,627],{"class":401},[198,4727,4728,4729,4732,4733,204],{},"Also observed into the ",[209,4730,4731],{},"outlabs_auth_db_query_duration_seconds"," histogram,\nlabelled by ",[209,4734,4510],{},[295,4736],{},[217,4738,4740],{"id":4739},"error-events","Error Events",[302,4742,4743],{"id":4743},"authentication_error",[198,4745,4746,3966,4748,4750,4751,3972],{},[227,4747,308],{},[227,4749,312],{}," Unexpected error during authentication\n",[227,4752,316],{},[198,4754,4755],{},[227,4756,322],{},[231,4758,4759,4765,4771,4777,4782],{},[234,4760,4761,4764],{},[209,4762,4763],{},"error_type"," (string) - Error class name",[234,4766,4767,4770],{},[209,4768,4769],{},"error_message"," (string) - Error message",[234,4772,4773,4776],{},[209,4774,4775],{},"stack_trace"," (string, optional) - Stack trace (if enabled)",[234,4778,4779,4781],{},[209,4780,278],{}," (string, optional) - User ID if available",[234,4783,4784,4786],{},[209,4785,339],{}," (string, optional) - Auth method being attempted",[198,4788,4789],{},[227,4790,384],{},[386,4792,4794],{"className":388,"code":4793,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:25:00.456Z\",\n  \"level\": \"error\",\n  \"event\": \"authentication_error\",\n  \"correlation_id\": \"e7f8a9b0-c1d2-3456-789e-567890123456\",\n  \"service\": \"outlabs_auth\",\n  \"error_type\": \"DatabaseConnectionError\",\n  \"error_message\": \"Unable to connect to PostgreSQL\",\n  \"method\": \"password\"\n}\n",[209,4795,4796,4800,4819,4837,4855,4874,4892,4911,4930,4946],{"__ignoreMap":391},[395,4797,4798],{"class":397,"line":398},[395,4799,402],{"class":401},[395,4801,4802,4804,4806,4808,4810,4812,4815,4817],{"class":397,"line":405},[395,4803,408],{"class":401},[395,4805,238],{"class":411},[395,4807,414],{"class":401},[395,4809,417],{"class":401},[395,4811,420],{"class":401},[395,4813,4814],{"class":423},"2025-01-24T10:25:00.456Z",[395,4816,414],{"class":401},[395,4818,287],{"class":401},[395,4820,4821,4823,4825,4827,4829,4831,4833,4835],{"class":397,"line":431},[395,4822,408],{"class":401},[395,4824,244],{"class":411},[395,4826,414],{"class":401},[395,4828,417],{"class":401},[395,4830,420],{"class":401},[395,4832,3773],{"class":423},[395,4834,414],{"class":401},[395,4836,287],{"class":401},[395,4838,4839,4841,4843,4845,4847,4849,4851,4853],{"class":397,"line":451},[395,4840,408],{"class":401},[395,4842,211],{"class":411},[395,4844,414],{"class":401},[395,4846,417],{"class":401},[395,4848,420],{"class":401},[395,4850,4743],{"class":423},[395,4852,414],{"class":401},[395,4854,287],{"class":401},[395,4856,4857,4859,4861,4863,4865,4867,4870,4872],{"class":397,"line":470},[395,4858,408],{"class":401},[395,4860,259],{"class":411},[395,4862,414],{"class":401},[395,4864,417],{"class":401},[395,4866,420],{"class":401},[395,4868,4869],{"class":423},"e7f8a9b0-c1d2-3456-789e-567890123456",[395,4871,414],{"class":401},[395,4873,287],{"class":401},[395,4875,4876,4878,4880,4882,4884,4886,4888,4890],{"class":397,"line":490},[395,4877,408],{"class":401},[395,4879,265],{"class":411},[395,4881,414],{"class":401},[395,4883,417],{"class":401},[395,4885,420],{"class":401},[395,4887,269],{"class":423},[395,4889,414],{"class":401},[395,4891,287],{"class":401},[395,4893,4894,4896,4898,4900,4902,4904,4907,4909],{"class":397,"line":509},[395,4895,408],{"class":401},[395,4897,4763],{"class":411},[395,4899,414],{"class":401},[395,4901,417],{"class":401},[395,4903,420],{"class":401},[395,4905,4906],{"class":423},"DatabaseConnectionError",[395,4908,414],{"class":401},[395,4910,287],{"class":401},[395,4912,4913,4915,4917,4919,4921,4923,4926,4928],{"class":397,"line":529},[395,4914,408],{"class":401},[395,4916,4769],{"class":411},[395,4918,414],{"class":401},[395,4920,417],{"class":401},[395,4922,420],{"class":401},[395,4924,4925],{"class":423},"Unable to connect to PostgreSQL",[395,4927,414],{"class":401},[395,4929,287],{"class":401},[395,4931,4932,4934,4936,4938,4940,4942,4944],{"class":397,"line":549},[395,4933,408],{"class":401},[395,4935,339],{"class":411},[395,4937,414],{"class":401},[395,4939,417],{"class":401},[395,4941,420],{"class":401},[395,4943,343],{"class":423},[395,4945,621],{"class":401},[395,4947,4948],{"class":397,"line":568},[395,4949,627],{"class":401},[295,4951],{},[302,4953,4954],{"id":4954},"authorization_error",[198,4956,4957,3966,4959,4961,4962,3972],{},[227,4958,308],{},[227,4960,312],{}," Unexpected error during permission check\n",[227,4963,316],{},[198,4965,4966],{},[227,4967,322],{},[231,4969,4970,4974,4978,4983],{},[234,4971,4972,4764],{},[209,4973,4763],{},[234,4975,4976,4770],{},[209,4977,4769],{},[234,4979,4980,4982],{},[209,4981,278],{}," (string, optional) - User ID",[234,4984,4985,4987],{},[209,4986,2086],{}," (string, optional) - Permission being checked",[198,4989,4990],{},[227,4991,384],{},[386,4993,4995],{"className":388,"code":4994,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-24T10:26:00.789Z\",\n  \"level\": \"error\",\n  \"event\": \"authorization_error\",\n  \"correlation_id\": \"f8a9b0c1-d2e3-4567-890f-678901234567\",\n  \"service\": \"outlabs_auth\",\n  \"error_type\": \"ABACEvaluationError\",\n  \"error_message\": \"Failed to evaluate ABAC condition\",\n  \"user_id\": \"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47\",\n  \"permission\": \"lead:read\"\n}\n",[209,4996,4997,5001,5020,5038,5056,5075,5093,5112,5131,5149,5166],{"__ignoreMap":391},[395,4998,4999],{"class":397,"line":398},[395,5000,402],{"class":401},[395,5002,5003,5005,5007,5009,5011,5013,5016,5018],{"class":397,"line":405},[395,5004,408],{"class":401},[395,5006,238],{"class":411},[395,5008,414],{"class":401},[395,5010,417],{"class":401},[395,5012,420],{"class":401},[395,5014,5015],{"class":423},"2025-01-24T10:26:00.789Z",[395,5017,414],{"class":401},[395,5019,287],{"class":401},[395,5021,5022,5024,5026,5028,5030,5032,5034,5036],{"class":397,"line":431},[395,5023,408],{"class":401},[395,5025,244],{"class":411},[395,5027,414],{"class":401},[395,5029,417],{"class":401},[395,5031,420],{"class":401},[395,5033,3773],{"class":423},[395,5035,414],{"class":401},[395,5037,287],{"class":401},[395,5039,5040,5042,5044,5046,5048,5050,5052,5054],{"class":397,"line":451},[395,5041,408],{"class":401},[395,5043,211],{"class":411},[395,5045,414],{"class":401},[395,5047,417],{"class":401},[395,5049,420],{"class":401},[395,5051,4954],{"class":423},[395,5053,414],{"class":401},[395,5055,287],{"class":401},[395,5057,5058,5060,5062,5064,5066,5068,5071,5073],{"class":397,"line":470},[395,5059,408],{"class":401},[395,5061,259],{"class":411},[395,5063,414],{"class":401},[395,5065,417],{"class":401},[395,5067,420],{"class":401},[395,5069,5070],{"class":423},"f8a9b0c1-d2e3-4567-890f-678901234567",[395,5072,414],{"class":401},[395,5074,287],{"class":401},[395,5076,5077,5079,5081,5083,5085,5087,5089,5091],{"class":397,"line":490},[395,5078,408],{"class":401},[395,5080,265],{"class":411},[395,5082,414],{"class":401},[395,5084,417],{"class":401},[395,5086,420],{"class":401},[395,5088,269],{"class":423},[395,5090,414],{"class":401},[395,5092,287],{"class":401},[395,5094,5095,5097,5099,5101,5103,5105,5108,5110],{"class":397,"line":509},[395,5096,408],{"class":401},[395,5098,4763],{"class":411},[395,5100,414],{"class":401},[395,5102,417],{"class":401},[395,5104,420],{"class":401},[395,5106,5107],{"class":423},"ABACEvaluationError",[395,5109,414],{"class":401},[395,5111,287],{"class":401},[395,5113,5114,5116,5118,5120,5122,5124,5127,5129],{"class":397,"line":529},[395,5115,408],{"class":401},[395,5117,4769],{"class":411},[395,5119,414],{"class":401},[395,5121,417],{"class":401},[395,5123,420],{"class":401},[395,5125,5126],{"class":423},"Failed to evaluate ABAC condition",[395,5128,414],{"class":401},[395,5130,287],{"class":401},[395,5132,5133,5135,5137,5139,5141,5143,5145,5147],{"class":397,"line":549},[395,5134,408],{"class":401},[395,5136,278],{"class":411},[395,5138,414],{"class":401},[395,5140,417],{"class":401},[395,5142,420],{"class":401},[395,5144,522],{"class":423},[395,5146,414],{"class":401},[395,5148,287],{"class":401},[395,5150,5151,5153,5155,5157,5159,5161,5164],{"class":397,"line":568},[395,5152,408],{"class":401},[395,5154,2086],{"class":411},[395,5156,414],{"class":401},[395,5158,417],{"class":401},[395,5160,420],{"class":401},[395,5162,5163],{"class":423},"lead:read",[395,5165,621],{"class":401},[395,5167,5168],{"class":397,"line":585},[395,5169,627],{"class":401},[295,5171],{},[302,5173,5174],{"id":5174},"http_500_internal_server_error",[198,5176,5177,3966,5179,5181,5182,5184],{},[227,5178,308],{},[227,5180,312],{}," HTTP 500 Internal Server Error occurs\n",[227,5183,316],{}," Should be very rare in production",[198,5186,5187,5190,5191,417],{},[227,5188,5189],{},"How it's logged:","\nAutomatically logged when using ",[209,5192,5193],{},"ObservabilityContext.log_500_error()",[386,5195,5199],{"className":5196,"code":5197,"language":5198,"meta":391,"style":391},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","try:\n    user = await auth.user_service.create_user(data)\nexcept Exception as e:\n    obs.log_500_error(e, email=data.email)  # Logs this event\n    raise HTTPException(500, detail=\"Failed to create user\")\n","python",[209,5200,5201,5206,5211,5216,5221],{"__ignoreMap":391},[395,5202,5203],{"class":397,"line":398},[395,5204,5205],{},"try:\n",[395,5207,5208],{"class":397,"line":405},[395,5209,5210],{},"    user = await auth.user_service.create_user(data)\n",[395,5212,5213],{"class":397,"line":431},[395,5214,5215],{},"except Exception as e:\n",[395,5217,5218],{"class":397,"line":451},[395,5219,5220],{},"    obs.log_500_error(e, email=data.email)  # Logs this event\n",[395,5222,5223],{"class":397,"line":470},[395,5224,5225],{},"    raise HTTPException(500, detail=\"Failed to create user\")\n",[198,5227,5228],{},[227,5229,322],{},[231,5231,5232,5238,5244,5248,5253,5258,5264,5269],{},[234,5233,5234,5237],{},[209,5235,5236],{},"endpoint"," (string) - API endpoint that failed (e.g., \"\u002Fv1\u002Fusers\u002F\")",[234,5239,5240,5243],{},[209,5241,5242],{},"error_class"," (string) - Exception class name (e.g., \"UserAlreadyExistsError\")",[234,5245,5246,4770],{},[209,5247,4769],{},[234,5249,5250,5252],{},[209,5251,339],{}," (string, optional) - HTTP method (GET, POST, etc.)",[234,5254,5255,5257],{},[209,5256,278],{}," (string, optional) - User ID if authenticated",[234,5259,5260,5263],{},[209,5261,5262],{},"request_id"," (string, optional) - Request\u002Fcorrelation ID",[234,5265,5266,5268],{},[209,5267,4775],{}," (string, optional) - Full stack trace (if enabled in config)",[234,5270,5271,5272],{},"Plus any extra fields you provide to ",[209,5273,5274],{},"log_500_error(**extra)",[198,5276,5277],{},[227,5278,384],{},[386,5280,5282],{"className":388,"code":5281,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-26T10:15:23.456Z\",\n  \"level\": \"error\",\n  \"event\": \"http_500_internal_server_error\",\n  \"correlation_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n  \"service\": \"outlabs_auth\",\n  \"endpoint\": \"\u002Fv1\u002Fusers\",\n  \"error_class\": \"DatabaseConnectionError\",\n  \"error_message\": \"Unable to connect to PostgreSQL\",\n  \"method\": \"GET\",\n  \"user_id\": \"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47\",\n  \"request_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n  \"stack_trace\": \"Traceback (most recent call last):\\n  File...\"\n}\n",[209,5283,5284,5288,5307,5325,5343,5361,5379,5398,5416,5434,5453,5471,5489,5513],{"__ignoreMap":391},[395,5285,5286],{"class":397,"line":398},[395,5287,402],{"class":401},[395,5289,5290,5292,5294,5296,5298,5300,5303,5305],{"class":397,"line":405},[395,5291,408],{"class":401},[395,5293,238],{"class":411},[395,5295,414],{"class":401},[395,5297,417],{"class":401},[395,5299,420],{"class":401},[395,5301,5302],{"class":423},"2025-01-26T10:15:23.456Z",[395,5304,414],{"class":401},[395,5306,287],{"class":401},[395,5308,5309,5311,5313,5315,5317,5319,5321,5323],{"class":397,"line":431},[395,5310,408],{"class":401},[395,5312,244],{"class":411},[395,5314,414],{"class":401},[395,5316,417],{"class":401},[395,5318,420],{"class":401},[395,5320,3773],{"class":423},[395,5322,414],{"class":401},[395,5324,287],{"class":401},[395,5326,5327,5329,5331,5333,5335,5337,5339,5341],{"class":397,"line":451},[395,5328,408],{"class":401},[395,5330,211],{"class":411},[395,5332,414],{"class":401},[395,5334,417],{"class":401},[395,5336,420],{"class":401},[395,5338,5174],{"class":423},[395,5340,414],{"class":401},[395,5342,287],{"class":401},[395,5344,5345,5347,5349,5351,5353,5355,5357,5359],{"class":397,"line":470},[395,5346,408],{"class":401},[395,5348,259],{"class":411},[395,5350,414],{"class":401},[395,5352,417],{"class":401},[395,5354,420],{"class":401},[395,5356,483],{"class":423},[395,5358,414],{"class":401},[395,5360,287],{"class":401},[395,5362,5363,5365,5367,5369,5371,5373,5375,5377],{"class":397,"line":490},[395,5364,408],{"class":401},[395,5366,265],{"class":411},[395,5368,414],{"class":401},[395,5370,417],{"class":401},[395,5372,420],{"class":401},[395,5374,269],{"class":423},[395,5376,414],{"class":401},[395,5378,287],{"class":401},[395,5380,5381,5383,5385,5387,5389,5391,5394,5396],{"class":397,"line":509},[395,5382,408],{"class":401},[395,5384,5236],{"class":411},[395,5386,414],{"class":401},[395,5388,417],{"class":401},[395,5390,420],{"class":401},[395,5392,5393],{"class":423},"\u002Fv1\u002Fusers",[395,5395,414],{"class":401},[395,5397,287],{"class":401},[395,5399,5400,5402,5404,5406,5408,5410,5412,5414],{"class":397,"line":529},[395,5401,408],{"class":401},[395,5403,5242],{"class":411},[395,5405,414],{"class":401},[395,5407,417],{"class":401},[395,5409,420],{"class":401},[395,5411,4906],{"class":423},[395,5413,414],{"class":401},[395,5415,287],{"class":401},[395,5417,5418,5420,5422,5424,5426,5428,5430,5432],{"class":397,"line":549},[395,5419,408],{"class":401},[395,5421,4769],{"class":411},[395,5423,414],{"class":401},[395,5425,417],{"class":401},[395,5427,420],{"class":401},[395,5429,4925],{"class":423},[395,5431,414],{"class":401},[395,5433,287],{"class":401},[395,5435,5436,5438,5440,5442,5444,5446,5449,5451],{"class":397,"line":568},[395,5437,408],{"class":401},[395,5439,339],{"class":411},[395,5441,414],{"class":401},[395,5443,417],{"class":401},[395,5445,420],{"class":401},[395,5447,5448],{"class":423},"GET",[395,5450,414],{"class":401},[395,5452,287],{"class":401},[395,5454,5455,5457,5459,5461,5463,5465,5467,5469],{"class":397,"line":585},[395,5456,408],{"class":401},[395,5458,278],{"class":411},[395,5460,414],{"class":401},[395,5462,417],{"class":401},[395,5464,420],{"class":401},[395,5466,522],{"class":423},[395,5468,414],{"class":401},[395,5470,287],{"class":401},[395,5472,5473,5475,5477,5479,5481,5483,5485,5487],{"class":397,"line":605},[395,5474,408],{"class":401},[395,5476,5262],{"class":411},[395,5478,414],{"class":401},[395,5480,417],{"class":401},[395,5482,420],{"class":401},[395,5484,483],{"class":423},[395,5486,414],{"class":401},[395,5488,287],{"class":401},[395,5490,5491,5493,5495,5497,5499,5501,5504,5508,5511],{"class":397,"line":624},[395,5492,408],{"class":401},[395,5494,4775],{"class":411},[395,5496,414],{"class":401},[395,5498,417],{"class":401},[395,5500,420],{"class":401},[395,5502,5503],{"class":423},"Traceback (most recent call last):",[395,5505,5507],{"class":5506},"sTEyZ","\\n",[395,5509,5510],{"class":423},"  File...",[395,5512,621],{"class":401},[395,5514,5515],{"class":397,"line":3948},[395,5516,627],{"class":401},[198,5518,5519],{},[227,5520,632],{},[386,5522,5524],{"className":635,"code":5523,"filename":637,"language":638,"meta":391,"style":391},"# Find all 500 errors\njq 'select(.event == \"http_500_internal_server_error\")' app.log\n\n# 500 errors by endpoint\njq 'select(.event == \"http_500_internal_server_error\") | .endpoint' app.log | sort | uniq -c\n\n# 500 errors by error type\njq 'select(.event == \"http_500_internal_server_error\") | .error_class' app.log | sort | uniq -c\n\n# Recent 500 errors with stack traces\njq 'select(.event == \"http_500_internal_server_error\") | {timestamp, endpoint, error_class, stack_trace}' app.log | tail -10\n",[209,5525,5526,5531,5544,5548,5553,5576,5580,5585,5608,5612,5617],{"__ignoreMap":391},[395,5527,5528],{"class":397,"line":398},[395,5529,5530],{"class":645},"# Find all 500 errors\n",[395,5532,5533,5535,5537,5540,5542],{"class":397,"line":405},[395,5534,652],{"class":651},[395,5536,655],{"class":401},[395,5538,5539],{"class":423},"select(.event == \"http_500_internal_server_error\")",[395,5541,661],{"class":401},[395,5543,664],{"class":423},[395,5545,5546],{"class":397,"line":431},[395,5547,670],{"emptyLinePlaceholder":669},[395,5549,5550],{"class":397,"line":451},[395,5551,5552],{"class":645},"# 500 errors by endpoint\n",[395,5554,5555,5557,5559,5562,5564,5566,5568,5570,5572,5574],{"class":397,"line":470},[395,5556,652],{"class":651},[395,5558,655],{"class":401},[395,5560,5561],{"class":423},"select(.event == \"http_500_internal_server_error\") | .endpoint",[395,5563,661],{"class":401},[395,5565,1072],{"class":423},[395,5567,1075],{"class":401},[395,5569,1078],{"class":651},[395,5571,1075],{"class":401},[395,5573,1083],{"class":651},[395,5575,2044],{"class":423},[395,5577,5578],{"class":397,"line":490},[395,5579,670],{"emptyLinePlaceholder":669},[395,5581,5582],{"class":397,"line":509},[395,5583,5584],{"class":645},"# 500 errors by error type\n",[395,5586,5587,5589,5591,5594,5596,5598,5600,5602,5604,5606],{"class":397,"line":529},[395,5588,652],{"class":651},[395,5590,655],{"class":401},[395,5592,5593],{"class":423},"select(.event == \"http_500_internal_server_error\") | .error_class",[395,5595,661],{"class":401},[395,5597,1072],{"class":423},[395,5599,1075],{"class":401},[395,5601,1078],{"class":651},[395,5603,1075],{"class":401},[395,5605,1083],{"class":651},[395,5607,2044],{"class":423},[395,5609,5610],{"class":397,"line":549},[395,5611,670],{"emptyLinePlaceholder":669},[395,5613,5614],{"class":397,"line":568},[395,5615,5616],{"class":645},"# Recent 500 errors with stack traces\n",[395,5618,5619,5621,5623,5626,5628,5630,5632,5635],{"class":397,"line":585},[395,5620,652],{"class":651},[395,5622,655],{"class":401},[395,5624,5625],{"class":423},"select(.event == \"http_500_internal_server_error\") | {timestamp, endpoint, error_class, stack_trace}",[395,5627,661],{"class":401},[395,5629,1072],{"class":423},[395,5631,1075],{"class":401},[395,5633,5634],{"class":651}," tail",[395,5636,5637],{"class":423}," -10\n",[295,5639],{},[302,5641,5642],{"id":5642},"router_error",[198,5644,5645,3966,5647,5649,5650,3661],{},[227,5646,308],{},[227,5648,312],{}," Error occurs in a FastAPI router\u002Froute handler\n",[227,5651,316],{},[198,5653,5654],{},[227,5655,322],{},[231,5657,5658,5664,5669,5674,5679,5683,5687],{},[234,5659,5660,5663],{},[209,5661,5662],{},"router"," (string) - Router name (e.g., \"users\", \"roles\", \"auth\")",[234,5665,5666,5668],{},[209,5667,5236],{}," (string) - Full endpoint path (e.g., \"\u002Fv1\u002Fusers\u002F{user_id}\")",[234,5670,5671,5673],{},[209,5672,4510],{}," (string) - Operation being performed (e.g., \"list_users\", \"create_role\")",[234,5675,5676,5678],{},[209,5677,4763],{}," (string) - Exception class name",[234,5680,5681,4770],{},[209,5682,4769],{},[234,5684,5685,4781],{},[209,5686,278],{},[234,5688,5689,5691],{},[209,5690,4775],{}," (string, optional) - Stack trace",[198,5693,5694],{},[227,5695,384],{},[386,5697,5699],{"className":388,"code":5698,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-26T10:20:00.789Z\",\n  \"level\": \"error\",\n  \"event\": \"router_error\",\n  \"correlation_id\": \"b2c3d4e5-f6a7-8901-bcde-f23456789abc\",\n  \"service\": \"outlabs_auth\",\n  \"router\": \"users\",\n  \"endpoint\": \"\u002Fv1\u002Fusers\",\n  \"operation\": \"list_users\",\n  \"error_type\": \"OperationalError\",\n  \"error_message\": \"Connection timeout\",\n  \"user_id\": \"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47\",\n  \"stack_trace\": \"Traceback...\"\n}\n",[209,5700,5701,5705,5724,5742,5760,5778,5796,5815,5833,5852,5871,5890,5908,5925],{"__ignoreMap":391},[395,5702,5703],{"class":397,"line":398},[395,5704,402],{"class":401},[395,5706,5707,5709,5711,5713,5715,5717,5720,5722],{"class":397,"line":405},[395,5708,408],{"class":401},[395,5710,238],{"class":411},[395,5712,414],{"class":401},[395,5714,417],{"class":401},[395,5716,420],{"class":401},[395,5718,5719],{"class":423},"2025-01-26T10:20:00.789Z",[395,5721,414],{"class":401},[395,5723,287],{"class":401},[395,5725,5726,5728,5730,5732,5734,5736,5738,5740],{"class":397,"line":431},[395,5727,408],{"class":401},[395,5729,244],{"class":411},[395,5731,414],{"class":401},[395,5733,417],{"class":401},[395,5735,420],{"class":401},[395,5737,3773],{"class":423},[395,5739,414],{"class":401},[395,5741,287],{"class":401},[395,5743,5744,5746,5748,5750,5752,5754,5756,5758],{"class":397,"line":451},[395,5745,408],{"class":401},[395,5747,211],{"class":411},[395,5749,414],{"class":401},[395,5751,417],{"class":401},[395,5753,420],{"class":401},[395,5755,5642],{"class":423},[395,5757,414],{"class":401},[395,5759,287],{"class":401},[395,5761,5762,5764,5766,5768,5770,5772,5774,5776],{"class":397,"line":470},[395,5763,408],{"class":401},[395,5765,259],{"class":411},[395,5767,414],{"class":401},[395,5769,417],{"class":401},[395,5771,420],{"class":401},[395,5773,896],{"class":423},[395,5775,414],{"class":401},[395,5777,287],{"class":401},[395,5779,5780,5782,5784,5786,5788,5790,5792,5794],{"class":397,"line":490},[395,5781,408],{"class":401},[395,5783,265],{"class":411},[395,5785,414],{"class":401},[395,5787,417],{"class":401},[395,5789,420],{"class":401},[395,5791,269],{"class":423},[395,5793,414],{"class":401},[395,5795,287],{"class":401},[395,5797,5798,5800,5802,5804,5806,5808,5811,5813],{"class":397,"line":509},[395,5799,408],{"class":401},[395,5801,5662],{"class":411},[395,5803,414],{"class":401},[395,5805,417],{"class":401},[395,5807,420],{"class":401},[395,5809,5810],{"class":423},"users",[395,5812,414],{"class":401},[395,5814,287],{"class":401},[395,5816,5817,5819,5821,5823,5825,5827,5829,5831],{"class":397,"line":529},[395,5818,408],{"class":401},[395,5820,5236],{"class":411},[395,5822,414],{"class":401},[395,5824,417],{"class":401},[395,5826,420],{"class":401},[395,5828,5393],{"class":423},[395,5830,414],{"class":401},[395,5832,287],{"class":401},[395,5834,5835,5837,5839,5841,5843,5845,5848,5850],{"class":397,"line":549},[395,5836,408],{"class":401},[395,5838,4510],{"class":411},[395,5840,414],{"class":401},[395,5842,417],{"class":401},[395,5844,420],{"class":401},[395,5846,5847],{"class":423},"list_users",[395,5849,414],{"class":401},[395,5851,287],{"class":401},[395,5853,5854,5856,5858,5860,5862,5864,5867,5869],{"class":397,"line":568},[395,5855,408],{"class":401},[395,5857,4763],{"class":411},[395,5859,414],{"class":401},[395,5861,417],{"class":401},[395,5863,420],{"class":401},[395,5865,5866],{"class":423},"OperationalError",[395,5868,414],{"class":401},[395,5870,287],{"class":401},[395,5872,5873,5875,5877,5879,5881,5883,5886,5888],{"class":397,"line":585},[395,5874,408],{"class":401},[395,5876,4769],{"class":411},[395,5878,414],{"class":401},[395,5880,417],{"class":401},[395,5882,420],{"class":401},[395,5884,5885],{"class":423},"Connection timeout",[395,5887,414],{"class":401},[395,5889,287],{"class":401},[395,5891,5892,5894,5896,5898,5900,5902,5904,5906],{"class":397,"line":605},[395,5893,408],{"class":401},[395,5895,278],{"class":411},[395,5897,414],{"class":401},[395,5899,417],{"class":401},[395,5901,420],{"class":401},[395,5903,522],{"class":423},[395,5905,414],{"class":401},[395,5907,287],{"class":401},[395,5909,5910,5912,5914,5916,5918,5920,5923],{"class":397,"line":624},[395,5911,408],{"class":401},[395,5913,4775],{"class":411},[395,5915,414],{"class":401},[395,5917,417],{"class":401},[395,5919,420],{"class":401},[395,5921,5922],{"class":423},"Traceback...",[395,5924,621],{"class":401},[395,5926,5927],{"class":397,"line":3948},[395,5928,627],{"class":401},[198,5930,5931],{},[227,5932,632],{},[386,5934,5936],{"className":635,"code":5935,"filename":637,"language":638,"meta":391,"style":391},"# Errors by router\njq 'select(.event == \"router_error\") | .router' app.log | sort | uniq -c\n\n# Errors in users router\njq 'select(.event == \"router_error\" and .router == \"users\")' app.log\n\n# Most error-prone operations\njq 'select(.event == \"router_error\") | .operation' app.log | sort | uniq -c | sort -rn\n",[209,5937,5938,5943,5966,5970,5975,5988,5992,5997],{"__ignoreMap":391},[395,5939,5940],{"class":397,"line":398},[395,5941,5942],{"class":645},"# Errors by router\n",[395,5944,5945,5947,5949,5952,5954,5956,5958,5960,5962,5964],{"class":397,"line":405},[395,5946,652],{"class":651},[395,5948,655],{"class":401},[395,5950,5951],{"class":423},"select(.event == \"router_error\") | .router",[395,5953,661],{"class":401},[395,5955,1072],{"class":423},[395,5957,1075],{"class":401},[395,5959,1078],{"class":651},[395,5961,1075],{"class":401},[395,5963,1083],{"class":651},[395,5965,2044],{"class":423},[395,5967,5968],{"class":397,"line":431},[395,5969,670],{"emptyLinePlaceholder":669},[395,5971,5972],{"class":397,"line":451},[395,5973,5974],{"class":645},"# Errors in users router\n",[395,5976,5977,5979,5981,5984,5986],{"class":397,"line":470},[395,5978,652],{"class":651},[395,5980,655],{"class":401},[395,5982,5983],{"class":423},"select(.event == \"router_error\" and .router == \"users\")",[395,5985,661],{"class":401},[395,5987,664],{"class":423},[395,5989,5990],{"class":397,"line":490},[395,5991,670],{"emptyLinePlaceholder":669},[395,5993,5994],{"class":397,"line":509},[395,5995,5996],{"class":645},"# Most error-prone operations\n",[395,5998,5999,6001,6003,6006,6008,6010,6012,6014,6016,6018,6020,6022,6024],{"class":397,"line":529},[395,6000,652],{"class":651},[395,6002,655],{"class":401},[395,6004,6005],{"class":423},"select(.event == \"router_error\") | .operation",[395,6007,661],{"class":401},[395,6009,1072],{"class":423},[395,6011,1075],{"class":401},[395,6013,1078],{"class":651},[395,6015,1075],{"class":401},[395,6017,1083],{"class":651},[395,6019,1086],{"class":423},[395,6021,1075],{"class":401},[395,6023,1078],{"class":651},[395,6025,1093],{"class":423},[295,6027],{},[302,6029,6030],{"id":6030},"service_error",[198,6032,6033,3966,6035,6037,6038,3661],{},[227,6034,308],{},[227,6036,312],{}," Error occurs in a business logic service\n",[227,6039,316],{},[198,6041,6042],{},[227,6043,322],{},[231,6045,6046,6051,6056,6060,6064,6068],{},[234,6047,6048,6050],{},[209,6049,265],{}," (string) - Service name (e.g., \"auth\", \"user\", \"role\", \"permission\")",[234,6052,6053,6055],{},[209,6054,4510],{}," (string) - Operation being performed (e.g., \"login\", \"create_user\")",[234,6057,6058,5678],{},[209,6059,4763],{},[234,6061,6062,4770],{},[209,6063,4769],{},[234,6065,6066,4781],{},[209,6067,278],{},[234,6069,6070,5691],{},[209,6071,4775],{},[198,6073,6074],{},[227,6075,384],{},[386,6077,6079],{"className":388,"code":6078,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-26T10:25:00.123Z\",\n  \"level\": \"error\",\n  \"event\": \"service_error\",\n  \"correlation_id\": \"c3d4e5f6-a7b8-9012-cdef-34567890abcd\",\n  \"service\": \"outlabs_auth\",\n  \"service\": \"auth\",\n  \"operation\": \"login\",\n  \"error_type\": \"DatabaseError\",\n  \"error_message\": \"Failed to query users collection\",\n  \"user_id\": \"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47\",\n  \"stack_trace\": \"Traceback...\"\n}\n",[209,6080,6081,6085,6104,6122,6140,6158,6176,6195,6214,6233,6252,6270,6286],{"__ignoreMap":391},[395,6082,6083],{"class":397,"line":398},[395,6084,402],{"class":401},[395,6086,6087,6089,6091,6093,6095,6097,6100,6102],{"class":397,"line":405},[395,6088,408],{"class":401},[395,6090,238],{"class":411},[395,6092,414],{"class":401},[395,6094,417],{"class":401},[395,6096,420],{"class":401},[395,6098,6099],{"class":423},"2025-01-26T10:25:00.123Z",[395,6101,414],{"class":401},[395,6103,287],{"class":401},[395,6105,6106,6108,6110,6112,6114,6116,6118,6120],{"class":397,"line":431},[395,6107,408],{"class":401},[395,6109,244],{"class":411},[395,6111,414],{"class":401},[395,6113,417],{"class":401},[395,6115,420],{"class":401},[395,6117,3773],{"class":423},[395,6119,414],{"class":401},[395,6121,287],{"class":401},[395,6123,6124,6126,6128,6130,6132,6134,6136,6138],{"class":397,"line":451},[395,6125,408],{"class":401},[395,6127,211],{"class":411},[395,6129,414],{"class":401},[395,6131,417],{"class":401},[395,6133,420],{"class":401},[395,6135,6030],{"class":423},[395,6137,414],{"class":401},[395,6139,287],{"class":401},[395,6141,6142,6144,6146,6148,6150,6152,6154,6156],{"class":397,"line":470},[395,6143,408],{"class":401},[395,6145,259],{"class":411},[395,6147,414],{"class":401},[395,6149,417],{"class":401},[395,6151,420],{"class":401},[395,6153,1280],{"class":423},[395,6155,414],{"class":401},[395,6157,287],{"class":401},[395,6159,6160,6162,6164,6166,6168,6170,6172,6174],{"class":397,"line":490},[395,6161,408],{"class":401},[395,6163,265],{"class":411},[395,6165,414],{"class":401},[395,6167,417],{"class":401},[395,6169,420],{"class":401},[395,6171,269],{"class":423},[395,6173,414],{"class":401},[395,6175,287],{"class":401},[395,6177,6178,6180,6182,6184,6186,6188,6191,6193],{"class":397,"line":509},[395,6179,408],{"class":401},[395,6181,265],{"class":411},[395,6183,414],{"class":401},[395,6185,417],{"class":401},[395,6187,420],{"class":401},[395,6189,6190],{"class":423},"auth",[395,6192,414],{"class":401},[395,6194,287],{"class":401},[395,6196,6197,6199,6201,6203,6205,6207,6210,6212],{"class":397,"line":529},[395,6198,408],{"class":401},[395,6200,4510],{"class":411},[395,6202,414],{"class":401},[395,6204,417],{"class":401},[395,6206,420],{"class":401},[395,6208,6209],{"class":423},"login",[395,6211,414],{"class":401},[395,6213,287],{"class":401},[395,6215,6216,6218,6220,6222,6224,6226,6229,6231],{"class":397,"line":549},[395,6217,408],{"class":401},[395,6219,4763],{"class":411},[395,6221,414],{"class":401},[395,6223,417],{"class":401},[395,6225,420],{"class":401},[395,6227,6228],{"class":423},"DatabaseError",[395,6230,414],{"class":401},[395,6232,287],{"class":401},[395,6234,6235,6237,6239,6241,6243,6245,6248,6250],{"class":397,"line":568},[395,6236,408],{"class":401},[395,6238,4769],{"class":411},[395,6240,414],{"class":401},[395,6242,417],{"class":401},[395,6244,420],{"class":401},[395,6246,6247],{"class":423},"Failed to query users collection",[395,6249,414],{"class":401},[395,6251,287],{"class":401},[395,6253,6254,6256,6258,6260,6262,6264,6266,6268],{"class":397,"line":585},[395,6255,408],{"class":401},[395,6257,278],{"class":411},[395,6259,414],{"class":401},[395,6261,417],{"class":401},[395,6263,420],{"class":401},[395,6265,522],{"class":423},[395,6267,414],{"class":401},[395,6269,287],{"class":401},[395,6271,6272,6274,6276,6278,6280,6282,6284],{"class":397,"line":605},[395,6273,408],{"class":401},[395,6275,4775],{"class":411},[395,6277,414],{"class":401},[395,6279,417],{"class":401},[395,6281,420],{"class":401},[395,6283,5922],{"class":423},[395,6285,621],{"class":401},[395,6287,6288],{"class":397,"line":624},[395,6289,627],{"class":401},[198,6291,6292],{},[227,6293,632],{},[386,6295,6297],{"className":635,"code":6296,"filename":637,"language":638,"meta":391,"style":391},"# Errors by service\njq 'select(.event == \"service_error\") | .service' app.log | sort | uniq -c\n\n# Auth service errors\njq 'select(.event == \"service_error\" and .service == \"auth\")' app.log\n\n# Database errors across all services\njq 'select(.event == \"service_error\" and .error_type == \"DatabaseError\")' app.log\n",[209,6298,6299,6304,6327,6331,6336,6349,6353,6358],{"__ignoreMap":391},[395,6300,6301],{"class":397,"line":398},[395,6302,6303],{"class":645},"# Errors by service\n",[395,6305,6306,6308,6310,6313,6315,6317,6319,6321,6323,6325],{"class":397,"line":405},[395,6307,652],{"class":651},[395,6309,655],{"class":401},[395,6311,6312],{"class":423},"select(.event == \"service_error\") | .service",[395,6314,661],{"class":401},[395,6316,1072],{"class":423},[395,6318,1075],{"class":401},[395,6320,1078],{"class":651},[395,6322,1075],{"class":401},[395,6324,1083],{"class":651},[395,6326,2044],{"class":423},[395,6328,6329],{"class":397,"line":431},[395,6330,670],{"emptyLinePlaceholder":669},[395,6332,6333],{"class":397,"line":451},[395,6334,6335],{"class":645},"# Auth service errors\n",[395,6337,6338,6340,6342,6345,6347],{"class":397,"line":470},[395,6339,652],{"class":651},[395,6341,655],{"class":401},[395,6343,6344],{"class":423},"select(.event == \"service_error\" and .service == \"auth\")",[395,6346,661],{"class":401},[395,6348,664],{"class":423},[395,6350,6351],{"class":397,"line":490},[395,6352,670],{"emptyLinePlaceholder":669},[395,6354,6355],{"class":397,"line":509},[395,6356,6357],{"class":645},"# Database errors across all services\n",[395,6359,6360,6362,6364,6367,6369],{"class":397,"line":529},[395,6361,652],{"class":651},[395,6363,655],{"class":401},[395,6365,6366],{"class":423},"select(.event == \"service_error\" and .error_type == \"DatabaseError\")",[395,6368,661],{"class":401},[395,6370,664],{"class":423},[295,6372],{},[302,6374,6375],{"id":6375},"exception_occurred",[198,6377,6378,3966,6380,6382,6383,6386,6388],{},[227,6379,308],{},[227,6381,312],{}," Generic exception logged via ",[209,6384,6385],{},"log_exception()",[227,6387,316],{}," Varies by usage",[198,6390,6391],{},[227,6392,322],{},[231,6394,6395,6399,6403,6409,6413],{},[234,6396,6397,5678],{},[209,6398,4763],{},[234,6400,6401,4770],{},[209,6402,4769],{},[234,6404,6405,6408],{},[209,6406,6407],{},"context"," (string) - Context where exception occurred",[234,6410,6411,4781],{},[209,6412,278],{},[234,6414,6415,5691],{},[209,6416,4775],{},[198,6418,6419],{},[227,6420,384],{},[386,6422,6424],{"className":388,"code":6423,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-26T10:30:00.456Z\",\n  \"level\": \"error\",\n  \"event\": \"exception_occurred\",\n  \"correlation_id\": \"d4e5f6a7-b8c9-0123-def4-567890abcdef\",\n  \"service\": \"outlabs_auth\",\n  \"error_type\": \"ValueError\",\n  \"error_message\": \"Invalid user ID format\",\n  \"context\": \"users_router.get_user\",\n  \"user_id\": \"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47\",\n  \"stack_trace\": \"Traceback...\"\n}\n",[209,6425,6426,6430,6449,6467,6485,6503,6521,6540,6559,6578,6596,6612],{"__ignoreMap":391},[395,6427,6428],{"class":397,"line":398},[395,6429,402],{"class":401},[395,6431,6432,6434,6436,6438,6440,6442,6445,6447],{"class":397,"line":405},[395,6433,408],{"class":401},[395,6435,238],{"class":411},[395,6437,414],{"class":401},[395,6439,417],{"class":401},[395,6441,420],{"class":401},[395,6443,6444],{"class":423},"2025-01-26T10:30:00.456Z",[395,6446,414],{"class":401},[395,6448,287],{"class":401},[395,6450,6451,6453,6455,6457,6459,6461,6463,6465],{"class":397,"line":431},[395,6452,408],{"class":401},[395,6454,244],{"class":411},[395,6456,414],{"class":401},[395,6458,417],{"class":401},[395,6460,420],{"class":401},[395,6462,3773],{"class":423},[395,6464,414],{"class":401},[395,6466,287],{"class":401},[395,6468,6469,6471,6473,6475,6477,6479,6481,6483],{"class":397,"line":451},[395,6470,408],{"class":401},[395,6472,211],{"class":411},[395,6474,414],{"class":401},[395,6476,417],{"class":401},[395,6478,420],{"class":401},[395,6480,6375],{"class":423},[395,6482,414],{"class":401},[395,6484,287],{"class":401},[395,6486,6487,6489,6491,6493,6495,6497,6499,6501],{"class":397,"line":470},[395,6488,408],{"class":401},[395,6490,259],{"class":411},[395,6492,414],{"class":401},[395,6494,417],{"class":401},[395,6496,420],{"class":401},[395,6498,1490],{"class":423},[395,6500,414],{"class":401},[395,6502,287],{"class":401},[395,6504,6505,6507,6509,6511,6513,6515,6517,6519],{"class":397,"line":490},[395,6506,408],{"class":401},[395,6508,265],{"class":411},[395,6510,414],{"class":401},[395,6512,417],{"class":401},[395,6514,420],{"class":401},[395,6516,269],{"class":423},[395,6518,414],{"class":401},[395,6520,287],{"class":401},[395,6522,6523,6525,6527,6529,6531,6533,6536,6538],{"class":397,"line":509},[395,6524,408],{"class":401},[395,6526,4763],{"class":411},[395,6528,414],{"class":401},[395,6530,417],{"class":401},[395,6532,420],{"class":401},[395,6534,6535],{"class":423},"ValueError",[395,6537,414],{"class":401},[395,6539,287],{"class":401},[395,6541,6542,6544,6546,6548,6550,6552,6555,6557],{"class":397,"line":529},[395,6543,408],{"class":401},[395,6545,4769],{"class":411},[395,6547,414],{"class":401},[395,6549,417],{"class":401},[395,6551,420],{"class":401},[395,6553,6554],{"class":423},"Invalid user ID format",[395,6556,414],{"class":401},[395,6558,287],{"class":401},[395,6560,6561,6563,6565,6567,6569,6571,6574,6576],{"class":397,"line":549},[395,6562,408],{"class":401},[395,6564,6407],{"class":411},[395,6566,414],{"class":401},[395,6568,417],{"class":401},[395,6570,420],{"class":401},[395,6572,6573],{"class":423},"users_router.get_user",[395,6575,414],{"class":401},[395,6577,287],{"class":401},[395,6579,6580,6582,6584,6586,6588,6590,6592,6594],{"class":397,"line":568},[395,6581,408],{"class":401},[395,6583,278],{"class":411},[395,6585,414],{"class":401},[395,6587,417],{"class":401},[395,6589,420],{"class":401},[395,6591,522],{"class":423},[395,6593,414],{"class":401},[395,6595,287],{"class":401},[395,6597,6598,6600,6602,6604,6606,6608,6610],{"class":397,"line":585},[395,6599,408],{"class":401},[395,6601,4775],{"class":411},[395,6603,414],{"class":401},[395,6605,417],{"class":401},[395,6607,420],{"class":401},[395,6609,5922],{"class":423},[395,6611,621],{"class":401},[395,6613,6614],{"class":397,"line":605},[395,6615,627],{"class":401},[295,6617],{},[217,6619,6621],{"id":6620},"entity-events","Entity Events",[302,6623,6624],{"id":6624},"entity_operation",[198,6626,6627,309,6629,6631,6632,6634],{},[227,6628,308],{},[227,6630,312],{}," Entity created, updated, moved, or deleted\n",[227,6633,316],{}," Per entity operation (moderate volume in EnterpriseRBAC)",[198,6636,6637],{},[227,6638,322],{},[231,6640,6641,6656,6661,6676,6681,6687,6693],{},[234,6642,6643,6645,6646,279,6649,279,6651,279,6654],{},[209,6644,4510],{}," (string) - Operation type: ",[209,6647,6648],{},"create",[209,6650,4293],{},[209,6652,6653],{},"move",[209,6655,4299],{},[234,6657,6658,6660],{},[209,6659,2101],{}," (string) - Entity ID",[234,6662,6663,6666,6667,279,6670,279,6673,254],{},[209,6664,6665],{},"entity_type"," (string) - Entity type (e.g., ",[209,6668,6669],{},"department",[209,6671,6672],{},"team",[209,6674,6675],{},"project",[234,6677,6678,6680],{},[209,6679,293],{}," (float, optional) - Operation duration",[234,6682,6683,6686],{},[209,6684,6685],{},"parent_id"," (string, optional) - Parent entity ID (for create\u002Fmove)",[234,6688,6689,6692],{},[209,6690,6691],{},"old_parent_id"," (string, optional) - Previous parent ID (for move)",[234,6694,6695,6698],{},[209,6696,6697],{},"changes"," (object, optional) - Changed fields (for update)",[198,6700,6701],{},[227,6702,384],{},[386,6704,6706],{"className":388,"code":6705,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-20T10:30:00.123Z\",\n  \"level\": \"info\",\n  \"event\": \"entity_operation\",\n  \"correlation_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n  \"service\": \"outlabs_auth\",\n  \"operation\": \"create\",\n  \"entity_id\": \"ent_abc123\",\n  \"entity_type\": \"department\",\n  \"parent_id\": \"ent_root\",\n  \"duration_ms\": 45.2\n}\n",[209,6707,6708,6712,6731,6749,6767,6785,6803,6821,6840,6858,6877,6890],{"__ignoreMap":391},[395,6709,6710],{"class":397,"line":398},[395,6711,402],{"class":401},[395,6713,6714,6716,6718,6720,6722,6724,6727,6729],{"class":397,"line":405},[395,6715,408],{"class":401},[395,6717,238],{"class":411},[395,6719,414],{"class":401},[395,6721,417],{"class":401},[395,6723,420],{"class":401},[395,6725,6726],{"class":423},"2025-01-20T10:30:00.123Z",[395,6728,414],{"class":401},[395,6730,287],{"class":401},[395,6732,6733,6735,6737,6739,6741,6743,6745,6747],{"class":397,"line":431},[395,6734,408],{"class":401},[395,6736,244],{"class":411},[395,6738,414],{"class":401},[395,6740,417],{"class":401},[395,6742,420],{"class":401},[395,6744,444],{"class":423},[395,6746,414],{"class":401},[395,6748,287],{"class":401},[395,6750,6751,6753,6755,6757,6759,6761,6763,6765],{"class":397,"line":451},[395,6752,408],{"class":401},[395,6754,211],{"class":411},[395,6756,414],{"class":401},[395,6758,417],{"class":401},[395,6760,420],{"class":401},[395,6762,6624],{"class":423},[395,6764,414],{"class":401},[395,6766,287],{"class":401},[395,6768,6769,6771,6773,6775,6777,6779,6781,6783],{"class":397,"line":470},[395,6770,408],{"class":401},[395,6772,259],{"class":411},[395,6774,414],{"class":401},[395,6776,417],{"class":401},[395,6778,420],{"class":401},[395,6780,483],{"class":423},[395,6782,414],{"class":401},[395,6784,287],{"class":401},[395,6786,6787,6789,6791,6793,6795,6797,6799,6801],{"class":397,"line":490},[395,6788,408],{"class":401},[395,6790,265],{"class":411},[395,6792,414],{"class":401},[395,6794,417],{"class":401},[395,6796,420],{"class":401},[395,6798,269],{"class":423},[395,6800,414],{"class":401},[395,6802,287],{"class":401},[395,6804,6805,6807,6809,6811,6813,6815,6817,6819],{"class":397,"line":509},[395,6806,408],{"class":401},[395,6808,4510],{"class":411},[395,6810,414],{"class":401},[395,6812,417],{"class":401},[395,6814,420],{"class":401},[395,6816,6648],{"class":423},[395,6818,414],{"class":401},[395,6820,287],{"class":401},[395,6822,6823,6825,6827,6829,6831,6833,6836,6838],{"class":397,"line":529},[395,6824,408],{"class":401},[395,6826,2101],{"class":411},[395,6828,414],{"class":401},[395,6830,417],{"class":401},[395,6832,420],{"class":401},[395,6834,6835],{"class":423},"ent_abc123",[395,6837,414],{"class":401},[395,6839,287],{"class":401},[395,6841,6842,6844,6846,6848,6850,6852,6854,6856],{"class":397,"line":549},[395,6843,408],{"class":401},[395,6845,6665],{"class":411},[395,6847,414],{"class":401},[395,6849,417],{"class":401},[395,6851,420],{"class":401},[395,6853,6669],{"class":423},[395,6855,414],{"class":401},[395,6857,287],{"class":401},[395,6859,6860,6862,6864,6866,6868,6870,6873,6875],{"class":397,"line":568},[395,6861,408],{"class":401},[395,6863,6685],{"class":411},[395,6865,414],{"class":401},[395,6867,417],{"class":401},[395,6869,420],{"class":401},[395,6871,6872],{"class":423},"ent_root",[395,6874,414],{"class":401},[395,6876,287],{"class":401},[395,6878,6879,6881,6883,6885,6887],{"class":397,"line":585},[395,6880,408],{"class":401},[395,6882,293],{"class":411},[395,6884,414],{"class":401},[395,6886,417],{"class":401},[395,6888,6889],{"class":579}," 45.2\n",[395,6891,6892],{"class":397,"line":605},[395,6893,627],{"class":401},[198,6895,6896],{},[227,6897,632],{},[386,6899,6901],{"className":635,"code":6900,"filename":637,"language":638,"meta":391,"style":391},"# All entity operations\njq 'select(.event == \"entity_operation\")' app.log\n\n# Entity hierarchy changes (moves)\njq 'select(.event == \"entity_operation\" and .operation == \"move\")' app.log\n\n# Operations on specific entity\njq 'select(.event == \"entity_operation\" and .entity_id == \"ent_abc123\")' app.log\n",[209,6902,6903,6908,6921,6925,6930,6943,6947,6952],{"__ignoreMap":391},[395,6904,6905],{"class":397,"line":398},[395,6906,6907],{"class":645},"# All entity operations\n",[395,6909,6910,6912,6914,6917,6919],{"class":397,"line":405},[395,6911,652],{"class":651},[395,6913,655],{"class":401},[395,6915,6916],{"class":423},"select(.event == \"entity_operation\")",[395,6918,661],{"class":401},[395,6920,664],{"class":423},[395,6922,6923],{"class":397,"line":431},[395,6924,670],{"emptyLinePlaceholder":669},[395,6926,6927],{"class":397,"line":451},[395,6928,6929],{"class":645},"# Entity hierarchy changes (moves)\n",[395,6931,6932,6934,6936,6939,6941],{"class":397,"line":470},[395,6933,652],{"class":651},[395,6935,655],{"class":401},[395,6937,6938],{"class":423},"select(.event == \"entity_operation\" and .operation == \"move\")",[395,6940,661],{"class":401},[395,6942,664],{"class":423},[395,6944,6945],{"class":397,"line":490},[395,6946,670],{"emptyLinePlaceholder":669},[395,6948,6949],{"class":397,"line":509},[395,6950,6951],{"class":645},"# Operations on specific entity\n",[395,6953,6954,6956,6958,6961,6963],{"class":397,"line":529},[395,6955,652],{"class":651},[395,6957,655],{"class":401},[395,6959,6960],{"class":423},"select(.event == \"entity_operation\" and .entity_id == \"ent_abc123\")",[395,6962,661],{"class":401},[395,6964,664],{"class":423},[295,6966],{},[217,6968,6970],{"id":6969},"membership-events","Membership Events",[302,6972,6973],{"id":6973},"membership_operation",[198,6975,6976,309,6978,6980,6981,6983],{},[227,6977,308],{},[227,6979,312],{}," Membership added, removed, suspended, or reactivated\n",[227,6982,316],{}," Per membership change (moderate volume in EnterpriseRBAC)",[198,6985,6986],{},[227,6987,322],{},[231,6989,6990,7006,7011,7016,7022,7027],{},[234,6991,6992,6645,6994,279,6997,279,7000,279,7003],{},[209,6993,4510],{},[209,6995,6996],{},"add",[209,6998,6999],{},"remove",[209,7001,7002],{},"suspend",[209,7004,7005],{},"reactivate",[234,7007,7008,7010],{},[209,7009,278],{}," (string) - User being added\u002Fremoved",[234,7012,7013,7015],{},[209,7014,2101],{}," (string) - Entity membership is for",[234,7017,7018,7021],{},[209,7019,7020],{},"roles"," (array, optional) - Role names assigned (for add)",[234,7023,7024,7026],{},[209,7025,747],{}," (string, optional) - Reason for suspension",[234,7028,7029,6680],{},[209,7030,293],{},[198,7032,7033],{},[227,7034,384],{},[386,7036,7038],{"className":388,"code":7037,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-20T10:35:00.456Z\",\n  \"level\": \"info\",\n  \"event\": \"membership_operation\",\n  \"correlation_id\": \"b2c3d4e5-f6a7-8901-bcde-f23456789012\",\n  \"service\": \"outlabs_auth\",\n  \"operation\": \"add\",\n  \"user_id\": \"usr_xyz789\",\n  \"entity_id\": \"ent_abc123\",\n  \"roles\": [\"editor\", \"viewer\"],\n  \"duration_ms\": 32.1\n}\n",[209,7039,7040,7044,7063,7081,7099,7118,7136,7154,7173,7191,7224,7237],{"__ignoreMap":391},[395,7041,7042],{"class":397,"line":398},[395,7043,402],{"class":401},[395,7045,7046,7048,7050,7052,7054,7056,7059,7061],{"class":397,"line":405},[395,7047,408],{"class":401},[395,7049,238],{"class":411},[395,7051,414],{"class":401},[395,7053,417],{"class":401},[395,7055,420],{"class":401},[395,7057,7058],{"class":423},"2025-01-20T10:35:00.456Z",[395,7060,414],{"class":401},[395,7062,287],{"class":401},[395,7064,7065,7067,7069,7071,7073,7075,7077,7079],{"class":397,"line":431},[395,7066,408],{"class":401},[395,7068,244],{"class":411},[395,7070,414],{"class":401},[395,7072,417],{"class":401},[395,7074,420],{"class":401},[395,7076,444],{"class":423},[395,7078,414],{"class":401},[395,7080,287],{"class":401},[395,7082,7083,7085,7087,7089,7091,7093,7095,7097],{"class":397,"line":451},[395,7084,408],{"class":401},[395,7086,211],{"class":411},[395,7088,414],{"class":401},[395,7090,417],{"class":401},[395,7092,420],{"class":401},[395,7094,6973],{"class":423},[395,7096,414],{"class":401},[395,7098,287],{"class":401},[395,7100,7101,7103,7105,7107,7109,7111,7114,7116],{"class":397,"line":470},[395,7102,408],{"class":401},[395,7104,259],{"class":411},[395,7106,414],{"class":401},[395,7108,417],{"class":401},[395,7110,420],{"class":401},[395,7112,7113],{"class":423},"b2c3d4e5-f6a7-8901-bcde-f23456789012",[395,7115,414],{"class":401},[395,7117,287],{"class":401},[395,7119,7120,7122,7124,7126,7128,7130,7132,7134],{"class":397,"line":490},[395,7121,408],{"class":401},[395,7123,265],{"class":411},[395,7125,414],{"class":401},[395,7127,417],{"class":401},[395,7129,420],{"class":401},[395,7131,269],{"class":423},[395,7133,414],{"class":401},[395,7135,287],{"class":401},[395,7137,7138,7140,7142,7144,7146,7148,7150,7152],{"class":397,"line":509},[395,7139,408],{"class":401},[395,7141,4510],{"class":411},[395,7143,414],{"class":401},[395,7145,417],{"class":401},[395,7147,420],{"class":401},[395,7149,6996],{"class":423},[395,7151,414],{"class":401},[395,7153,287],{"class":401},[395,7155,7156,7158,7160,7162,7164,7166,7169,7171],{"class":397,"line":529},[395,7157,408],{"class":401},[395,7159,278],{"class":411},[395,7161,414],{"class":401},[395,7163,417],{"class":401},[395,7165,420],{"class":401},[395,7167,7168],{"class":423},"usr_xyz789",[395,7170,414],{"class":401},[395,7172,287],{"class":401},[395,7174,7175,7177,7179,7181,7183,7185,7187,7189],{"class":397,"line":549},[395,7176,408],{"class":401},[395,7178,2101],{"class":411},[395,7180,414],{"class":401},[395,7182,417],{"class":401},[395,7184,420],{"class":401},[395,7186,6835],{"class":423},[395,7188,414],{"class":401},[395,7190,287],{"class":401},[395,7192,7193,7195,7197,7199,7201,7204,7206,7209,7211,7214,7216,7219,7221],{"class":397,"line":568},[395,7194,408],{"class":401},[395,7196,7020],{"class":411},[395,7198,414],{"class":401},[395,7200,417],{"class":401},[395,7202,7203],{"class":401}," [",[395,7205,414],{"class":401},[395,7207,7208],{"class":423},"editor",[395,7210,414],{"class":401},[395,7212,7213],{"class":401},",",[395,7215,420],{"class":401},[395,7217,7218],{"class":423},"viewer",[395,7220,414],{"class":401},[395,7222,7223],{"class":401},"],\n",[395,7225,7226,7228,7230,7232,7234],{"class":397,"line":585},[395,7227,408],{"class":401},[395,7229,293],{"class":411},[395,7231,414],{"class":401},[395,7233,417],{"class":401},[395,7235,7236],{"class":579}," 32.1\n",[395,7238,7239],{"class":397,"line":605},[395,7240,627],{"class":401},[198,7242,7243],{},[227,7244,632],{},[386,7246,7248],{"className":635,"code":7247,"filename":637,"language":638,"meta":391,"style":391},"# All membership changes for a user\njq 'select(.event == \"membership_operation\" and .user_id == \"usr_xyz789\")' app.log\n\n# Membership suspensions (security events)\njq 'select(.event == \"membership_operation\" and .operation == \"suspend\")' app.log\n\n# Memberships added to specific entity\njq 'select(.event == \"membership_operation\" and .entity_id == \"ent_abc123\" and .operation == \"add\")' app.log\n",[209,7249,7250,7255,7268,7272,7277,7290,7294,7299],{"__ignoreMap":391},[395,7251,7252],{"class":397,"line":398},[395,7253,7254],{"class":645},"# All membership changes for a user\n",[395,7256,7257,7259,7261,7264,7266],{"class":397,"line":405},[395,7258,652],{"class":651},[395,7260,655],{"class":401},[395,7262,7263],{"class":423},"select(.event == \"membership_operation\" and .user_id == \"usr_xyz789\")",[395,7265,661],{"class":401},[395,7267,664],{"class":423},[395,7269,7270],{"class":397,"line":431},[395,7271,670],{"emptyLinePlaceholder":669},[395,7273,7274],{"class":397,"line":451},[395,7275,7276],{"class":645},"# Membership suspensions (security events)\n",[395,7278,7279,7281,7283,7286,7288],{"class":397,"line":470},[395,7280,652],{"class":651},[395,7282,655],{"class":401},[395,7284,7285],{"class":423},"select(.event == \"membership_operation\" and .operation == \"suspend\")",[395,7287,661],{"class":401},[395,7289,664],{"class":423},[395,7291,7292],{"class":397,"line":490},[395,7293,670],{"emptyLinePlaceholder":669},[395,7295,7296],{"class":397,"line":509},[395,7297,7298],{"class":645},"# Memberships added to specific entity\n",[395,7300,7301,7303,7305,7308,7310],{"class":397,"line":529},[395,7302,652],{"class":651},[395,7304,655],{"class":401},[395,7306,7307],{"class":423},"select(.event == \"membership_operation\" and .entity_id == \"ent_abc123\" and .operation == \"add\")",[395,7309,661],{"class":401},[395,7311,664],{"class":423},[295,7313],{},[217,7315,7317],{"id":7316},"activity-events","Activity Events",[302,7319,7320],{"id":7320},"activity_tracked",[198,7322,7323,2058,7325,7327,7328,7330],{},[227,7324,308],{},[227,7326,312],{}," User activity tracked for DAU\u002FMAU\u002FQAU metrics\n",[227,7329,316],{}," Per user activity (high volume, typically DEBUG level)",[198,7332,7333],{},[227,7334,322],{},[231,7336,7337,7342],{},[234,7338,7339,7341],{},[209,7340,278],{}," (string) - User ID",[234,7343,7344,7347,7348,279,7351,279,7354],{},[209,7345,7346],{},"period"," (string) - Period type: ",[209,7349,7350],{},"daily",[209,7352,7353],{},"monthly",[209,7355,7356],{},"quarterly",[198,7358,7359],{},[227,7360,384],{},[386,7362,7364],{"className":388,"code":7363,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-20T10:40:00.789Z\",\n  \"level\": \"debug\",\n  \"event\": \"activity_tracked\",\n  \"correlation_id\": \"c3d4e5f6-a7b8-9012-cdef-34567890abcd\",\n  \"service\": \"outlabs_auth\",\n  \"user_id\": \"usr_xyz789\",\n  \"period\": \"daily\"\n}\n",[209,7365,7366,7370,7389,7407,7425,7443,7461,7479,7495],{"__ignoreMap":391},[395,7367,7368],{"class":397,"line":398},[395,7369,402],{"class":401},[395,7371,7372,7374,7376,7378,7380,7382,7385,7387],{"class":397,"line":405},[395,7373,408],{"class":401},[395,7375,238],{"class":411},[395,7377,414],{"class":401},[395,7379,417],{"class":401},[395,7381,420],{"class":401},[395,7383,7384],{"class":423},"2025-01-20T10:40:00.789Z",[395,7386,414],{"class":401},[395,7388,287],{"class":401},[395,7390,7391,7393,7395,7397,7399,7401,7403,7405],{"class":397,"line":431},[395,7392,408],{"class":401},[395,7394,244],{"class":411},[395,7396,414],{"class":401},[395,7398,417],{"class":401},[395,7400,420],{"class":401},[395,7402,2154],{"class":423},[395,7404,414],{"class":401},[395,7406,287],{"class":401},[395,7408,7409,7411,7413,7415,7417,7419,7421,7423],{"class":397,"line":451},[395,7410,408],{"class":401},[395,7412,211],{"class":411},[395,7414,414],{"class":401},[395,7416,417],{"class":401},[395,7418,420],{"class":401},[395,7420,7320],{"class":423},[395,7422,414],{"class":401},[395,7424,287],{"class":401},[395,7426,7427,7429,7431,7433,7435,7437,7439,7441],{"class":397,"line":470},[395,7428,408],{"class":401},[395,7430,259],{"class":411},[395,7432,414],{"class":401},[395,7434,417],{"class":401},[395,7436,420],{"class":401},[395,7438,1280],{"class":423},[395,7440,414],{"class":401},[395,7442,287],{"class":401},[395,7444,7445,7447,7449,7451,7453,7455,7457,7459],{"class":397,"line":490},[395,7446,408],{"class":401},[395,7448,265],{"class":411},[395,7450,414],{"class":401},[395,7452,417],{"class":401},[395,7454,420],{"class":401},[395,7456,269],{"class":423},[395,7458,414],{"class":401},[395,7460,287],{"class":401},[395,7462,7463,7465,7467,7469,7471,7473,7475,7477],{"class":397,"line":509},[395,7464,408],{"class":401},[395,7466,278],{"class":411},[395,7468,414],{"class":401},[395,7470,417],{"class":401},[395,7472,420],{"class":401},[395,7474,7168],{"class":423},[395,7476,414],{"class":401},[395,7478,287],{"class":401},[395,7480,7481,7483,7485,7487,7489,7491,7493],{"class":397,"line":529},[395,7482,408],{"class":401},[395,7484,7346],{"class":411},[395,7486,414],{"class":401},[395,7488,417],{"class":401},[395,7490,420],{"class":401},[395,7492,7350],{"class":423},[395,7494,621],{"class":401},[395,7496,7497],{"class":397,"line":549},[395,7498,627],{"class":401},[295,7500],{},[302,7502,7503],{"id":7503},"activity_sync",[198,7505,7506,309,7508,7510,7511,7513],{},[227,7507,308],{},[227,7509,312],{}," Activity metrics synced from Redis to database\n",[227,7512,316],{}," Per sync interval (low volume, typically every few minutes)",[198,7515,7516],{},[227,7517,322],{},[231,7519,7520,7525,7531,7537,7543],{},[234,7521,7522,7524],{},[209,7523,293],{}," (float) - Sync operation duration",[234,7526,7527,7530],{},[209,7528,7529],{},"records_synced"," (int) - Total records synced",[234,7532,7533,7536],{},[209,7534,7535],{},"daily_count"," (int) - Daily active users synced",[234,7538,7539,7542],{},[209,7540,7541],{},"monthly_count"," (int) - Monthly active users synced",[234,7544,7545,7548],{},[209,7546,7547],{},"quarterly_count"," (int) - Quarterly active users synced",[198,7550,7551],{},[227,7552,384],{},[386,7554,7556],{"className":388,"code":7555,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-20T10:45:00.123Z\",\n  \"level\": \"info\",\n  \"event\": \"activity_sync\",\n  \"correlation_id\": \"d4e5f6a7-b8c9-0123-def4-567890abcdef\",\n  \"service\": \"outlabs_auth\",\n  \"duration_ms\": 150.5,\n  \"records_synced\": 42,\n  \"daily_count\": 25,\n  \"monthly_count\": 15,\n  \"quarterly_count\": 2\n}\n",[209,7557,7558,7562,7581,7599,7617,7635,7653,7668,7683,7698,7713,7726],{"__ignoreMap":391},[395,7559,7560],{"class":397,"line":398},[395,7561,402],{"class":401},[395,7563,7564,7566,7568,7570,7572,7574,7577,7579],{"class":397,"line":405},[395,7565,408],{"class":401},[395,7567,238],{"class":411},[395,7569,414],{"class":401},[395,7571,417],{"class":401},[395,7573,420],{"class":401},[395,7575,7576],{"class":423},"2025-01-20T10:45:00.123Z",[395,7578,414],{"class":401},[395,7580,287],{"class":401},[395,7582,7583,7585,7587,7589,7591,7593,7595,7597],{"class":397,"line":431},[395,7584,408],{"class":401},[395,7586,244],{"class":411},[395,7588,414],{"class":401},[395,7590,417],{"class":401},[395,7592,420],{"class":401},[395,7594,444],{"class":423},[395,7596,414],{"class":401},[395,7598,287],{"class":401},[395,7600,7601,7603,7605,7607,7609,7611,7613,7615],{"class":397,"line":451},[395,7602,408],{"class":401},[395,7604,211],{"class":411},[395,7606,414],{"class":401},[395,7608,417],{"class":401},[395,7610,420],{"class":401},[395,7612,7503],{"class":423},[395,7614,414],{"class":401},[395,7616,287],{"class":401},[395,7618,7619,7621,7623,7625,7627,7629,7631,7633],{"class":397,"line":470},[395,7620,408],{"class":401},[395,7622,259],{"class":411},[395,7624,414],{"class":401},[395,7626,417],{"class":401},[395,7628,420],{"class":401},[395,7630,1490],{"class":423},[395,7632,414],{"class":401},[395,7634,287],{"class":401},[395,7636,7637,7639,7641,7643,7645,7647,7649,7651],{"class":397,"line":490},[395,7638,408],{"class":401},[395,7640,265],{"class":411},[395,7642,414],{"class":401},[395,7644,417],{"class":401},[395,7646,420],{"class":401},[395,7648,269],{"class":423},[395,7650,414],{"class":401},[395,7652,287],{"class":401},[395,7654,7655,7657,7659,7661,7663,7666],{"class":397,"line":509},[395,7656,408],{"class":401},[395,7658,293],{"class":411},[395,7660,414],{"class":401},[395,7662,417],{"class":401},[395,7664,7665],{"class":579}," 150.5",[395,7667,287],{"class":401},[395,7669,7670,7672,7674,7676,7678,7681],{"class":397,"line":529},[395,7671,408],{"class":401},[395,7673,7529],{"class":411},[395,7675,414],{"class":401},[395,7677,417],{"class":401},[395,7679,7680],{"class":579}," 42",[395,7682,287],{"class":401},[395,7684,7685,7687,7689,7691,7693,7696],{"class":397,"line":549},[395,7686,408],{"class":401},[395,7688,7535],{"class":411},[395,7690,414],{"class":401},[395,7692,417],{"class":401},[395,7694,7695],{"class":579}," 25",[395,7697,287],{"class":401},[395,7699,7700,7702,7704,7706,7708,7711],{"class":397,"line":568},[395,7701,408],{"class":401},[395,7703,7541],{"class":411},[395,7705,414],{"class":401},[395,7707,417],{"class":401},[395,7709,7710],{"class":579}," 15",[395,7712,287],{"class":401},[395,7714,7715,7717,7719,7721,7723],{"class":397,"line":585},[395,7716,408],{"class":401},[395,7718,7547],{"class":411},[395,7720,414],{"class":401},[395,7722,417],{"class":401},[395,7724,7725],{"class":579}," 2\n",[395,7727,7728],{"class":397,"line":605},[395,7729,627],{"class":401},[295,7731],{},[217,7733,7735],{"id":7734},"notification-events","Notification Events",[302,7737,7738],{"id":7738},"notification_event",[198,7740,7741,309,7743,7745,7746,7748],{},[227,7742,308],{},[227,7744,312],{}," Notification event emitted\n",[227,7747,316],{}," Per notification (moderate volume)",[198,7750,7751],{},[227,7752,322],{},[231,7754,7755,7767,7773],{},[234,7756,7757,7760,7761,279,7764,254],{},[209,7758,7759],{},"event_type"," (string) - Notification event type (e.g., ",[209,7762,7763],{},"user_registered",[209,7765,7766],{},"password_reset",[234,7768,7769,7772],{},[209,7770,7771],{},"channels_count"," (int) - Number of channels notified",[234,7774,7775,7777],{},[209,7776,278],{}," (string, optional) - Related user ID",[198,7779,7780],{},[227,7781,384],{},[386,7783,7785],{"className":388,"code":7784,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-20T10:50:00.456Z\",\n  \"level\": \"info\",\n  \"event\": \"notification_event\",\n  \"correlation_id\": \"e5f6a7b8-c9d0-1234-ef56-7890abcdef12\",\n  \"service\": \"outlabs_auth\",\n  \"event_type\": \"user_registered\",\n  \"channels_count\": 3,\n  \"user_id\": \"usr_new123\"\n}\n",[209,7786,7787,7791,7810,7828,7846,7865,7883,7901,7916,7933],{"__ignoreMap":391},[395,7788,7789],{"class":397,"line":398},[395,7790,402],{"class":401},[395,7792,7793,7795,7797,7799,7801,7803,7806,7808],{"class":397,"line":405},[395,7794,408],{"class":401},[395,7796,238],{"class":411},[395,7798,414],{"class":401},[395,7800,417],{"class":401},[395,7802,420],{"class":401},[395,7804,7805],{"class":423},"2025-01-20T10:50:00.456Z",[395,7807,414],{"class":401},[395,7809,287],{"class":401},[395,7811,7812,7814,7816,7818,7820,7822,7824,7826],{"class":397,"line":431},[395,7813,408],{"class":401},[395,7815,244],{"class":411},[395,7817,414],{"class":401},[395,7819,417],{"class":401},[395,7821,420],{"class":401},[395,7823,444],{"class":423},[395,7825,414],{"class":401},[395,7827,287],{"class":401},[395,7829,7830,7832,7834,7836,7838,7840,7842,7844],{"class":397,"line":451},[395,7831,408],{"class":401},[395,7833,211],{"class":411},[395,7835,414],{"class":401},[395,7837,417],{"class":401},[395,7839,420],{"class":401},[395,7841,7738],{"class":423},[395,7843,414],{"class":401},[395,7845,287],{"class":401},[395,7847,7848,7850,7852,7854,7856,7858,7861,7863],{"class":397,"line":470},[395,7849,408],{"class":401},[395,7851,259],{"class":411},[395,7853,414],{"class":401},[395,7855,417],{"class":401},[395,7857,420],{"class":401},[395,7859,7860],{"class":423},"e5f6a7b8-c9d0-1234-ef56-7890abcdef12",[395,7862,414],{"class":401},[395,7864,287],{"class":401},[395,7866,7867,7869,7871,7873,7875,7877,7879,7881],{"class":397,"line":490},[395,7868,408],{"class":401},[395,7870,265],{"class":411},[395,7872,414],{"class":401},[395,7874,417],{"class":401},[395,7876,420],{"class":401},[395,7878,269],{"class":423},[395,7880,414],{"class":401},[395,7882,287],{"class":401},[395,7884,7885,7887,7889,7891,7893,7895,7897,7899],{"class":397,"line":509},[395,7886,408],{"class":401},[395,7888,7759],{"class":411},[395,7890,414],{"class":401},[395,7892,417],{"class":401},[395,7894,420],{"class":401},[395,7896,7763],{"class":423},[395,7898,414],{"class":401},[395,7900,287],{"class":401},[395,7902,7903,7905,7907,7909,7911,7914],{"class":397,"line":529},[395,7904,408],{"class":401},[395,7906,7771],{"class":411},[395,7908,414],{"class":401},[395,7910,417],{"class":401},[395,7912,7913],{"class":579}," 3",[395,7915,287],{"class":401},[395,7917,7918,7920,7922,7924,7926,7928,7931],{"class":397,"line":549},[395,7919,408],{"class":401},[395,7921,278],{"class":411},[395,7923,414],{"class":401},[395,7925,417],{"class":401},[395,7927,420],{"class":401},[395,7929,7930],{"class":423},"usr_new123",[395,7932,621],{"class":401},[395,7934,7935],{"class":397,"line":568},[395,7936,627],{"class":401},[295,7938],{},[302,7940,7941],{"id":7941},"notification_delivery_failure",[198,7943,7944,720,7946,7948,7949,7951],{},[227,7945,308],{},[227,7947,312],{}," Notification delivery to a channel fails\n",[227,7950,316],{}," Per failed delivery (should be low)",[198,7953,7954],{},[227,7955,322],{},[231,7957,7958,7963,7977],{},[234,7959,7960,7962],{},[209,7961,7759],{}," (string) - Original event type",[234,7964,7965,7968,7969,279,7971,279,7974,254],{},[209,7966,7967],{},"channel"," (string) - Failed channel (e.g., ",[209,7970,282],{},[209,7972,7973],{},"webhook",[209,7975,7976],{},"pubsub",[234,7978,7979,4770],{},[209,7980,3773],{},[198,7982,7983],{},[227,7984,384],{},[386,7986,7988],{"className":388,"code":7987,"language":390,"meta":391,"style":391},"{\n  \"timestamp\": \"2025-01-20T10:51:00.789Z\",\n  \"level\": \"warning\",\n  \"event\": \"notification_delivery_failure\",\n  \"correlation_id\": \"f6a7b8c9-d0e1-2345-f678-90abcdef1234\",\n  \"service\": \"outlabs_auth\",\n  \"event_type\": \"user_registered\",\n  \"channel\": \"email\",\n  \"error\": \"SMTP connection timeout\"\n}\n",[209,7989,7990,7994,8013,8031,8049,8068,8086,8104,8122,8139],{"__ignoreMap":391},[395,7991,7992],{"class":397,"line":398},[395,7993,402],{"class":401},[395,7995,7996,7998,8000,8002,8004,8006,8009,8011],{"class":397,"line":405},[395,7997,408],{"class":401},[395,7999,238],{"class":411},[395,8001,414],{"class":401},[395,8003,417],{"class":401},[395,8005,420],{"class":401},[395,8007,8008],{"class":423},"2025-01-20T10:51:00.789Z",[395,8010,414],{"class":401},[395,8012,287],{"class":401},[395,8014,8015,8017,8019,8021,8023,8025,8027,8029],{"class":397,"line":431},[395,8016,408],{"class":401},[395,8018,244],{"class":411},[395,8020,414],{"class":401},[395,8022,417],{"class":401},[395,8024,420],{"class":401},[395,8026,859],{"class":423},[395,8028,414],{"class":401},[395,8030,287],{"class":401},[395,8032,8033,8035,8037,8039,8041,8043,8045,8047],{"class":397,"line":451},[395,8034,408],{"class":401},[395,8036,211],{"class":411},[395,8038,414],{"class":401},[395,8040,417],{"class":401},[395,8042,420],{"class":401},[395,8044,7941],{"class":423},[395,8046,414],{"class":401},[395,8048,287],{"class":401},[395,8050,8051,8053,8055,8057,8059,8061,8064,8066],{"class":397,"line":470},[395,8052,408],{"class":401},[395,8054,259],{"class":411},[395,8056,414],{"class":401},[395,8058,417],{"class":401},[395,8060,420],{"class":401},[395,8062,8063],{"class":423},"f6a7b8c9-d0e1-2345-f678-90abcdef1234",[395,8065,414],{"class":401},[395,8067,287],{"class":401},[395,8069,8070,8072,8074,8076,8078,8080,8082,8084],{"class":397,"line":490},[395,8071,408],{"class":401},[395,8073,265],{"class":411},[395,8075,414],{"class":401},[395,8077,417],{"class":401},[395,8079,420],{"class":401},[395,8081,269],{"class":423},[395,8083,414],{"class":401},[395,8085,287],{"class":401},[395,8087,8088,8090,8092,8094,8096,8098,8100,8102],{"class":397,"line":509},[395,8089,408],{"class":401},[395,8091,7759],{"class":411},[395,8093,414],{"class":401},[395,8095,417],{"class":401},[395,8097,420],{"class":401},[395,8099,7763],{"class":423},[395,8101,414],{"class":401},[395,8103,287],{"class":401},[395,8105,8106,8108,8110,8112,8114,8116,8118,8120],{"class":397,"line":529},[395,8107,408],{"class":401},[395,8109,7967],{"class":411},[395,8111,414],{"class":401},[395,8113,417],{"class":401},[395,8115,420],{"class":401},[395,8117,282],{"class":423},[395,8119,414],{"class":401},[395,8121,287],{"class":401},[395,8123,8124,8126,8128,8130,8132,8134,8137],{"class":397,"line":549},[395,8125,408],{"class":401},[395,8127,3773],{"class":411},[395,8129,414],{"class":401},[395,8131,417],{"class":401},[395,8133,420],{"class":401},[395,8135,8136],{"class":423},"SMTP connection timeout",[395,8138,621],{"class":401},[395,8140,8141],{"class":397,"line":568},[395,8142,627],{"class":401},[198,8144,8145],{},[227,8146,632],{},[386,8148,8150],{"className":635,"code":8149,"filename":637,"language":638,"meta":391,"style":391},"# All notification failures\njq 'select(.event == \"notification_delivery_failure\")' app.log\n\n# Failures by channel\njq 'select(.event == \"notification_delivery_failure\") | .channel' app.log | sort | uniq -c\n\n# Email delivery failures\njq 'select(.event == \"notification_delivery_failure\" and .channel == \"email\")' app.log\n",[209,8151,8152,8157,8170,8174,8179,8202,8206,8211],{"__ignoreMap":391},[395,8153,8154],{"class":397,"line":398},[395,8155,8156],{"class":645},"# All notification failures\n",[395,8158,8159,8161,8163,8166,8168],{"class":397,"line":405},[395,8160,652],{"class":651},[395,8162,655],{"class":401},[395,8164,8165],{"class":423},"select(.event == \"notification_delivery_failure\")",[395,8167,661],{"class":401},[395,8169,664],{"class":423},[395,8171,8172],{"class":397,"line":431},[395,8173,670],{"emptyLinePlaceholder":669},[395,8175,8176],{"class":397,"line":451},[395,8177,8178],{"class":645},"# Failures by channel\n",[395,8180,8181,8183,8185,8188,8190,8192,8194,8196,8198,8200],{"class":397,"line":470},[395,8182,652],{"class":651},[395,8184,655],{"class":401},[395,8186,8187],{"class":423},"select(.event == \"notification_delivery_failure\") | .channel",[395,8189,661],{"class":401},[395,8191,1072],{"class":423},[395,8193,1075],{"class":401},[395,8195,1078],{"class":651},[395,8197,1075],{"class":401},[395,8199,1083],{"class":651},[395,8201,2044],{"class":423},[395,8203,8204],{"class":397,"line":490},[395,8205,670],{"emptyLinePlaceholder":669},[395,8207,8208],{"class":397,"line":509},[395,8209,8210],{"class":645},"# Email delivery failures\n",[395,8212,8213,8215,8217,8220,8222],{"class":397,"line":529},[395,8214,652],{"class":651},[395,8216,655],{"class":401},[395,8218,8219],{"class":423},"select(.event == \"notification_delivery_failure\" and .channel == \"email\")",[395,8221,661],{"class":401},[395,8223,664],{"class":423},[295,8225],{},[217,8227,8229],{"id":8228},"filtering-searching","Filtering & Searching",[302,8231,8233],{"id":8232},"common-jq-patterns","Common jq Patterns",[386,8235,8237],{"className":635,"code":8236,"filename":637,"language":638,"meta":391,"style":391},"# All events for specific user\njq 'select(.user_id == \"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47\")' app.log\n\n# All events with specific correlation ID\njq 'select(.correlation_id == \"a1b2c3d4-...\")' app.log\n\n# All WARNING and ERROR level events\njq 'select(.level == \"warning\" or .level == \"error\")' app.log\n\n# Events in time range\njq 'select(.timestamp >= \"2025-01-24T10:00:00Z\" and .timestamp \u003C= \"2025-01-24T11:00:00Z\")' app.log\n\n# Group events by type\njq -r '.event' app.log | sort | uniq -c | sort -rn\n\n# Count events per user\njq -r '.user_id' app.log | sort | uniq -c | sort -rn\n\n# Find slow operations (>100ms)\njq 'select(.duration_ms > 100)' app.log\n",[209,8238,8239,8244,8257,8261,8266,8279,8283,8288,8301,8305,8310,8323,8327,8332,8363,8367,8373,8405,8410,8416],{"__ignoreMap":391},[395,8240,8241],{"class":397,"line":398},[395,8242,8243],{"class":645},"# All events for specific user\n",[395,8245,8246,8248,8250,8253,8255],{"class":397,"line":405},[395,8247,652],{"class":651},[395,8249,655],{"class":401},[395,8251,8252],{"class":423},"select(.user_id == \"3f8a1c2e-7b4d-4e19-9a52-8c6f0d1b3e47\")",[395,8254,661],{"class":401},[395,8256,664],{"class":423},[395,8258,8259],{"class":397,"line":431},[395,8260,670],{"emptyLinePlaceholder":669},[395,8262,8263],{"class":397,"line":451},[395,8264,8265],{"class":645},"# All events with specific correlation ID\n",[395,8267,8268,8270,8272,8275,8277],{"class":397,"line":470},[395,8269,652],{"class":651},[395,8271,655],{"class":401},[395,8273,8274],{"class":423},"select(.correlation_id == \"a1b2c3d4-...\")",[395,8276,661],{"class":401},[395,8278,664],{"class":423},[395,8280,8281],{"class":397,"line":490},[395,8282,670],{"emptyLinePlaceholder":669},[395,8284,8285],{"class":397,"line":509},[395,8286,8287],{"class":645},"# All WARNING and ERROR level events\n",[395,8289,8290,8292,8294,8297,8299],{"class":397,"line":529},[395,8291,652],{"class":651},[395,8293,655],{"class":401},[395,8295,8296],{"class":423},"select(.level == \"warning\" or .level == \"error\")",[395,8298,661],{"class":401},[395,8300,664],{"class":423},[395,8302,8303],{"class":397,"line":549},[395,8304,670],{"emptyLinePlaceholder":669},[395,8306,8307],{"class":397,"line":568},[395,8308,8309],{"class":645},"# Events in time range\n",[395,8311,8312,8314,8316,8319,8321],{"class":397,"line":585},[395,8313,652],{"class":651},[395,8315,655],{"class":401},[395,8317,8318],{"class":423},"select(.timestamp >= \"2025-01-24T10:00:00Z\" and .timestamp \u003C= \"2025-01-24T11:00:00Z\")",[395,8320,661],{"class":401},[395,8322,664],{"class":423},[395,8324,8325],{"class":397,"line":605},[395,8326,670],{"emptyLinePlaceholder":669},[395,8328,8329],{"class":397,"line":624},[395,8330,8331],{"class":645},"# Group events by type\n",[395,8333,8334,8336,8338,8340,8343,8345,8347,8349,8351,8353,8355,8357,8359,8361],{"class":397,"line":3948},[395,8335,652],{"class":651},[395,8337,1995],{"class":423},[395,8339,655],{"class":401},[395,8341,8342],{"class":423},".event",[395,8344,661],{"class":401},[395,8346,1072],{"class":423},[395,8348,1075],{"class":401},[395,8350,1078],{"class":651},[395,8352,1075],{"class":401},[395,8354,1083],{"class":651},[395,8356,1086],{"class":423},[395,8358,1075],{"class":401},[395,8360,1078],{"class":651},[395,8362,1093],{"class":423},[395,8364,8365],{"class":397,"line":3954},[395,8366,670],{"emptyLinePlaceholder":669},[395,8368,8370],{"class":397,"line":8369},16,[395,8371,8372],{"class":645},"# Count events per user\n",[395,8374,8376,8378,8380,8382,8385,8387,8389,8391,8393,8395,8397,8399,8401,8403],{"class":397,"line":8375},17,[395,8377,652],{"class":651},[395,8379,1995],{"class":423},[395,8381,655],{"class":401},[395,8383,8384],{"class":423},".user_id",[395,8386,661],{"class":401},[395,8388,1072],{"class":423},[395,8390,1075],{"class":401},[395,8392,1078],{"class":651},[395,8394,1075],{"class":401},[395,8396,1083],{"class":651},[395,8398,1086],{"class":423},[395,8400,1075],{"class":401},[395,8402,1078],{"class":651},[395,8404,1093],{"class":423},[395,8406,8408],{"class":397,"line":8407},18,[395,8409,670],{"emptyLinePlaceholder":669},[395,8411,8413],{"class":397,"line":8412},19,[395,8414,8415],{"class":645},"# Find slow operations (>100ms)\n",[395,8417,8419,8421,8423,8426,8428],{"class":397,"line":8418},20,[395,8420,652],{"class":651},[395,8422,655],{"class":401},[395,8424,8425],{"class":423},"select(.duration_ms > 100)",[395,8427,661],{"class":401},[395,8429,664],{"class":423},[295,8431],{},[217,8433,8435],{"id":8434},"next-steps","Next Steps",[231,8437,8438,8446,8454],{},[234,8439,8440,8445],{},[227,8441,8442],{},[202,8443,8444],{"href":176},"97-Observability.md"," - Main observability guide",[234,8447,8448,8453],{},[227,8449,8450],{},[202,8451,8452],{"href":181},"98-Metrics-Reference.md"," - Complete metrics catalog",[234,8455,8456,8461],{},[227,8457,8458],{},[202,8459,8460],{"href":12},"Grafana Dashboard"," - Pre-built dashboard",[295,8463],{},[198,8465,8466,8469,8470,275,8473,279,8475],{},[227,8467,8468],{},"Last Updated:"," 2025-01-20\n",[227,8471,8472],{},"Related:",[202,8474,8444],{"href":176},[202,8476,8452],{"href":181},[8478,8479,8480],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":391,"searchDepth":398,"depth":405,"links":8482},[8483,8484,8492,8497,8502,8506,8510,8518,8521,8524,8528,8532,8535],{"id":219,"depth":405,"text":220},{"id":299,"depth":405,"text":300,"children":8485},[8486,8487,8488,8489,8490,8491],{"id":253,"depth":431,"text":253},{"id":715,"depth":431,"text":715},{"id":1136,"depth":431,"text":1136},{"id":1378,"depth":431,"text":1378},{"id":1552,"depth":431,"text":1552},{"id":767,"depth":431,"text":767},{"id":2049,"depth":405,"text":2050,"children":8493},[8494,8495,8496],{"id":2053,"depth":431,"text":2053},{"id":2271,"depth":431,"text":2271},{"id":2649,"depth":431,"text":2649},{"id":2909,"depth":405,"text":2910,"children":8498},[8499,8500,8501],{"id":2913,"depth":431,"text":2913},{"id":3122,"depth":431,"text":3122},{"id":3432,"depth":431,"text":3432},{"id":3646,"depth":405,"text":3647,"children":8503},[8504,8505],{"id":3650,"depth":431,"text":3650},{"id":3961,"depth":431,"text":3961},{"id":4238,"depth":405,"text":4239,"children":8507},[8508,8509],{"id":4242,"depth":431,"text":4242},{"id":4479,"depth":431,"text":4479},{"id":4739,"depth":405,"text":4740,"children":8511},[8512,8513,8514,8515,8516,8517],{"id":4743,"depth":431,"text":4743},{"id":4954,"depth":431,"text":4954},{"id":5174,"depth":431,"text":5174},{"id":5642,"depth":431,"text":5642},{"id":6030,"depth":431,"text":6030},{"id":6375,"depth":431,"text":6375},{"id":6620,"depth":405,"text":6621,"children":8519},[8520],{"id":6624,"depth":431,"text":6624},{"id":6969,"depth":405,"text":6970,"children":8522},[8523],{"id":6973,"depth":431,"text":6973},{"id":7316,"depth":405,"text":7317,"children":8525},[8526,8527],{"id":7320,"depth":431,"text":7320},{"id":7503,"depth":431,"text":7503},{"id":7734,"depth":405,"text":7735,"children":8529},[8530,8531],{"id":7738,"depth":431,"text":7738},{"id":7941,"depth":431,"text":7941},{"id":8228,"depth":405,"text":8229,"children":8533},[8534],{"id":8232,"depth":431,"text":8233},{"id":8434,"depth":405,"text":8435},"Structured log event catalog.","md",null,{},{"icon":188},{"title":185,"description":8536},"FnIPkkyu8tlPpHZQ3JaWqmrKKqYQPRVaBMxNJdbu8fc",[8544,8538],{"title":180,"path":181,"stem":182,"description":8545,"icon":183,"children":-1},"Prometheus metric catalog.",1787472745731]