request_headers_logger 0.0.4 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 470b462a8ffc11750785e8efc88d477d2efd61f5
4
- data.tar.gz: ff88013a271b1c3f21b9b91219007b3b6016a45a
2
+ SHA256:
3
+ metadata.gz: e7b41746047401b957cc85417b20f911cde79f6ae69ba703ec582941965c1650
4
+ data.tar.gz: 613329a86a1352f39f01a5a815d56813ccc7c1bf186c60610f4371f8895b8ce2
5
5
  SHA512:
6
- metadata.gz: 10084ec99b39e60ff233e5426ba82d6a47f021732dfc09780168cd966fb3940f45672386b92bfc47012212f77c341aa4e6ae74e7c2127d2cb70de6a3caba562d
7
- data.tar.gz: 83bdd44b690bccf5714590a14984c292efc2006c2d7c37036cab309b5aaa4ed11d0eecf1066ef09de0e37b8342b89d21005a315271036d3b28be26a1b9c299c8
6
+ metadata.gz: 512d286d34c872bb01134c8e1b5f55a793c9db473b57c1d3227a110d525ea1ada3c167619ab2445beea4a3945e8e616ab5b8e8090a5a262729b13603e708eaf8
7
+ data.tar.gz: e72953e00874b9ffa7154dd12bd04064357e43e391784022f57662bc60deb5da60c2830ef9067649ec6f3b4151f8c9f1ebacff15e1f3b0879adea7a8ae517eed
data/.gitignore CHANGED
@@ -13,3 +13,4 @@ rdoc
13
13
  spec/reports
14
14
  tmp
15
15
  .byebug_history
16
+ Gemfile.lock
@@ -8,12 +8,6 @@ rvm:
8
8
 
9
9
  before_install: gem install bundler
10
10
 
11
- script: bin/travis
12
-
13
- matrix:
14
- fast_finish: true
15
-
16
- env:
17
- matrix:
18
- - BUILD_TYPE=rspec
19
- - BUILD_TYPE=rubocop
11
+ script:
12
+ - bundle exec rspec
13
+ - bundle exec rubocop
data/README.md CHANGED
@@ -16,11 +16,11 @@ The gem can be used to share *RequestHeader* store items the asynchronous servic
16
16
 
17
17
  So how does it work with Rails.
18
18
 
19
- Add this line to your application's Gemfile:
19
+ Add this line to your application's Gemfile after the delayed job and message_queue gems:
20
20
 
21
- ``
21
+ ```ruby
22
22
  gem 'request_headers_logger'
23
- ``
23
+ ```
24
24
 
25
25
  And then execute:
26
26
 
@@ -33,11 +33,10 @@ That's it now Delayed job logs should show the *X-Request-Id* from the http requ
33
33
 
34
34
  ### Configure RequestHeadersLogger
35
35
 
36
- ```
37
- RequestHeadersLogger.configure do |config|
36
+ ```ruby
37
+ RequestHeadersLogger.configure do |config|
38
38
  config[:logger_format] = 'json' # Options [text json] default: text
39
39
  config[:tag_format] = 'key_val' # Options: [val key_val] default: val
40
- config[:Loggers] << MessageQueue.logger # List of all loggers used.
41
40
  end
42
41
  ```
43
42
 
@@ -45,6 +44,6 @@ end
45
44
 
46
45
  Per default the delayed job plug in applies a whitelist to only filter *X-Request-Id* header from the store. To white list new flags, you can do the following.
47
46
 
48
- ``
47
+ ```ruby
49
48
  RequestHeadersLogger.whitelist << "customer-id".to_sym
50
- ``
49
+ ```
@@ -6,6 +6,7 @@ require 'request_headers_logger/json_formatter'
6
6
  require 'request_headers_logger/text_formatter'
7
7
  require 'request_headers_logger/delayed_job/delayed_job'
8
8
  require 'request_headers_logger/message_queue/message_queue'
9
+ require 'request_headers_logger/railtie' if defined?(Rails)
9
10
 
10
11
  module RequestHeadersLogger # :nodoc:
11
12
  extend self
@@ -34,19 +35,13 @@ module RequestHeadersLogger # :nodoc:
34
35
  @configuration[:loggers]
35
36
  end
36
37
 
37
- def prepare_loggers
38
- loggers.each do |logger|
39
- logger_formatter logger
40
- end
41
- end
42
-
43
- private
44
-
45
38
  def logger_formatter(logger)
46
39
  logger.formatter ||= Logger::Formatter.new
47
40
  logger.formatter.extend formatter_class
48
41
  end
49
42
 
43
+ private
44
+
50
45
  def formatter_class
51
46
  RequestHeadersLogger.const_get("#{log_format.capitalize}Formatter")
52
47
  end
@@ -10,7 +10,6 @@ module RequestHeadersLogger
10
10
 
11
11
  CONFIG_KEYS = [
12
12
  :log_format, # [logger_format] default or json
13
- :loggers, # [Loggers] List of all loggers used.
14
13
  :tag_format, # [tag_format]
15
14
  ].freeze
16
15
 
@@ -20,7 +19,6 @@ module RequestHeadersLogger
20
19
  def initialize
21
20
  @configs = {
22
21
  log_format: LOG_FORMATS.first,
23
- loggers: [],
24
22
  tag_format: TAG_FORMATS.first
25
23
  }
26
24
  end
@@ -13,23 +13,12 @@ module RequestHeadersLogger
13
13
 
14
14
  lifecycle.before(:perform) do |worker, job|
15
15
  RequestHeadersMiddleware.store = job.payload_object.instance_variable_get(:@store)
16
- set_dj_loggers
17
16
  end
18
17
 
19
18
  lifecycle.after(:perform) do |worker, job|
20
19
  RequestHeadersMiddleware.store = {}
21
20
  end
22
21
  end
23
-
24
- def self.set_dj_loggers
25
- RequestHeadersLogger.configure do |config|
26
- loggers = [Delayed::Worker.logger]
27
- loggers << ::Rails.logger
28
-
29
- config[:loggers].push(loggers).flatten!.uniq!
30
- end
31
- RequestHeadersLogger.prepare_loggers
32
- end
33
22
  end
34
23
  end
35
24
 
@@ -24,21 +24,12 @@ module RequestHeadersLogger
24
24
  lifecycle.before(:consume) do |delivery_info, properties, payload|
25
25
  store = symbolize(properties.headers)&.dig(:store) || {}
26
26
  RequestHeadersMiddleware.store = store
27
-
28
- set_mq_loggers
29
27
  end
30
28
 
31
29
  lifecycle.after(:consume) do |delivery_info, properties, payload|
32
30
  RequestHeadersMiddleware.store = {}
33
31
  end
34
32
  end
35
-
36
- def self.set_mq_loggers
37
- RequestHeadersLogger.configure do |config|
38
- config[:loggers] << MessageQueue.logger
39
- end
40
- RequestHeadersLogger.prepare_loggers
41
- end
42
33
  end
43
34
  end
44
35
 
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RequestHeadersLogger
4
+ class Railtie < ::Rails::Railtie
5
+ config.after_initialize do
6
+ RequestHeadersLogger.logger_formatter(MessageQueue.logger) if defined?(MessageQueue)
7
+ if defined?(Delayed)
8
+ RequestHeadersLogger.logger_formatter(Delayed::Worker.logger)
9
+ RequestHeadersLogger.logger_formatter(Rails.logger)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -7,11 +7,22 @@ module RequestHeadersLogger
7
7
  def call(severity, time, progname, msg)
8
8
  format(::Logger::Formatter::Format,
9
9
  severity_name(severity)[0],
10
- format_datetime(time),
10
+ format_time(time),
11
11
  $PID,
12
12
  severity_name(severity),
13
13
  progname,
14
- msg2str("#{tags_text}#{msg}"))
14
+ "#{tags_text}#{to_string(msg)}")
15
+ end
16
+
17
+ def format_time(time)
18
+ return format_datetime(time) if respond_to? :format_datetime
19
+ time.strftime(@datetime_format || '%Y-%m-%dT%H:%M:%S.%6N ')
20
+ end
21
+
22
+ def to_string(msg)
23
+ return msg2str(msg) if respond_to? :format_datetime
24
+ return msg.inspect unless msg.is_a? String
25
+ msg
15
26
  end
16
27
 
17
28
  def severity_name(severity)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RequestHeadersLogger
4
- VERSION = '0.0.4'
4
+ VERSION = '1.0.0'
5
5
  end
@@ -41,21 +41,13 @@ RSpec.describe RequestHeadersLogger::Configuration do
41
41
  it 'return text as default for log_format' do
42
42
  expect(config[:log_format]).to eq('text')
43
43
  end
44
-
45
- it 'return empty array as default for loggers' do
46
- expect(config[:loggers]).to eq([])
47
- end
48
44
  end
49
45
 
50
46
  describe '[]=' do
51
47
  it 'assign valid config keys' do
52
- logger = Logger.new(STDOUT)
53
-
54
48
  config[:log_format] = 'json'
55
- config[:loggers] << logger
56
49
 
57
50
  expect(config[:log_format]).to eq('json')
58
- expect(config[:loggers].first).to eq(logger)
59
51
  end
60
52
 
61
53
  it 'raise an error for invalid configs ' do
@@ -4,42 +4,88 @@ require 'spec_helper'
4
4
 
5
5
  RSpec.describe RequestHeadersLogger::TextFormatter do
6
6
  let(:buffer) { StringIO.new }
7
- let(:logger) do
8
- logger = Logger.new(buffer)
9
- logger.progname = 'dummy'
10
- logger.formatter = Logger::Formatter.new
11
- logger.formatter.extend RequestHeadersLogger::TextFormatter
12
- logger
13
- end
14
7
 
15
- it 'output logs in a text format' do
16
- logger.info('text log message')
8
+ context 'Using a Logger::Formatter' do
9
+ let(:logger) do
10
+ logger = Logger.new(buffer)
11
+ logger.progname = 'dummy'
12
+ logger.formatter = Logger::Formatter.new
13
+ logger.formatter.extend RequestHeadersLogger::TextFormatter
14
+ logger
15
+ end
17
16
 
18
- expect(buffer.string).to match(/I, \[[0-9\-T:\.# ]*\] INFO -- dummy: text log message$/)
19
- end
17
+ it 'output logs in a text format' do
18
+ logger.info('text log message')
20
19
 
21
- context 'store has some tags' do
22
- before do
23
- RequestHeadersMiddleware.store = { 'X-Request-Id': 'ef382618', 'tag': 'SSS' }
20
+ expect(buffer.string).to match(/I, \[[0-9\-T:\.# ]*\] INFO -- dummy: text log message$/)
24
21
  end
25
22
 
26
- after do
27
- RequestHeadersMiddleware.store = {}
28
- RequestHeadersLogger.configure { |c| c[:tag_format] = 'val' }
23
+ context 'store has some tags' do
24
+ before do
25
+ RequestHeadersMiddleware.store = { 'X-Request-Id': 'ef382618', 'tag': 'SSS' }
26
+ end
27
+
28
+ after do
29
+ RequestHeadersMiddleware.store = {}
30
+ RequestHeadersLogger.configure { |c| c[:tag_format] = 'val' }
31
+ end
32
+
33
+ it 'output tags with key_val formmat' do
34
+ RequestHeadersLogger.configure { |c| c[:tag_format] = 'key_val' }
35
+ logger.info('text log message')
36
+ output = buffer.string
37
+
38
+ expect(output).to match(/I, \[[0-9\-T:\.# ]*\] INFO -- dummy: \[X-Request-Id: ef382618\] text log message$/)
39
+ end
40
+
41
+ it 'include tags in the log line' do
42
+ logger.info('text log message')
43
+
44
+ expect(buffer.string).to match(/I, \[[0-9\-T:\.# ]*\] INFO -- dummy: \[ef382618\] text log message$/)
45
+ end
46
+ end
47
+ end
48
+
49
+ context 'Using a Proc' do
50
+ let(:logger) do
51
+ logger = Logger.new(buffer)
52
+ logger.progname = 'dummy'
53
+ # rubocop:disable Metrics/LineLength
54
+ logger.formatter = proc { |severity, datetime, progname, msg| "[#{datetime} ##{Process.pid}] #{severity}: #{msg}\n" }
55
+ # rubocop:enable Metrics/LineLength
56
+ logger.formatter.extend RequestHeadersLogger::TextFormatter
57
+ logger
29
58
  end
30
59
 
31
- it 'output tags with key_val formmat' do
32
- RequestHeadersLogger.configure { |c| c[:tag_format] = 'key_val' }
60
+ it 'output logs in a text format' do
33
61
  logger.info('text log message')
34
- output = buffer.string
35
62
 
36
- expect(output).to match(/I, \[[0-9\-T:\.# ]*\] INFO -- dummy: \[X-Request-Id: ef382618\] text log message$/)
63
+ expect(buffer.string).to match(/I, \[[0-9\-T:\.# ]*\] INFO -- dummy: text log message$/)
37
64
  end
38
65
 
39
- it 'include tags in the log line' do
40
- logger.info('text log message')
66
+ context 'store has some tags' do
67
+ before do
68
+ RequestHeadersMiddleware.store = { 'X-Request-Id': 'ef382618', 'tag': 'SSS' }
69
+ end
70
+
71
+ after do
72
+ RequestHeadersMiddleware.store = {}
73
+ RequestHeadersLogger.configure { |c| c[:tag_format] = 'val' }
74
+ end
75
+
76
+ it 'output tags with key_val formmat' do
77
+ RequestHeadersLogger.configure { |c| c[:tag_format] = 'key_val' }
78
+ logger.info('text log message')
79
+ output = buffer.string
80
+
81
+ expect(output).to match(/I, \[[0-9\-T:\.# ]*\] INFO -- dummy: \[X-Request-Id: ef382618\] text log message$/)
82
+ end
83
+
84
+ it 'include tags in the log line' do
85
+ logger.info('text log message')
41
86
 
42
- expect(buffer.string).to match(/I, \[[0-9\-T:\.# ]*\] INFO -- dummy: \[ef382618\] text log message$/)
87
+ expect(buffer.string).to match(/I, \[[0-9\-T:\.# ]*\] INFO -- dummy: \[ef382618\] text log message$/)
88
+ end
43
89
  end
44
90
  end
45
91
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: request_headers_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Al-waleed Shihadeh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-17 00:00:00.000000000 Z
11
+ date: 2018-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: request_headers_middleware
@@ -68,42 +68,42 @@ dependencies:
68
68
  name: rake
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: '12.0'
74
71
  - - ">="
75
72
  - !ruby/object:Gem::Version
76
73
  version: 12.0.0
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '12.0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '12.0'
84
81
  - - ">="
85
82
  - !ruby/object:Gem::Version
86
83
  version: 12.0.0
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: '12.0'
87
87
  - !ruby/object:Gem::Dependency
88
88
  name: rspec
89
89
  requirement: !ruby/object:Gem::Requirement
90
90
  requirements:
91
- - - "~>"
92
- - !ruby/object:Gem::Version
93
- version: '3.5'
94
91
  - - ">="
95
92
  - !ruby/object:Gem::Version
96
93
  version: 3.5.0
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.5'
97
97
  type: :development
98
98
  prerelease: false
99
99
  version_requirements: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '3.5'
104
101
  - - ">="
105
102
  - !ruby/object:Gem::Version
106
103
  version: 3.5.0
104
+ - - "~>"
105
+ - !ruby/object:Gem::Version
106
+ version: '3.5'
107
107
  - !ruby/object:Gem::Dependency
108
108
  name: rubocop
109
109
  requirement: !ruby/object:Gem::Requirement
@@ -135,8 +135,7 @@ dependencies:
135
135
  description: RequestHeaderLogger Allows you to tag logs with RequestHeader flags.
136
136
  email:
137
137
  - wshihadh@gmail.com
138
- executables:
139
- - travis
138
+ executables: []
140
139
  extensions: []
141
140
  extra_rdoc_files: []
142
141
  files:
@@ -145,11 +144,9 @@ files:
145
144
  - ".ruby-version"
146
145
  - ".travis.yml"
147
146
  - Gemfile
148
- - Gemfile.lock
149
147
  - LICENSE.txt
150
148
  - README.md
151
149
  - Rakefile
152
- - bin/travis
153
150
  - lib/request_headers_logger.rb
154
151
  - lib/request_headers_logger/configuration.rb
155
152
  - lib/request_headers_logger/delayed_job/delayed_job.rb
@@ -158,6 +155,7 @@ files:
158
155
  - lib/request_headers_logger/json_formatter.rb
159
156
  - lib/request_headers_logger/message_queue/message_queue.rb
160
157
  - lib/request_headers_logger/message_queue/message_queue_plugin.rb
158
+ - lib/request_headers_logger/railtie.rb
161
159
  - lib/request_headers_logger/text_formatter.rb
162
160
  - lib/request_headers_logger/version.rb
163
161
  - request_headers_logger.gemspec
@@ -188,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
186
  version: '0'
189
187
  requirements: []
190
188
  rubyforge_project:
191
- rubygems_version: 2.5.2
189
+ rubygems_version: 2.7.8
192
190
  signing_key:
193
191
  specification_version: 4
194
192
  summary: RequestHeaderLogger Allows you to tag logs with RequestHeader flags.
@@ -1,80 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- request_headers_logger (0.0.4)
5
- request_headers_middleware (~> 0.0.4)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- activesupport (5.1.5)
11
- concurrent-ruby (~> 1.0, >= 1.0.2)
12
- i18n (~> 0.7)
13
- minitest (~> 5.1)
14
- tzinfo (~> 1.1)
15
- ast (2.4.0)
16
- concurrent-ruby (1.0.5)
17
- delayed_job (4.1.4)
18
- activesupport (>= 3.0, < 5.2)
19
- diff-lcs (1.2.5)
20
- docile (1.1.5)
21
- i18n (0.9.5)
22
- concurrent-ruby (~> 1.0)
23
- json (2.1.0)
24
- minitest (5.11.3)
25
- parallel (1.12.1)
26
- parser (2.5.0.2)
27
- ast (~> 2.4.0)
28
- powerpack (0.1.1)
29
- rack (1.6.5)
30
- rainbow (3.0.0)
31
- rake (12.0.0)
32
- request_headers_middleware (0.0.4)
33
- request_store
34
- request_store (1.4.0)
35
- rack (>= 1.4)
36
- rspec (3.5.0)
37
- rspec-core (~> 3.5.0)
38
- rspec-expectations (~> 3.5.0)
39
- rspec-mocks (~> 3.5.0)
40
- rspec-core (3.5.4)
41
- rspec-support (~> 3.5.0)
42
- rspec-expectations (3.5.0)
43
- diff-lcs (>= 1.2.0, < 2.0)
44
- rspec-support (~> 3.5.0)
45
- rspec-mocks (3.5.0)
46
- diff-lcs (>= 1.2.0, < 2.0)
47
- rspec-support (~> 3.5.0)
48
- rspec-support (3.5.0)
49
- rubocop (0.53.0)
50
- parallel (~> 1.10)
51
- parser (>= 2.5)
52
- powerpack (~> 0.1)
53
- rainbow (>= 2.2.2, < 4.0)
54
- ruby-progressbar (~> 1.7)
55
- unicode-display_width (~> 1.0, >= 1.0.1)
56
- ruby-progressbar (1.9.0)
57
- simplecov (0.12.0)
58
- docile (~> 1.1.0)
59
- json (>= 1.8, < 3)
60
- simplecov-html (~> 0.10.0)
61
- simplecov-html (0.10.0)
62
- thread_safe (0.3.6)
63
- tzinfo (1.2.5)
64
- thread_safe (~> 0.1)
65
- unicode-display_width (1.3.0)
66
-
67
- PLATFORMS
68
- ruby
69
-
70
- DEPENDENCIES
71
- delayed_job (~> 4.1, >= 4.1.4)
72
- rack (~> 1.6, >= 1.6.5)
73
- rake (~> 12.0, >= 12.0.0)
74
- request_headers_logger!
75
- rspec (~> 3.5, >= 3.5.0)
76
- rubocop (~> 0.53.0)
77
- simplecov (~> 0.12.0)
78
-
79
- BUNDLED WITH
80
- 1.16.1
data/bin/travis DELETED
@@ -1,12 +0,0 @@
1
- #!/bin/sh
2
-
3
- set -e
4
-
5
- case "$BUILD_TYPE" in
6
- "rubocop")
7
- bundle exec rubocop
8
- ;;
9
- "rspec")
10
- bundle exec rspec
11
- ;;
12
- esac