Class | PhusionPassenger::AnalyticsLogger::Log |
In: |
lib/phusion_passenger/analytics_logger.rb
|
Parent: | Object |
txn_id | [R] |
# File lib/phusion_passenger/analytics_logger.rb, line 41 41: def initialize(shared_data = nil, txn_id = nil) 42: if shared_data 43: @shared_data = shared_data 44: @txn_id = txn_id 45: shared_data.ref 46: end 47: end
# File lib/phusion_passenger/analytics_logger.rb, line 61 61: def begin_measure(name, extra_info = nil) 62: if extra_info 63: extra_info_base64 = [extra_info].pack("m") 64: extra_info_base64.gsub!("\n", "") 65: extra_info_base64.strip! 66: else 67: extra_info_base64 = nil 68: end 69: times = NativeSupport.process_times 70: message "BEGIN: #{name} (#{current_timestamp.to_s(36)},#{times.utime.to_s(36)},#{times.stime.to_s(36)}) #{extra_info_base64}" 71: end
# File lib/phusion_passenger/analytics_logger.rb, line 108 108: def close(flush_to_disk = false) 109: @shared_data.synchronize do 110: # We need an ACK here. See abstract_request_handler.rb finalize_request. 111: @shared_data.client.write("closeTransaction", @txn_id, 112: AnalyticsLogger.timestamp_string, true) 113: result = @shared_data.client.read 114: if result != ["ok"] 115: raise "Expected logging server to respond with 'ok', but got #{result.inspect} instead" 116: end 117: if flush_to_disk 118: @shared_data.client.write("flush") 119: result = @shared_data.client.read 120: if result != ["ok"] 121: raise "Invalid logging server response #{result.inspect} to the 'flush' command" 122: end 123: end 124: @shared_data.unref 125: @shared_data = nil 126: end if @shared_data 127: end
# File lib/phusion_passenger/analytics_logger.rb, line 73 73: def end_measure(name, error_encountered = false) 74: times = NativeSupport.process_times 75: if error_encountered 76: message "FAIL: #{name} (#{current_timestamp.to_s(36)},#{times.utime.to_s(36)},#{times.stime.to_s(36)})" 77: else 78: message "END: #{name} (#{current_timestamp.to_s(36)},#{times.utime.to_s(36)},#{times.stime.to_s(36)})" 79: end 80: end
# File lib/phusion_passenger/analytics_logger.rb, line 82 82: def measure(name, extra_info = nil) 83: begin_measure(name, extra_info) 84: begin 85: yield 86: rescue Exception 87: error = true 88: raise 89: ensure 90: end_measure(name, error) 91: end 92: end
# File lib/phusion_passenger/analytics_logger.rb, line 94 94: def measured_time_points(name, begin_time, end_time, extra_info = nil) 95: if extra_info 96: extra_info_base64 = [extra_info].pack("m") 97: extra_info_base64.gsub!("\n", "") 98: extra_info_base64.strip! 99: else 100: extra_info_base64 = nil 101: end 102: begin_timestamp = begin_time.to_i * 1_000_000 + begin_time.usec 103: end_timestamp = end_time.to_i * 1_000_000 + end_time.usec 104: message "BEGIN: #{name} (#{begin_timestamp.to_s(36)}) #{extra_info_base64}" 105: message "END: #{name} (#{end_timestamp.to_s(36)})" 106: end