blob: e65d6653110dc43d111b1e7b823c127c22ee6f70 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
require "context/error_level"
require "context/rc"
module Groonga
class Context
def guard(fallback=nil)
begin
yield
rescue => error
logger.log_error(error)
fallback
end
end
def logger
@logger ||= Logger.new
end
def writer
@writer ||= Writer.new
end
def set_groonga_error(groonga_error)
set_error_raw(groonga_error.class.rc,
ErrorLevel::ERROR,
groonga_error.message,
groonga_error.backtrace)
end
def record_error(rc, error)
rc = RC.find(rc) if rc.is_a?(Symbol)
set_error_raw(rc, ErrorLevel::ERROR, error.message, error.backtrace)
logger.log_error(error)
end
private
def set_error_raw(rc, error_level, message, backtrace)
self.rc = rc.to_i
self.error_level = error_level.to_i
self.error_message = message
if backtrace
entry = BacktraceEntry.parse(backtrace.first)
self.error_file = entry.file
self.error_line = entry.line
self.error_method = entry.method
end
end
end
end
|