rails_semantic_logger 4.1.3 → 4.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +17 -10
  3. data/Rakefile +9 -9
  4. data/lib/rails_semantic_logger/action_controller/log_subscriber.rb +125 -0
  5. data/lib/rails_semantic_logger/action_mailer/log_subscriber.rb +135 -0
  6. data/lib/rails_semantic_logger/action_view/log_subscriber.rb +111 -0
  7. data/lib/rails_semantic_logger/active_job/log_subscriber.rb +126 -0
  8. data/lib/rails_semantic_logger/active_record/log_subscriber.rb +218 -0
  9. data/lib/rails_semantic_logger/delayed_job/plugin.rb +11 -0
  10. data/lib/rails_semantic_logger/engine.rb +189 -194
  11. data/lib/rails_semantic_logger/extensions/action_cable/tagged_logger_proxy.rb +1 -1
  12. data/lib/rails_semantic_logger/extensions/action_controller/live.rb +8 -4
  13. data/lib/rails_semantic_logger/extensions/action_dispatch/debug_exceptions.rb +11 -7
  14. data/lib/rails_semantic_logger/extensions/action_view/streaming_template_renderer.rb +10 -6
  15. data/lib/rails_semantic_logger/extensions/active_job/logging.rb +10 -6
  16. data/lib/rails_semantic_logger/extensions/active_model_serializers/logging.rb +12 -9
  17. data/lib/rails_semantic_logger/extensions/active_support/logger.rb +24 -0
  18. data/lib/rails_semantic_logger/extensions/active_support/tagged_logging.rb +8 -0
  19. data/lib/rails_semantic_logger/extensions/mongoid/config.rb +11 -0
  20. data/lib/rails_semantic_logger/extensions/rack/server.rb +12 -0
  21. data/lib/rails_semantic_logger/extensions/rails/server.rb +9 -5
  22. data/lib/rails_semantic_logger/options.rb +122 -0
  23. data/lib/rails_semantic_logger/rack/logger.rb +100 -0
  24. data/lib/rails_semantic_logger/version.rb +2 -2
  25. data/lib/rails_semantic_logger.rb +58 -3
  26. metadata +46 -24
  27. data/lib/rails_semantic_logger/extensions/action_controller/log_subscriber.rb +0 -107
  28. data/lib/rails_semantic_logger/extensions/action_controller/log_subscriber_processing.rb +0 -28
  29. data/lib/rails_semantic_logger/extensions/action_view/log_subscriber.rb +0 -12
  30. data/lib/rails_semantic_logger/extensions/active_record/log_subscriber.rb +0 -44
  31. data/lib/rails_semantic_logger/extensions/rails/rack/logger.rb +0 -63
  32. data/lib/rails_semantic_logger/extensions/rails/rack/logger_info_as_debug.rb +0 -30
@@ -1,107 +0,0 @@
1
- require 'action_controller/log_subscriber'
2
- ActionController::LogSubscriber
3
-
4
- module ActionController
5
- class LogSubscriber
6
- # Log as debug to hide Processing messages in production
7
- def start_processing(event)
8
- controller_logger(event).debug { "Processing ##{event.payload[:action]}" }
9
- end
10
-
11
- def process_action(event)
12
- controller_logger(event).info do
13
- payload = event.payload.dup
14
- # According to PR https://github.com/rocketjob/rails_semantic_logger/pull/37/files
15
- # payload[:params] is not always a Hash.
16
- payload[:params] = payload[:params].to_unsafe_h unless payload[:params].is_a?(Hash)
17
- payload[:params].except!(*INTERNAL_PARAMS)
18
- payload.delete(:params) if payload[:params].empty?
19
-
20
- format = payload[:format]
21
- payload[:format] = format.to_s.upcase if format.is_a?(Symbol)
22
-
23
- payload[:path] = extract_path(payload[:path]) if payload.has_key?(:path)
24
-
25
- exception = payload.delete(:exception)
26
- if payload[:status].nil? && exception.present?
27
- exception_class_name = exception.first
28
- payload[:status] = ActionDispatch::ExceptionWrapper.status_code_for_exception(exception_class_name)
29
- end
30
-
31
- # Rounds off the runtimes. For example, :view_runtime, :mongo_runtime, etc.
32
- payload.keys.each do |key|
33
- payload[key] = payload[key].to_f.round(2) if key.to_s.match(/(.*)_runtime/)
34
- end
35
-
36
- payload[:status_message] = Rack::Utils::HTTP_STATUS_CODES[payload[:status]] if payload[:status].present?
37
- # Causes excessive log output with Rails 5 RC1
38
- payload.delete(:headers)
39
-
40
- {
41
- message: "Completed ##{payload[:action]}",
42
- duration: event.duration,
43
- payload: payload
44
- }
45
- end
46
- end
47
-
48
- def halted_callback(event)
49
- controller_logger(event).info {"Filter chain halted as #{event.payload[:filter].inspect} rendered or redirected"}
50
- end
51
-
52
- def send_file(event)
53
- controller_logger(event).info('Sent file') {{path: event.payload[:path], duration: event.duration}}
54
- end
55
-
56
- def redirect_to(event)
57
- controller_logger(event).info('Redirected to') {{location: event.payload[:location]}}
58
- end
59
-
60
- def send_data(event)
61
- controller_logger(event).info('Sent data') {{file_name: event.payload[:filename], duration: event.duration}}
62
- end
63
-
64
- def unpermitted_parameters(event)
65
- controller_logger(event).debug do
66
- unpermitted_keys = event.payload[:keys]
67
- "Unpermitted parameter#{'s' if unpermitted_keys.size > 1}: #{unpermitted_keys.join(", ")}"
68
- end
69
- end
70
-
71
- %w(write_fragment read_fragment exist_fragment?
72
- expire_fragment expire_page write_page).each do |method|
73
- class_eval <<-METHOD, __FILE__, __LINE__ + 1
74
- def #{method}(event)
75
- # enable_fragment_cache_logging as of Rails 5
76
- return if ActionController::Base.respond_to?(:enable_fragment_cache_logging) && !ActionController::Base.enable_fragment_cache_logging
77
- controller_logger(event).info do
78
- key_or_path = event.payload[:key] || event.payload[:path]
79
- {message: "#{method.to_s.humanize} \#{key_or_path}", duration: event.duration}
80
- end
81
- end
82
- METHOD
83
- end
84
-
85
- private
86
-
87
- # Returns the logger for the supplied event.
88
- # Returns ActionController::Base.logger if no controller is present
89
- def controller_logger(event)
90
- if controller = event.payload[:controller]
91
- begin
92
- controller.constantize.logger
93
- rescue NameError
94
- ActionController::Base.logger
95
- end
96
- else
97
- ActionController::Base.logger
98
- end
99
- end
100
-
101
- def extract_path(path)
102
- index = path.index('?')
103
- index ? path[0, index] : path
104
- end
105
-
106
- end
107
- end
@@ -1,28 +0,0 @@
1
- require 'action_controller/log_subscriber'
2
- ActionController::LogSubscriber
3
-
4
- module ActionController
5
- class LogSubscriber
6
- # Log as info to show Processing messages in production
7
- def start_processing(event)
8
- controller_logger(event).info { "Processing ##{event.payload[:action]}" }
9
- end
10
-
11
- private
12
-
13
- # Returns the logger for the supplied event.
14
- # Returns ActionController::Base.logger if no controller is present
15
- def controller_logger(event)
16
- if controller = event.payload[:controller]
17
- begin
18
- controller.constantize.logger
19
- rescue NameError
20
- ActionController::Base.logger
21
- end
22
- else
23
- ActionController::Base.logger
24
- end
25
- end
26
-
27
- end
28
- end
@@ -1,12 +0,0 @@
1
- ActionView::LogSubscriber
2
- module ActionView
3
- class LogSubscriber
4
- def info(message = nil, &block)
5
- debug(message, &block)
6
- end
7
-
8
- def info?
9
- debug?
10
- end
11
- end
12
- end
@@ -1,44 +0,0 @@
1
- ActiveRecord::LogSubscriber
2
- module ActiveRecord
3
- class LogSubscriber
4
- def sql(event)
5
- self.class.runtime += event.duration
6
-
7
- return unless logger.debug?
8
-
9
- payload = event.payload
10
- name = payload[:name]
11
- return if IGNORE_PAYLOAD_NAMES.include?(name)
12
-
13
- log_payload = {
14
- sql: payload[:sql],
15
- }
16
- log = {
17
- message: name,
18
- payload: log_payload,
19
- duration: event.duration
20
- }
21
- unless (payload[:binds] || []).empty?
22
- log_payload[:binds] = binds = {}
23
- if Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR == 0 && Rails::VERSION::TINY <= 2
24
- payload[:binds].each do |attr|
25
- attr_name, value = render_bind(attr)
26
- binds[attr_name] = value
27
- end
28
- elsif Rails::VERSION::MAJOR >= 5
29
- casted_params = type_casted_binds(payload[:binds], payload[:type_casted_binds])
30
- payload[:binds].zip(casted_params).map { |attr, value|
31
- render_bind(attr, value)
32
- }
33
- else
34
- payload[:binds].each do |col, v|
35
- attr_name, value = render_bind(col, v)
36
- binds[attr_name] = value
37
- end
38
- end
39
- end
40
- debug(log)
41
- end
42
-
43
- end
44
- end
@@ -1,63 +0,0 @@
1
- Rails::Rack::Logger
2
-
3
- # Replace rack started message with a semantic equivalent
4
- module Rails
5
- module Rack
6
- class Logger
7
- @logger = SemanticLogger['Rack']
8
-
9
- def self.logger
10
- @logger
11
- end
12
-
13
- def call(env)
14
- request = ActionDispatch::Request.new(env)
15
-
16
- # Check for named tags (Hash)
17
- if @taggers && !@taggers.empty?
18
- tags = @taggers.is_a?(Hash) ? compute_named_tags(request) : compute_tags(request)
19
- logger.tagged(tags) { call_app(request, env) }
20
- else
21
- call_app(request, env)
22
- end
23
- end
24
-
25
- def started_request_message(request)
26
- {
27
- message: 'Started',
28
- payload: {
29
- method: request.request_method,
30
- path: request.filtered_path,
31
- ip: request.ip
32
- }
33
- }
34
- end
35
-
36
- private
37
-
38
- def logger
39
- self.class.logger
40
- end
41
-
42
- # Leave out any named tags with a nil value
43
- def compute_named_tags(request) # :doc:
44
- tagged = {}
45
- @taggers.each_pair do |tag, value|
46
- resolved =
47
- case value
48
- when Proc
49
- value.call(request)
50
- when Symbol
51
- request.send(value)
52
- else
53
- value
54
- end
55
- tagged[tag] = resolved unless resolved.nil?
56
- end
57
- tagged
58
- end
59
-
60
- end
61
- end
62
- end
63
-
@@ -1,30 +0,0 @@
1
- Rails::Rack::Logger
2
-
3
- # Drop rack Started message to debug level message
4
- module Rails
5
- module Rack
6
- class Logger
7
- def self.logger
8
- @logger
9
- end
10
-
11
- private
12
-
13
- module LogInfoAsDebug
14
- def info(*args, &block)
15
- debug(*args, &block)
16
- end
17
- def info?
18
- debug?
19
- end
20
- end
21
-
22
- def logger
23
- self.class.logger
24
- end
25
-
26
- @logger = SemanticLogger['Rack']
27
- @logger.extend(LogInfoAsDebug)
28
- end
29
- end
30
- end