feat: add lograge to improve logging (#5423)
- Add lograge gem to improve rails logging using `LOGRAGE_ENABLED` env variable - When enabled Single line log for requests in JSON formatting - Switch sidekiq also to use JSON formatting Fixes: chatwoot/product#437 --------- Co-authored-by: Sojan Jose <sojan@pepalo.com>
This commit is contained in:
28
config/initializers/lograge.rb
Normal file
28
config/initializers/lograge.rb
Normal file
@@ -0,0 +1,28 @@
|
||||
if ActiveModel::Type::Boolean.new.cast(ENV.fetch('LOGRAGE_ENABLED', false)).present?
|
||||
require 'lograge'
|
||||
|
||||
Rails.application.configure do
|
||||
config.lograge.enabled = true
|
||||
config.lograge.formatter = Lograge::Formatters::Json.new
|
||||
|
||||
config.lograge.custom_payload do |controller|
|
||||
{
|
||||
host: controller.request.host,
|
||||
remote_ip: controller.request.remote_ip,
|
||||
user_id: controller.current_user.try(:id)
|
||||
}
|
||||
end
|
||||
|
||||
config.lograge.custom_options = lambda do |event|
|
||||
param_exceptions = %w[controller action format id]
|
||||
{
|
||||
params: event.payload[:params]&.except(*param_exceptions)
|
||||
}
|
||||
end
|
||||
|
||||
config.lograge.ignore_custom = lambda do |event|
|
||||
# ignore update_presence events in log
|
||||
return true if event.payload[:channel_class] == 'RoomChannel'
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -7,6 +7,7 @@ Sidekiq.configure_client do |config|
|
||||
end
|
||||
|
||||
Sidekiq.configure_server do |config|
|
||||
config.logger.formatter = Sidekiq::Logger::Formatters::JSON.new
|
||||
config.redis = Redis::Config.app
|
||||
config.logger.level = Logger.const_get(ENV.fetch('LOG_LEVEL', 'info').upcase.to_s)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user