Class: AppMap::HookLog
Constant Summary collapse
- LOG =
(ENV['APPMAP_DEBUG'] == 'true' || ENV['DEBUG'] == 'true')
- LOG_HOOK =
(ENV['DEBUG_HOOK'] == 'true' || ENV['APPMAP_LOG_HOOK'] == 'true')
- LOG_HOOK_FILE =
(ENV['APPMAP_LOG_HOOK_FILE'] || 'appmap_hook.log')
Class Method Summary collapse
- .builtin(class_name, &block) ⇒ Object
- .enabled? ⇒ Boolean
- .load_error(name, msg) ⇒ Object
- .log(msg) ⇒ Object
- .on_load(location, &block) ⇒ Object
Instance Method Summary collapse
- #end_time(timer) ⇒ Object
-
#initialize ⇒ HookLog
constructor
A new instance of HookLog.
- #log(msg) ⇒ Object
- #start_time(timer) ⇒ Object
Constructor Details
#initialize ⇒ HookLog
Returns a new instance of HookLog.
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/appmap/hook_log.rb', line 7 def initialize @file_handle = self.class.send :open_log_file @elapsed = Hash.new { |h, k| h[k] = [] } at_exit do @file_handle.puts 'Elapsed time:' @elapsed.keys.each do |k| @file_handle.puts "#{k}:\t#{@elapsed[k].sum}" end @file_handle.flush @file_handle.close end end |
Class Method Details
.builtin(class_name, &block) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/appmap/hook_log.rb', line 40 def builtin(class_name, &block) return yield unless enabled? begin log "eager\tbegin\tInitiating eager hook for #{class_name}" @hook_log.start_time :eager yield ensure @hook_log.end_time :eager log "eager\tend\tCompleted eager hook for #{class_name}" end end |
.enabled? ⇒ Boolean
36 37 38 |
# File 'lib/appmap/hook_log.rb', line 36 def enabled? LOG || LOG_HOOK end |
.load_error(name, msg) ⇒ Object
68 69 70 |
# File 'lib/appmap/hook_log.rb', line 68 def load_error(name, msg) log "load_error\t#{name}\t#{msg}" end |
.log(msg) ⇒ Object
72 73 74 75 76 77 78 79 80 |
# File 'lib/appmap/hook_log.rb', line 72 def log(msg) unless HookLog.enabled? warn "AppMap: HookLog is not enabled. Disregarding message #{msg}" return end @hook_log ||= HookLog.new @hook_log.log msg end |
.on_load(location, &block) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/appmap/hook_log.rb', line 54 def on_load(location, &block) return yield unless enabled? begin log "on-load\tbegin\tInitiating on-load hook for class or module defined at location #{location}" @hook_log.start_time :on_load yield ensure @hook_log.end_time :on_load log "on-load\tend\tCompleted on-load hook for location #{location}" end end |
Instance Method Details
#end_time(timer) ⇒ Object
25 26 27 28 29 30 31 32 33 |
# File 'lib/appmap/hook_log.rb', line 25 def end_time(timer) unless @elapsed[timer].last.is_a?(Array) warn "AppMap: Unbalanced timing data in hook log" @elapsed[timer].pop return end @elapsed[timer][-1] = Util.gettime - @elapsed[timer].last[0] end |
#log(msg) ⇒ Object
91 92 93 94 95 96 97 |
# File 'lib/appmap/hook_log.rb', line 91 def log(msg) if LOG_HOOK_FILE == 'stderr' msg = "AppMap: #{msg}" end msg = "#{Util.gettime}\t#{msg}" @file_handle.puts(msg) end |