Class: ActiveRecord::SqlAnalyzer::RedactedLogger
- Inherits:
-
CompactLogger
- Object
- Logger
- CompactLogger
- ActiveRecord::SqlAnalyzer::RedactedLogger
- Defined in:
- lib/active_record/sql_analyzer/redacted_logger.rb
Instance Attribute Summary
Attributes inherited from CompactLogger
#definition_log_file, #logged_shas
Attributes inherited from Logger
#config, #log_file, #log_prefix, #log_root
Instance Method Summary collapse
Methods inherited from CompactLogger
Methods inherited from Logger
Constructor Details
This class inherits a constructor from ActiveRecord::SqlAnalyzer::CompactLogger
Instance Method Details
#filter_caller(kaller) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/active_record/sql_analyzer/redacted_logger.rb', line 23 def filter_caller(kaller) kaller = if config[:ambiguous_tracers].any? { |regex| kaller.first =~ regex } kaller[0, config[:ambiguous_backtrace_lines]].join(", ") else kaller.first end return '' unless kaller config[:backtrace_redactors].each do |redactor| kaller.gsub!(redactor.search, redactor.replace) end kaller end |
#filter_event(event) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/active_record/sql_analyzer/redacted_logger.rb', line 4 def filter_event(event) # Determine if we're doing extended tracing or only the first calls = event.delete(:calls).map do |call| { sql: filter_sql(call[:sql]), caller: filter_caller(call[:caller]) } end # De-duplicate redacted calls to avoid many transactions with looping "N+1" queries. calls.uniq! event[:sql] = calls.map { |call| call[:sql] } event[:caller] = calls.map { |call| call[:caller] }.join(';; ') if event[:sql].size == 1 event[:sql] = event[:sql].first else event[:sql] = event[:sql].join('; ') + ';' end end |
#filter_sql(sql) ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/active_record/sql_analyzer/redacted_logger.rb', line 39 def filter_sql(sql) config[:sql_redactors].each do |redactor| sql.gsub!(redactor.search, redactor.replace) end sql end |