lhc 9.1.2 → 9.2.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: 0ccdb2e118bc3eda413de13c19ebb6c7997c3211
4
- data.tar.gz: 1fdb9d5d4eec69c752b077df9907380c5c1ac4e9
3
+ metadata.gz: e82411889a538078642c154032b132cec72cf53b
4
+ data.tar.gz: 12f685a1fb5cb8e9452ecd3c2f8ffaf2621a7122
5
5
  SHA512:
6
- metadata.gz: d7346bf0487a5748637f8ff2edcaba6ec25b7c83f1216bfceeae6b9154cb407fa038282dd387bf28ffd53e452aec40b5431c7c552adc27ea347872f124ba1643
7
- data.tar.gz: 1fa1ae36d6347c9177ab355785109a10500289f6da89113d8c34bff9c560f3174ea414ab59fb785ef61d8dca7dc29d7b855f1cb606d898dcdba9c4f1718dc752
6
+ metadata.gz: efa93d6795be75faa9151a9b4fb273338e6fe7ff4d9772302b3f6a04b08364c3111b71e7b0d3529d2af8a8f965d9e23c5d71df5141a83677dfa21bafd2a26738
7
+ data.tar.gz: 8d88b401cfe5122a19cb6ac5c2f5b2478a0bf231858e7430edd133f4f6c592e165f9ca2c6bf1cbf8e433a93027f7892bbcc890bd638c1cec4d8419b158331b8e
data/README.md CHANGED
@@ -259,17 +259,11 @@ To monitor and manipulate the http communication done with LHC, you can define i
259
259
 
260
260
  → [Read more about interceptors](docs/interceptors.md)
261
261
 
262
- A set of core interceptors is part of LHC,
263
- like
264
- [Caching](/docs/interceptors/caching.md),
265
- [Monitoring](/docs/interceptors/monitoring.md),
266
- [Authentication](/docs/interceptors/authentication.md),
267
- [Retry](/docs/interceptors/retry.md),
268
- [Rollbar](/docs/interceptors/rollbar.md),
269
- [Prometheus](/docs/interceptors/prometheus.md).
262
+ ### Core Interceptors
270
263
 
271
- [Read more about core interceptors](docs/interceptors.md#core-interceptors)
264
+ There are some interceptors that are part of LHC already, that cover some basic usecases:
272
265
 
266
+ [Available Core Interceptors](/docs/interceptors)
273
267
 
274
268
  ## License
275
269
 
@@ -23,7 +23,8 @@ Interceptors
23
23
  ## Core Interceptors
24
24
 
25
25
  There are some interceptors that are part of LHC already, that cover some basic usecases:
26
- like [Caching](/docs/interceptors/caching.md), [Monitoring](/docs/interceptors/monitoring.md), [Authentication](/docs/interceptors/authentication.md), [Rollbar](/docs/interceptors/rollbar.md), [Zipkin](/docs/interceptors/zipkin.md).
26
+
27
+ [Available Core Interceptors](/docs/interceptors)
27
28
 
28
29
  ## Callbacks
29
30
 
@@ -0,0 +1,29 @@
1
+ # Logging Interceptor
2
+
3
+ The logging interceptor logs all requests done with LHC to the Rails logs.
4
+
5
+ ## Installation
6
+
7
+ ```ruby
8
+ LHC.config.interceptors = [LHC::Logging]
9
+
10
+ LHC::Logging.logger = Rails.logger
11
+ ```
12
+
13
+ ## What and how it logs
14
+
15
+ The logging Interceptor logs basic information about the request and the response:
16
+
17
+ ```ruby
18
+ LHC.get('http://local.ch')
19
+ # Before LHC request<70128730317500> GET http://local.ch at 2018-05-23T07:53:19+02:00 Params={} Headers={\"User-Agent\"=>\"Typhoeus - https://github.com/typhoeus/typhoeus\", \"Expect\"=>\"\"}
20
+ # After LHC response for request<70128730317500>: GET http://local.ch at 2018-05-23T07:53:28+02:00 Time=0ms URL=http://local.ch:80/
21
+ ```
22
+
23
+ ## Configure
24
+
25
+ You can configure the logger beeing used by the logging interceptor:
26
+
27
+ ```ruby
28
+ LHC::Logging.logger = Another::Logger
29
+ ```
@@ -1,6 +1,8 @@
1
1
  # Monitoring Interceptor
2
2
 
3
- Add the monitoring interceptor to your basic set of LHC interceptors.
3
+ The monitoring interceptor reports all requests done with LHC to a given StatsD instance.
4
+
5
+ ## Installation
4
6
 
5
7
  ```ruby
6
8
  LHC.config.interceptors = [LHC::Monitoring]
@@ -12,8 +14,17 @@ You also have to configure statsd in order to have the monitoring interceptor re
12
14
  LHC::Monitoring.statsd = <your-instance-of-statsd>
13
15
  ```
14
16
 
15
- The monitoring interceptor reports all the HTTP communication done with LHS.
16
- It reports the trial always.
17
+ ## What it tracks
18
+
19
+ It tracks request attempts with `before_request` and `after_request` (counts).
20
+
21
+ In case your workers/processes are getting killed due limited time constraints,
22
+ you are able to detect deltas with relying on "before_request", and "after_request" counts:
23
+
24
+ ```ruby
25
+ "lhc.<app_name>.<env>.<host>.<http_method>.before_request", 1
26
+ "lhc.<app_name>.<env>.<host>.<http_method>.after_request", 1
27
+ ```
17
28
 
18
29
  In case of a successful response it reports the response code with a count and the response time with a gauge value.
19
30
 
@@ -25,14 +36,6 @@ In case of a successful response it reports the response code with a count and t
25
36
  "lhc.<app_name>.<env>.<host>.<http_method>.time", 43
26
37
  ```
27
38
 
28
- In case your workers/processes are getting killed due limited time constraints,
29
- you are able to detect deltas with relying on "before_request", and "after_request" counts:
30
-
31
- ```ruby
32
- "lhc.<app_name>.<env>.<host>.<http_method>.before_request", 1
33
- "lhc.<app_name>.<env>.<host>.<http_method>.after_request", 1
34
- ```
35
-
36
39
  Timeouts are also reported:
37
40
 
38
41
  ```ruby
@@ -41,7 +44,10 @@ Timeouts are also reported:
41
44
 
42
45
  All the dots in the host are getting replaced with underscore (_), because dot is the default separator in graphite.
43
46
 
44
- It is also possible to set the key for Monitoring Interceptor on per request basis:
47
+
48
+ ## Configure
49
+
50
+ It is possible to set the key for Monitoring Interceptor on per request basis:
45
51
 
46
52
  ```ruby
47
53
  LHC.get('http://local.ch', monitoring_key: 'local_website')
data/lib/lhc.rb CHANGED
@@ -18,12 +18,15 @@ module LHC
18
18
  'lhc/interceptors/auth'
19
19
  autoload :Caching,
20
20
  'lhc/interceptors/caching'
21
+ autoload :DefaultTimeout,
22
+ 'lhc/interceptors/default_timeout'
23
+ autoload :Logging,
24
+ 'lhc/interceptors/logging'
21
25
  autoload :Prometheus,
22
26
  'lhc/interceptors/prometheus'
23
27
  autoload :Retry,
24
28
  'lhc/interceptors/retry'
25
- autoload :DefaultTimeout,
26
- 'lhc/interceptors/default_timeout'
29
+
27
30
  autoload :Config,
28
31
  'lhc/config'
29
32
  autoload :Endpoint,
@@ -0,0 +1,19 @@
1
+ class LHC::Logging < LHC::Interceptor
2
+
3
+ include ActiveSupport::Configurable
4
+ config_accessor :logger
5
+
6
+ def before_request
7
+ return unless logger
8
+ logger.info(
9
+ "Before LHC request<#{request.object_id}> #{request.method.upcase} #{request.url} at #{DateTime.now} Params=#{request.params} Headers=#{request.headers}"
10
+ )
11
+ end
12
+
13
+ def after_response
14
+ return unless logger
15
+ logger.info(
16
+ "After LHC response for request<#{request.object_id}> #{request.method.upcase} #{request.url} at #{DateTime.now} Time=#{response.time_ms}ms URL=#{response.effective_url}"
17
+ )
18
+ end
19
+ end
@@ -1,3 +1,3 @@
1
1
  module LHC
2
- VERSION ||= '9.1.2'
2
+ VERSION ||= '9.2.0'
3
3
  end
@@ -0,0 +1,21 @@
1
+ require 'rails_helper'
2
+
3
+ describe LHC::Logging do
4
+ let(:logger) { spy('logger') }
5
+
6
+ before(:each) do
7
+ LHC.config.interceptors = [LHC::Logging]
8
+ LHC::Logging.logger = logger
9
+ end
10
+
11
+ it 'does log information before and after every request made with LHC' do
12
+ stub_request(:get, 'http://local.ch').to_return(status: 200)
13
+ LHC.get('http://local.ch')
14
+ expect(logger).to have_received(:info).once.with(
15
+ %r{Before LHC request<\d+> GET http://local.ch at \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\+\d{2}:\d{2} Params={} Headers={.*?}}
16
+ )
17
+ expect(logger).to have_received(:info).once.with(
18
+ %r{After LHC response for request<\d+> GET http://local.ch at \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\+\d{2}:\d{2} Time=0ms URL=http://local.ch:80/}
19
+ )
20
+ end
21
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lhc
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.1.2
4
+ version: 9.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - https://github.com/local-ch/lhc/contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-26 00:00:00.000000000 Z
11
+ date: 2018-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus
@@ -195,6 +195,7 @@ files:
195
195
  - docs/interceptors/authentication.md
196
196
  - docs/interceptors/caching.md
197
197
  - docs/interceptors/default_timeout.md
198
+ - docs/interceptors/logging.md
198
199
  - docs/interceptors/monitoring.md
199
200
  - docs/interceptors/prometheus.md
200
201
  - docs/interceptors/retry.md
@@ -222,6 +223,7 @@ files:
222
223
  - lib/lhc/interceptors/auth.rb
223
224
  - lib/lhc/interceptors/caching.rb
224
225
  - lib/lhc/interceptors/default_timeout.rb
226
+ - lib/lhc/interceptors/logging.rb
225
227
  - lib/lhc/interceptors/monitoring.rb
226
228
  - lib/lhc/interceptors/prometheus.rb
227
229
  - lib/lhc/interceptors/retry.rb
@@ -313,6 +315,7 @@ files:
313
315
  - spec/interceptors/default_timeout/main_spec.rb
314
316
  - spec/interceptors/define_spec.rb
315
317
  - spec/interceptors/dup_spec.rb
318
+ - spec/interceptors/logging/main_spec.rb
316
319
  - spec/interceptors/monitoring/main_spec.rb
317
320
  - spec/interceptors/prometheus_spec.rb
318
321
  - spec/interceptors/response_competition_spec.rb
@@ -369,7 +372,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
369
372
  requirements:
370
373
  - Ruby >= 2.0.0
371
374
  rubyforge_project:
372
- rubygems_version: 2.6.14
375
+ rubygems_version: 2.6.12
373
376
  signing_key:
374
377
  specification_version: 4
375
378
  summary: LocalHttpClient
@@ -450,6 +453,7 @@ test_files:
450
453
  - spec/interceptors/default_timeout/main_spec.rb
451
454
  - spec/interceptors/define_spec.rb
452
455
  - spec/interceptors/dup_spec.rb
456
+ - spec/interceptors/logging/main_spec.rb
453
457
  - spec/interceptors/monitoring/main_spec.rb
454
458
  - spec/interceptors/prometheus_spec.rb
455
459
  - spec/interceptors/response_competition_spec.rb