Class: MongoRequestLogger::LogMessage
- Inherits:
-
Object
- Object
- MongoRequestLogger::LogMessage
- Defined in:
- lib/mongo_request_logger/log_message.rb
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
Instance Method Summary collapse
- #[](param) ⇒ Object
- #args ⇒ Object
- #as_json(options = {}) ⇒ Object
- #exception ⇒ Object
- #extra(exclude = []) ⇒ Object
- #id ⇒ Object
-
#initialize(data = {}) ⇒ LogMessage
constructor
A new instance of LogMessage.
- #ip ⇒ Object
- #messages ⇒ Object
- #params ⇒ Object
- #path ⇒ Object
- #referer ⇒ Object
- #response ⇒ Object
- #runtime ⇒ Object
- #tags ⇒ Object
- #time ⇒ Object
- #timestamp ⇒ Object
-
#user ⇒ Object
One of: ” ‘user_id’ ‘user_name’ ‘user_id - user_name’.
- #user_agent ⇒ Object
- #user_id ⇒ Object
Constructor Details
#initialize(data = {}) ⇒ LogMessage
Returns a new instance of LogMessage.
8 9 10 |
# File 'lib/mongo_request_logger/log_message.rb', line 8 def initialize data={} @data = data end |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
6 7 8 |
# File 'lib/mongo_request_logger/log_message.rb', line 6 def data @data end |
Instance Method Details
#[](param) ⇒ Object
12 13 14 |
# File 'lib/mongo_request_logger/log_message.rb', line 12 def [](param) @data[param.to_s] end |
#args ⇒ Object
117 118 119 120 121 |
# File 'lib/mongo_request_logger/log_message.rb', line 117 def args if self[:args] self[:args].map { |arg| arg.to_s.truncate(50) } end end |
#as_json(options = {}) ⇒ Object
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
# File 'lib/mongo_request_logger/log_message.rb', line 147 def as_json(={}) base = { id: id, time: time, path: path, referer: referer, tags: , user: user, ip: ip, response: response, user_agent: user_agent, runtime: runtime, timestamp: , } if [:all] base.merge({ extra: extra(%w(_id path timestamp response exception messages tags args)), messages: , exception: exception, data: @data, }) else base end end |
#exception ⇒ Object
106 107 108 109 110 111 112 113 114 115 |
# File 'lib/mongo_request_logger/log_message.rb', line 106 def exception if self[:exception] if self[:exception]['code'] "#{self[:exception]['class']} - [#{self[:exception]['code']}] #{self[:exception]['message']}" if self[:exception] else "#{self[:exception]['class']} - #{self[:exception]['message']}" if self[:exception] end end end |
#extra(exclude = []) ⇒ Object
175 176 177 178 179 180 181 182 183 |
# File 'lib/mongo_request_logger/log_message.rb', line 175 def extra exclude=[] result = {} @data.each do |key, value| next if exclude.include? key.to_s next if value.blank? result[key.to_s.titlecase] = value end result end |
#id ⇒ Object
16 17 18 |
# File 'lib/mongo_request_logger/log_message.rb', line 16 def id self[:_id].to_s end |
#ip ⇒ Object
139 140 141 |
# File 'lib/mongo_request_logger/log_message.rb', line 139 def ip self[:ip] || '' end |
#messages ⇒ Object
86 87 88 |
# File 'lib/mongo_request_logger/log_message.rb', line 86 def self[:messages] end |
#params ⇒ Object
123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/mongo_request_logger/log_message.rb', line 123 def params if self[:params].is_a? Array result = [] self[:params].each do |key, value| result << "#{key}: #{value.inspect.truncate(100)}" end result.join(", ") elsif self[:params].is_a? String self[:params] end end |
#path ⇒ Object
49 50 51 |
# File 'lib/mongo_request_logger/log_message.rb', line 49 def path self[:path] end |
#referer ⇒ Object
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 |
# File 'lib/mongo_request_logger/log_message.rb', line 20 def referer referer = self[:referer] referer_data = { 'annotation' => '' } # parse google adwords HTTP_REFERERs for actual referer page on display network if referer.nil? or referer.empty? referer_data['url'] = '' elsif referer.include? 'http://googleads.g.doubleclick.net' uri = URI(referer) params = ::Rack::Utils.parse_nested_query(uri.query) referer_data['url'] = params['url'] referer_data['annotation'] = 'AdWords Display Network' # parse google adwords SERP clicks for actual SERP page elsif referer.include?('google') and referer.include?('aclk') and referer.include?('adurl') uri = URI(referer) params = ::Rack::Utils.parse_nested_query(uri.query) referer_data['url'] = "http://#{uri.host}/?q=#{CGI::escape(params['q'])}" referer_data['annotation'] = 'Adwords Google Search' else referer_data['url'] = referer end referer_data end |
#response ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/mongo_request_logger/log_message.rb', line 90 def response response_code = self[:response] if self[:exception] response_description = self[:exception]['class'] else response_class = Net::HTTPResponse::CODE_TO_OBJ[self[:response].to_s] if response_class response_description = response_class.name.split("::HTTP").last else response_description = 'OK' end end [response_code, response_description].select {|v| v != nil}.join(" - ") end |
#runtime ⇒ Object
53 54 55 |
# File 'lib/mongo_request_logger/log_message.rb', line 53 def runtime "%.3f" % (self[:runtime] / 1000.0) if self[:runtime] end |
#tags ⇒ Object
143 144 145 |
# File 'lib/mongo_request_logger/log_message.rb', line 143 def (self[:tags] || []) - %w(rack) end |
#time ⇒ Object
82 83 84 |
# File 'lib/mongo_request_logger/log_message.rb', line 82 def time self[:timestamp].getlocal.strftime("%y-%m-%d %H:%M:%S") if self[:timestamp] end |
#timestamp ⇒ Object
135 136 137 |
# File 'lib/mongo_request_logger/log_message.rb', line 135 def (self[:timestamp].to_f * 1000).to_i end |
#user ⇒ Object
One of: ” ‘user_id’ ‘user_name’ ‘user_id - user_name’
62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/mongo_request_logger/log_message.rb', line 62 def user if self[:user_name] || self[:user_email] { name: (self[:user_name] or ''), email: (self[:user_email] or ''), email_md5: Digest::MD5.hexdigest((self[:user_email] or '')) } else nil end end |
#user_agent ⇒ Object
78 79 80 |
# File 'lib/mongo_request_logger/log_message.rb', line 78 def user_agent self[:user_agent] end |
#user_id ⇒ Object
74 75 76 |
# File 'lib/mongo_request_logger/log_message.rb', line 74 def user_id self[:user_id] end |