comparison mod_sentry/sentry.lib.lua @ 4285:e67081d1f835

mod_sentry: Support for including stack frames in exception events
author Matthew Wild <mwild1@gmail.com>
date Wed, 09 Dec 2020 15:15:17 +0000
parents b7045af1e5b7
children 64f400a38a30
comparison
equal deleted inserted replaced
4284:b7045af1e5b7 4285:e67081d1f835
52 end 52 end
53 return data; 53 return data;
54 end 54 end
55 55
56 local function error_to_sentry_exception(e) 56 local function error_to_sentry_exception(e)
57 return { 57 local exception = {
58 type = e.condition or (e.code and tostring(e.code)) or nil; 58 type = e.condition or (e.code and tostring(e.code)) or nil;
59 value = e.text or tostring(e); 59 value = e.text or tostring(e);
60 context = e.source; 60 context = e.source;
61 mechanism = { 61 mechanism = {
62 type = "generic"; 62 type = "generic";
63 description = "Prosody error object"; 63 description = "Prosody error object";
64 synthetic = not not e.context.wrapped_error; 64 synthetic = not not e.context.wrapped_error;
65 data = get_error_data(e.instance_id, e.context); 65 data = get_error_data(e.instance_id, e.context);
66 }; 66 };
67 }; 67 };
68 local traceback = e.context.traceback;
69 if traceback and type(traceback) == "table" then
70 local frames = {};
71 for i = #traceback, 1 do
72 local frame = traceback[i];
73 table.insert(frames, {
74 ["function"] = frame.info.name;
75 filename = frame.info.short_src;
76 lineno = frame.info.currentline;
77 });
78 end
79 exception.frames = frames;
80 end
81 return exception;
68 end 82 end
69 83
70 local sentry_event_methods = {}; 84 local sentry_event_methods = {};
71 local sentry_event_mt = { __index = sentry_event_methods }; 85 local sentry_event_mt = { __index = sentry_event_methods };
72 86