Module: Tartarus::Logger::ClassMethods

Defined in:
lib/tartarus/logger.rb

Instance Method Summary collapse

Instance Method Details

#log(env, exception) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/tartarus/logger.rb', line 22

def log(env, exception)
  logged = create do |logged_exception|
    if env['action_controller.instance']
      controller = env['action_controller.instance']
      group_id = "#{exception.class.name}#{exception.message.gsub(/(#<.+):(.+)(>)/,'\1\3')}#{controller.controller_path}#{controller.action_name}" 
    end

    logged_exception.exception_class = exception.class.name
    logged_exception.message = exception.message
    logged_exception.backtrace = exception.backtrace * "\n"

    logged_exception.request = self.normalize_request_data(env) if env['action_controller.instance']
    logged_exception.controller_path = controller.controller_path if controller
    logged_exception.action_name = controller.action_name if controller
    logged_exception.group_id = Digest::SHA1.hexdigest(group_id) if group_id
  end
  logged.handle_notifications
  logged
end

#normalize_request_data(env) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/tartarus/logger.rb', line 42

def normalize_request_data(env)
  request = env['action_controller.instance'].request
 
  request_details = {
    :enviroment => { :process => $$, :server => `hostname -s`.chomp },
    :session => { :variables => request.env['rack.session'].to_hash, :cookie => request.env['rack.request.cookie_hash'] },
    :http_details => { 
      :method => request.method.to_s.upcase,
      :url => "#{request.protocol}#{request.env["HTTP_HOST"]}#{request.fullpath}",
      :format => request.format.to_s,
      :parameters => request.filtered_parameters
    }
  }

  request.env.each_pair do |key, value|
    request_details[:enviroment][key.downcase] = value if key.match(/^[A-Z_]*$/)
  end

  return request_details
end