Ruby: improved logging of exceptions without backtraces.
If an exception was raised with a backtrace of zero length, the nxt_ruby_exception_log() routine would return without logging the exception class and message. This commit fixes the issue.
This commit is contained in:
@@ -1069,14 +1069,18 @@ nxt_ruby_exception_log(nxt_unit_request_info_t *req, uint32_t level,
|
||||
return;
|
||||
}
|
||||
|
||||
eclass = rb_class_name(rb_class_of(err));
|
||||
|
||||
msg = rb_funcall(err, rb_intern("message"), 0);
|
||||
ary = rb_funcall(err, rb_intern("backtrace"), 0);
|
||||
if (nxt_slow_path(RARRAY_LEN(ary) == 0)) {
|
||||
|
||||
if (RARRAY_LEN(ary) == 0) {
|
||||
nxt_unit_req_log(req, level, "Ruby: %s (%s)", RSTRING_PTR(msg),
|
||||
RSTRING_PTR(eclass));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
eclass = rb_class_name(rb_class_of(err));
|
||||
msg = rb_funcall(err, rb_intern("message"), 0);
|
||||
|
||||
nxt_unit_req_log(req, level, "Ruby: %s: %s (%s)",
|
||||
RSTRING_PTR(RARRAY_PTR(ary)[0]),
|
||||
RSTRING_PTR(msg), RSTRING_PTR(eclass));
|
||||
|
||||
Reference in New Issue
Block a user