rails_semantic_logger 4.0.1 → 4.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3e9c2ffe09cf14071b342b13be6aad0d0aa8935b
4
- data.tar.gz: 8852db53880093561eeedd13700f7c538614e874
3
+ metadata.gz: 10d16b755cfd965d39a2d7b4d757197633110f70
4
+ data.tar.gz: 2a1214833f2f880d9e826a237945235aa9786a64
5
5
  SHA512:
6
- metadata.gz: 28d83ef103945904e2c0817fbf0b9a26baa36cfd9bb644de64b0f172155c5767b49f8bd57b30c6da1b10d80555e352a113333f7884e9779227505d7e9b4fa67f
7
- data.tar.gz: fc0d516bdeaf189cd363e7c7e578c40a10a538a461d53ec12e094a958314def91a9eba6b053a9890378f274e43ffb02180bf703327368400dd395dd828016b0e
6
+ metadata.gz: b089694f067de7d2622a8961742888192a1f5f047605df8c7dbc420aff026257063ae7222e2a50ca42270a4d33540e70d40836092879a6e20a4b36806499721a
7
+ data.tar.gz: c0a42f4aee7497fcdbefb34b3117bada04d36efdfc6d6d04ae02c6090847973787b1719b6c77b2f229dea2ba92ca826672cc1b30d929bc164896a8be0c8b2138
@@ -56,6 +56,20 @@ module RailsSemanticLogger
56
56
  # Silence asset logging
57
57
  config.rails_semantic_logger.quiet_assets = false
58
58
 
59
+ # Hash of named tags.
60
+ # Use in a similar fashion to the Rails config.log_tags, except that it is now a hash.
61
+ #
62
+ # Example:
63
+ # config.rails_semantic_logger.named_tags = {
64
+ # request_id: :request_id,
65
+ # ip: :remote_ip,
66
+ # user: -> request { request.cookie_jar['login'] }
67
+ # }
68
+ #
69
+ # Notes:
70
+ # - Nil Values are ignored and will be left out of the named tags.
71
+ config.rails_semantic_logger.named_tags = nil
72
+
59
73
  # Initialize SemanticLogger. In a Rails environment it will automatically
60
74
  # insert itself above the configured rails logger to add support for its
61
75
  # additional features
@@ -194,6 +208,10 @@ module RailsSemanticLogger
194
208
  if config.rails_semantic_logger.processing
195
209
  require('rails_semantic_logger/extensions/action_controller/log_subscriber_processing') if defined?(ActionView::LogSubscriber)
196
210
  end
211
+
212
+ if config.rails_semantic_logger.named_tags && defined?(Rails::Rack::Logger)
213
+ Rails::Rack::Logger.named_tags = config.rails_semantic_logger.named_tags
214
+ end
197
215
  end
198
216
 
199
217
  # Before any initializers run, but after the gems have been loaded
@@ -11,7 +11,7 @@ module ActionController
11
11
  def process_action(event)
12
12
  controller_logger(event).info do
13
13
  payload = event.payload.dup
14
- payload[:params].except!(*INTERNAL_PARAMS)
14
+ payload[:params] = payload[:params].to_unsafe_h.except(*INTERNAL_PARAMS)
15
15
  payload.delete(:params) if payload[:params].empty?
16
16
 
17
17
  format = payload[:format]
@@ -69,6 +69,7 @@ module ActionController
69
69
  expire_fragment expire_page write_page).each do |method|
70
70
  class_eval <<-METHOD, __FILE__, __LINE__ + 1
71
71
  def #{method}(event)
72
+ return unless ActionController::Base.enable_fragment_cache_logging
72
73
  controller_logger(event).info do
73
74
  key_or_path = event.payload[:key] || event.payload[:path]
74
75
  {message: "#{method.to_s.humanize} \#{key_or_path}", duration: event.duration}
@@ -4,10 +4,20 @@ Rails::Rack::Logger
4
4
  module Rails
5
5
  module Rack
6
6
  class Logger
7
- @@logger = SemanticLogger['Rack']
7
+ mattr_accessor :named_tags
8
+
9
+ @logger = SemanticLogger['Rack']
8
10
 
9
11
  def self.logger
10
- @@logger
12
+ @logger
13
+ end
14
+
15
+ def call(env)
16
+ request = ActionDispatch::Request.new(env)
17
+
18
+ proc = -> { call_app(request, env) }
19
+ proc = -> { logger.tagged(compute_tags(request), &proc) } if @taggers && !@taggers.empty?
20
+ named_tags ? SemanticLogger.named_tagged(compute_named_tags(request), &proc) : proc.call
11
21
  end
12
22
 
13
23
  def started_request_message(request)
@@ -27,6 +37,23 @@ module Rails
27
37
  self.class.logger
28
38
  end
29
39
 
40
+ def compute_named_tags(request) # :doc:
41
+ tagged = {}
42
+ named_tags.each_pair do |tag, value|
43
+ resolved =
44
+ case value
45
+ when Proc
46
+ value.call(request)
47
+ when Symbol
48
+ request.send(value)
49
+ else
50
+ value
51
+ end
52
+ tagged[tag] = resolved unless resolved.nil?
53
+ end
54
+ tagged
55
+ end
56
+
30
57
  end
31
58
  end
32
59
  end
@@ -5,7 +5,7 @@ module Rails
5
5
  module Rack
6
6
  class Logger
7
7
  def self.logger
8
- @@logger
8
+ @logger
9
9
  end
10
10
 
11
11
  private
@@ -23,8 +23,8 @@ module Rails
23
23
  self.class.logger
24
24
  end
25
25
 
26
- @@logger = SemanticLogger['Rack']
27
- @@logger.extend(LogInfoAsDebug)
26
+ @logger = SemanticLogger['Rack']
27
+ @logger.extend(LogInfoAsDebug)
28
28
  end
29
29
  end
30
30
  end
@@ -1,3 +1,3 @@
1
1
  module RailsSemanticLogger #:nodoc
2
- VERSION = '4.0.1'
2
+ VERSION = '4.1.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_semantic_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reid Morrison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-13 00:00:00.000000000 Z
11
+ date: 2017-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '4.0'
33
+ version: '4.1'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '4.0'
40
+ version: '4.1'
41
41
  description: Replaces the default Rails logger with SemanticLogger
42
42
  email:
43
43
  - reidmo@gmail.com