← ClaudeAtlas

rails-logginglisted

Rails logging and observability — Lograge for structured one-line request logs, tagged logging with request/user context, sensitive parameter filtering, ActiveSupport::Notifications for custom instrumentation, Sentry/error-tracker integration, health check endpoints, and log-level configuration. Use when setting up a new app's observability stack, debugging noisy logs, or adding structured logging.
mickzijdel/rails-toolkit · ★ 0 · AI & Automation · score 70
Install: claude install-skill mickzijdel/rails-toolkit
# Rails Logging and Observability ## 1. Lograge — structured one-line request logs The default Rails request log is multi-line and noisy. Lograge collapses it to one structured JSON line per request, suitable for log aggregators (Datadog, Loki, Splunk). ```ruby # Gemfile gem "lograge" # config/initializers/lograge.rb Rails.application.configure do config.lograge.enabled = true config.lograge.formatter = Lograge::Formatters::Json.new config.lograge.custom_options = lambda do |event| { request_id: event.payload[:headers]["X-Request-Id"], user_id: event.payload[:user_id], account_id: event.payload[:account_id], }.compact end end ``` Add user context from the controller: ```ruby class ApplicationController < ActionController::Base def append_info_to_payload(payload) super payload[:user_id] = current_user&.id payload[:account_id] = current_account&.id end end ``` ## 2. Tagged logging Wrap every log line in a request with identifiers so you can grep a full request's story: ```ruby # config/application.rb config.log_tags = [:request_id] # For custom tags (Rails 7.1+) config.log_tags = [ :request_id, ->(req) { req.session[:account_id] }, ] ``` In application code, use `Rails.logger.tagged` for sub-operations: ```ruby Rails.logger.tagged("BatchImport", batch.id) do batch.rows.each { |row| import_row(row) } end ``` **Use Lograge OR tagged logging, not both** — Lograge replaces the multi-line format that `log_ta