File tree 5 files changed +52
-7
lines changed
lib/rails_semantic_logger
5 files changed +52
-7
lines changed Original file line number Diff line number Diff line change @@ -56,6 +56,20 @@ class Engine < ::Rails::Engine
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 @@ class Engine < ::Rails::Engine
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
Original file line number Diff line number Diff line change 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 @@ def logger
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
Original file line number Diff line number Diff line change @@ -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 @@ def logger
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
Original file line number Diff line number Diff line change 1
1
module RailsSemanticLogger #:nodoc
2
- VERSION = '4.0.1 '
2
+ VERSION = '4.1.0 '
3
3
end
Original file line number Diff line number Diff line change @@ -18,5 +18,5 @@ Gem::Specification.new do |spec|
18
18
spec . has_rdoc = true
19
19
spec . required_ruby_version = '>= 2.1'
20
20
spec . add_dependency 'rails' , '>= 4.0'
21
- spec . add_dependency 'semantic_logger' , '~> 4.0 '
21
+ spec . add_dependency 'semantic_logger' , '~> 4.1 '
22
22
end
You can’t perform that action at this time.
0 commit comments