class Stackify::ProtobufLogObject
Public Class Methods
new(level, msg, caller_str, trans_id=nil, log_uuid=nil, ex=nil)
click to toggle source
# File lib/stackify/utils/protobuf_log_object.rb, line 3 def initialize level, msg, caller_str, trans_id=nil, log_uuid=nil, ex=nil @level, @msg, @caller_str, @ex = level, msg, caller_str, ex, @trans_id = trans_id, @log_uuid = log_uuid end
Public Instance Methods
to_obj()
click to toggle source
Create a LogMsgGroup Protobuf Object
# File lib/stackify/utils/protobuf_log_object.rb, line 9 def to_obj begin log = Stackify::LogGroup::Log.new log.message = @msg log.thread_name = Thread.current.object_id.to_s log.date_millis = (Time.now.to_f * 1000).to_i log.level = @level.to_s.upcase! log.source_method = Stackify::Backtrace.method_name(@caller_str).to_s log.source_line = Stackify::Backtrace.line_number(@caller_str).to_i log.transaction_id = @trans_id unless @trans_id.nil? log.id = @log_uuid unless @log_uuid.nil? if @ex.try(:to_h) ex = @ex.try(:to_h) log_error = Stackify::LogGroup::Log::Error.new log_error.date_millis = ex['OccurredEpochMillis'].to_i if ex['EnvironmentDetail'] env = ex['EnvironmentDetail'] env_detail = Stackify::LogGroup::Log::Error::EnvironmentDetail.new env_detail.device_name = env['DeviceName'].to_s env_detail.application_name = env['AppName'].to_s env_detail.application_location = env['AppLocation'].to_s env_detail.configured_application_name = env['ConfiguredAppName'].to_s env_detail.configured_environment_name = env['ConfiguredEnvironmentName'].to_s log_error.environment_detail = env_detail end if ex['Error'] err = ex['Error'] error_item = Stackify::LogGroup::Log::Error::ErrorItem.new error_item.message = err['Message'].to_s error_item.error_type = err['ErrorType'].to_s error_item.error_type_code = err['ErrorTypeCode'].to_s if err['Data'] map_data = Google::Protobuf::Map.new(:string, :string) err['Data'].each { |key, value| map_data["#{key}"] = value } error_item.data = map_data end error_item.inner_error = err['InnerError'] error_item.source_method = err['SourceMethod'].to_s if err['StackTrace'] stack = err['StackTrace'] stack.each do |stk| trace_frame = Stackify::LogGroup::Log::Error::ErrorItem::TraceFrame.new trace_frame.code_filename = stk['CodeFileName'].to_s trace_frame.line_number = stk['LineNum'].to_i trace_frame.method = stk['Method'].to_s error_item.stacktrace.push(trace_frame) end end log_error.error_item = error_item end if ex['WebRequestDetail'] req_details = ex['WebRequestDetail'] web_request = Stackify::LogGroup::Log::Error::WebRequestDetail.new web_request.user_ip_address = req_details['UserIPAddress'].to_s web_request.http_method = req_details['HttpMethod'].to_s web_request.request_url = req_details['RequestUrl'].to_s web_request.request_url_root = req_details['RequestUrlRoot'].to_s web_request.referral_url = req_details['ReferralUrl'].to_s web_request.post_data_raw = req_details['PostDataRaw'].to_s log_error.web_request_detail = web_request end if !ex['ServerVariables'].empty? map_server_vars = Google::Protobuf::Map.new(:string, :string) ex['ServerVariables'].each { |key, value| map_server_vars["#{key.to_s}"] = value.to_s } log_error.server_variables = map_server_vars end log.error = log_error end log rescue => exception Stackify.internal_log :info, "[ProtobufLogObject] Error: " Stackify.internal_log :info, exception end end