Include base files and install

demo-logs-iteration2
Alberto Miedes Garcés 4 years ago
parent 027a91deab
commit 84d0b8e5b1

@ -24,6 +24,7 @@ Development
* Modify .gitignore
* Install Carto::Common::Logger with JSON support ([#15762](https://github.com/CartoDB/cartodb/pull/15762))
* Return all shared datasets ([#15767](https://github.com/CartoDB/cartodb/pull/15767))
* Migrate traces to new Carto::Common::Logger ([#15776](https://github.com/CartoDB/cartodb/pull/15776))
4.39.0 (2020-07-20)
-------------------

@ -0,0 +1,24 @@
module LoggerControllerHelper
extend ActiveSupport::Concern
include ::LoggerHelper
def log_rescue_from(hook_id, exception)
log_info(message: 'Captured exception in rescue_from hook', exception: exception, hook_id: hook_id)
end
private
def log_context
{
current_user: current_user&.username,
request_id: request.uuid,
controller: controller_id
}.with_indifferent_access
end
def controller_id
"#{self.class.name}##{action_name}"
end
end

@ -0,0 +1,65 @@
module LoggerHelper
extend ActiveSupport::Concern
def log_debug(params = {})
rails_log(:debug, params)
end
def log_info(params = {})
rails_log(:info, params)
end
def log_warning(params = {})
rails_log(:warn, params)
end
def log_error(params = {})
rails_log(:error, params)
send_exception_to_rollbar(params)
end
def log_fatal(params = {})
rails_log(:fatal, params)
send_exception_to_rollbar(params)
end
private
def rails_log(level, params)
parsed_params = {}.with_indifferent_access
params.each do |key, value|
if value.is_a?(Exception)
parsed_params[:exception] = { class: value.class.name, message: value.message, backtrace_hint: value.backtrace&.take(5) }
parsed_params[:message] = value.message if params[:message].blank?
elsif value.is_a?(User) || value.is_a?(Carto::User)
parsed_params[key] = value.username
elsif value.is_a?(Organization) || value.is_a?(Carto::Organization)
parsed_params[key] = value.name
else
parsed_params[key] = value
end
end
Rails.logger.send(level, log_context.merge(parsed_params))
end
def send_exception_to_rollbar(params)
exception = params[:exception]
message = params[:message]
if message && exception && exception.is_a?(Exception)
Rollbar.error(exception, message)
else
Rollbar.error(exception || message)
end
end
# Can be overriden in more specific contexts to add additional information.
# Example: current_user and request_id in a controller
def log_context
{}.with_indifferent_access
end
end

@ -1,6 +1,8 @@
CartoDB::Application.configure do
# Settings specified here will take precedence over those in config/application.rb
ActiveSupport::Dependencies.autoload_paths << File::join(Rails.root, 'lib')
# The test environment is used exclusively to run your application's
# test suite. You never need to work with it otherwise. Remember that
# your test database is "scratch space" for the test suite and is wiped

@ -1 +1,5 @@
Carto::Common::Logger.install
Carto::Common::Logger.install
# Log more easily from all models
ActiveRecord::Base.class_eval { include ::LoggerHelper }
Sequel::Model.class_eval { include ::LoggerHelper }

Loading…
Cancel
Save