timber 2.2.0 → 2.2.1

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: d36593e9185855c949d8675ac749043317998c3c
4
- data.tar.gz: 479e0355abf6e918aa1d0e0566e152c5fcfdaf97
3
+ metadata.gz: 66720d601b2548f7390c9c5f37b98dfc9b3374c4
4
+ data.tar.gz: 6dd041106e908bd9d240e4633e0db7026ca0640b
5
5
  SHA512:
6
- metadata.gz: 70397717e17995dcbf20b2d667037307a3f19c9702325442ea896e2d0c7c424adb4eea1bb7bba4e7b70d511acf11235018b639e2b7aef72b800e11965f6d0f8c
7
- data.tar.gz: b4f322a1167c530eb1b5e0a90fc836781619a93d0f7a2e05ce4bcbb342bb53ef2356195c8df8ea5055f75cbeac63c19fb7598b891d6a87c8210e7c510f3b8378
6
+ metadata.gz: ee4f83cffdffb37160e5e4bc385a9148e11a6cfb9106d928ce18e21399074f6b3087d3c45110de98bd876430bee54719656b66a8f62cf715e72e4565d5326bd6
7
+ data.tar.gz: 2c823beb4dabc9b0da1f543d5e836087989640002799f1422092bed6b555083d15e4b7aa4260cc8cdc2a86d32ebf3ebbbe9007d858f20f0cbaeb5b62c1088ceb
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.2.1] - 2017-09-13
11
+ ### Changed
12
+
13
+ - Omniauth integration was removed since it only captures user context during the Authentication
14
+ phase. Omniauth does not persist sessions. As such, the integration is extremely low value
15
+ and could cause unintended issues.
16
+
10
17
  ## [2.2.0] - 2017-09-13
11
18
  ### Changed
12
19
 
@@ -16,5 +23,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
16
23
  instead of applying back pressure.
17
24
 
18
25
 
19
- [Unreleased]: https://github.com/timberio/timber-ruby/compare/v2.2.0...HEAD
26
+ [Unreleased]: https://github.com/timberio/timber-ruby/compare/v2.2.1...HEAD
27
+ [2.2.1]: https://github.com/timberio/timber-ruby/compare/v2.2.0...v2.2.1
20
28
  [2.2.0]: https://github.com/timberio/timber-ruby/compare/v2.1.10...v2.2.0
data/README.md CHANGED
@@ -5,14 +5,17 @@
5
5
  [![Build Status](https://travis-ci.org/timberio/timber-ruby.svg?branch=master)](https://travis-ci.org/timberio/timber-ruby)
6
6
  [![Code Climate](https://codeclimate.com/github/timberio/timber-ruby/badges/gpa.svg)](https://codeclimate.com/github/timberio/timber-ruby)
7
7
 
8
- [Timber](https://timber.io) is a cloud-based logging system that integrates directly with your Ruby
9
- app through this library, capturing context and metadata without parsing. This produces rich, clean,
10
- readable logs that are easier to search and use:
8
+ Timber for Ruby is a drop in replacement for your Ruby logger that
9
+ [unobtrusively augments](https://timber.io/docs/concepts/structuring-through-augmentation) your
10
+ logs with [rich metadata and context](https://timber.io/docs/concepts/metadata-context-and-events)
11
+ making them [easier to search, use, and read](#get-things-done-with-your-logs). It pairs with the
12
+ [Timber console](#the-timber-console) to deliver a tailored Ruby logging experience designed to make
13
+ you more productive.
11
14
 
12
15
  1. [**Installation** - One command: `bundle exec timber install`](#installation)
13
- 2. [**Usage** - Simple yet powerful API](#usage)
16
+ 2. [**Usage** - Simple & powerful API](#usage)
14
17
  3. [**Integrations** - Automatic context and metadata for your existing logs](#integrations)
15
- 4. [**The Timber Console** - Designed for Ruby developers](#the-timber-console)
18
+ 4. [**The Timber Console** - Designed for applications & developers](#the-timber-console)
16
19
  5. [**Get things done with your logs 💪**](#get-things-done-with-your-logs)
17
20
 
18
21
 
@@ -24,9 +27,11 @@ readable logs that are easier to search and use:
24
27
  gem 'timber', '~> 2.1'
25
28
  ```
26
29
 
27
- 2. In your `shell`, run `bundle install`
30
+ 2. In your `shell`, run:
28
31
 
29
- 3. In your `shell`, run `bundle exec timber install`
32
+ ```
33
+ bundle install && bundle exec timber install
34
+ ```
30
35
 
31
36
 
32
37
  ## Usage
@@ -43,9 +48,11 @@ logger.error("Error message")
43
48
  logger.fatal("Fatal message")
44
49
  ```
45
50
 
46
- We encourage standard / traditional log messages for non-meaningful events. And because Timber
47
- [augments](https://timber.io/docs/concepts/structuring-through-augmentation) your logs with
48
- metadata, you don't have to worry about making every log structured!
51
+ 1. [Search it](https://timber.io/docs/app/console/searching) with queries like: `error message`
52
+ 2. [Alert on it](https://timber.io/docs/app/console/alerts) with threshold based alerts
53
+ 3. [View this event's metadata and context](https://timber.io/docs/app/console/view-metdata-and-context)
54
+
55
+ [...read more in our docs](https://timber.io/docs/languages/ruby/usage/basic-logging)
49
56
 
50
57
  ---
51
58
 
@@ -53,13 +60,7 @@ metadata, you don't have to worry about making every log structured!
53
60
 
54
61
  <details><summary><strong>Logging events (structured data)</strong></summary><p>
55
62
 
56
- Logging events allows you to log structured data without sacrificing readability or worrying about
57
- structured data name or type conflicts. Keep in mind, Timber defines common events in the
58
- [`Timber::Events`](http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Events) namespace,
59
- which are automatically logged for you through our [integrations](#integrations). You should not
60
- have to maually log events defined there except in special circumstances.
61
-
62
- ### How to use it
63
+ Log structured data without sacrificing readability:
63
64
 
64
65
  ```ruby
65
66
  logger.warn "Payment rejected", payment_rejected: {customer_id: "abcd1234", amount: 100, reason: "Card expired"}
@@ -67,9 +68,9 @@ logger.warn "Payment rejected", payment_rejected: {customer_id: "abcd1234", amou
67
68
 
68
69
  1. [Search it](https://timber.io/docs/app/console/searching) with queries like: `type:payment_rejected` or `payment_rejected.amount:>100`
69
70
  2. [Alert on it](https://timber.io/docs/app/console/alerts) with threshold based alerts
70
- 3. [Graph & visualize it](https://timber.io/docs/app/console/graphing)
71
71
  4. [View this event's data and context](https://timber.io/docs/app/console/view-metdata-and-context)
72
- 5. ...read more in our [docs](https://timber.io/docs/languages/ruby/usage/custom-events)
72
+
73
+ ...[read more in our docs](https://timber.io/docs/languages/ruby/usage/custom-events)
73
74
 
74
75
  ---
75
76
 
@@ -77,17 +78,7 @@ logger.warn "Payment rejected", payment_rejected: {customer_id: "abcd1234", amou
77
78
 
78
79
  <details><summary><strong>Setting context</strong></summary><p>
79
80
 
80
- Context is amazingly powerful, think of it like join data for your logs. It represents the
81
- environment when the log was written, allowing you to relate logs so you can easily segment them.
82
- It's how Timber is able to accomplish features like
83
- [tailing users](https://timber.io/docs/app/console/tail-a-user) and
84
- [tracing HTTP requests](https://timber.io/docs/app/console/trace-http-requests).
85
- Keep in mind, Timber defines common contexts in the
86
- [`Timber::Contexts`](http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Contexts) namespace,
87
- which are automatically set for you through our [integrations](#integrations). You should not
88
- have to maually set these contexts except in special circumstances.
89
-
90
- ### How to use it
81
+ Add shared structured data across your logs:
91
82
 
92
83
  ```ruby
93
84
  Timber.with_context(job: {id: 123}) do
@@ -99,24 +90,16 @@ end
99
90
 
100
91
  1. [Search it](https://timber.io/docs/app/console/searching) with queries like: `job.id:123`
101
92
  2. [View this context when viewing a log's metadata](https://timber.io/docs/app/console/view-metdata-and-context)
102
- 3. ...read more in our [docs](https://timber.io/docs/languages/ruby/usage/custom-context)
93
+
94
+ ...[read more in our docs](https://timber.io/docs/languages/ruby/usage/custom-context)
103
95
 
104
96
  ---
105
97
 
106
98
  </p></details>
107
99
 
108
- <details><summary><strong>Metrics & Timings</strong></summary><p>
100
+ <details><summary><strong>Metrics, Timings, & Tracing</strong></summary><p>
109
101
 
110
- Aggregates destroy details, events tell stories. With Timber, logging metrics and timings is simply
111
- [logging an event](https://timber.io/docs/languages/ruby/usage/custom-events). Timber is based on
112
- modern big-data principles and can aggregate inordinately large data sets in seconds. Logging
113
- events (raw data as it exists), gives you the flexibility in the future to segment and aggregate
114
- your data any way you see fit. This is superior to choosing specific paradigms before hand, when
115
- you are unsure how you'll need to use your data in the future.
116
-
117
- ### How to use it
118
-
119
- Below is a contrived example of timing a background job:
102
+ Time code blocks:
120
103
 
121
104
  ```ruby
122
105
  timer = Timber.start_timer
@@ -124,13 +107,7 @@ timer = Timber.start_timer
124
107
  logger.info("Processed background job", background_job: {time_ms: timer})
125
108
  ```
126
109
 
127
- And of course, `time_ms` can also take a `Float` or `Fixnum`:
128
-
129
- ```ruby
130
- logger.info("Processed background job", background_job: {time_ms: 45.6})
131
- ```
132
-
133
- Lastly, metrics aren't limited to timings. You can capture any metric you want:
110
+ Log generic metrics:
134
111
 
135
112
  ```ruby
136
113
  logger.info("Credit card charged", credit_card_charge: {amount: 123.23})
@@ -139,8 +116,8 @@ logger.info("Credit card charged", credit_card_charge: {amount: 123.23})
139
116
  1. [Search it](https://timber.io/docs/app/console/searching) with queries like: `background_job.time_ms:>500`
140
117
  2. [Alert on it](https://timber.io/docs/app/console/alerts) with threshold based alerts
141
118
  3. [View this log's metadata in the console](https://timber.io/docs/app/console/view-metdata-and-context)
142
- 4. ...read more in our [docs](https://timber.io/docs/languages/ruby/usage/metrics-and-timings)
143
119
 
120
+ ...[read more in our docs](https://timber.io/docs/languages/ruby/usage/metrics-and-timings)
144
121
 
145
122
  </p></details>
146
123
 
@@ -152,20 +129,14 @@ Below are a few popular configuration options, for a comprehensive list, see
152
129
 
153
130
  <details><summary><strong>Logrageify. Silence noisy logs.</strong></summary><p>
154
131
 
155
- Timber allows you to silence noisy logs that aren't of value to you, just like
156
- [lograge](https://github.com/roidrage/lograge). As such, we've provided a convenience configuration
157
- option for anyone transitioning from lograge.
158
-
159
- ### How to use it
132
+ Silence noisy logs that aren't of value to you, just like
133
+ [lograge](https://github.com/roidrage/lograge):
160
134
 
161
135
  ```ruby
162
136
  # config/initializers/timber.rb
163
-
164
137
  Timber.config.logrageify!()
165
138
  ```
166
139
 
167
- ### How it works
168
-
169
140
  It turns this:
170
141
 
171
142
  ```
@@ -182,18 +153,7 @@ Completed 200 OK in 79ms (Views: 78.8ms | ActiveRecord: 0.0ms)
182
153
  Into this:
183
154
 
184
155
  ```
185
- Get "/" sent 200 OK in 79ms @metadata {...}
186
- ```
187
-
188
- Internally this is equivalent to:
189
-
190
- ```ruby
191
- # config/initializers/timber.rb
192
-
193
- Timber.config.integrations.action_controller.silence = true
194
- Timber.config.integrations.action_view.silence = true
195
- Timber.config.integrations.active_record.silence = true
196
- Timber.config.integrations.rack.http_events.collapse_into_single_event = true
156
+ Get "/" sent 200 OK in 79ms
197
157
  ```
198
158
 
199
159
  ### Pro-tip: Keep controller call logs (recommended)
@@ -222,11 +182,8 @@ For a full list of integration settings, see
222
182
  <details><summary><strong>Silence specific requests (LB health checks, etc)</strong></summary><p>
223
183
 
224
184
  Silencing noisy requests can be helpful for silencing load balance health checks, bot scanning,
225
- or activity that generally is not meaningful to you.
226
-
227
- ### How to use it
228
-
229
- The following will silence all `[GET] /_health` requests:
185
+ or activity that generally is not meaningful to you. The following will silence all
186
+ `[GET] /_health` requests:
230
187
 
231
188
  ```ruby
232
189
  # config/initializers/timber.rb
@@ -247,12 +204,10 @@ The first parameter being the traditional Rack env hash, the second being a
247
204
  <details><summary><strong>Capture custom user context</strong></summary><p>
248
205
 
249
206
  By default Timber automatically captures user context for most of the popular authentication
250
- libraries (Devise, Omniauth, and Clearance). See
207
+ libraries (Devise, and Clearance). See
251
208
  [Timber::Integrations::Rack::UserContext](http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Integrations/Rack/UserContext)
252
209
  for a complete list.
253
210
 
254
- ### How to use it
255
-
256
211
  In cases where you Timber doesn't support your strategy, or you want to customize it further,
257
212
  you can do so like:
258
213
 
@@ -284,8 +239,6 @@ end
284
239
  [Timber::Contexts::Release](http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Contexts/Release)
285
240
  tracks the current application release and version.
286
241
 
287
- ### How to use it
288
-
289
242
  If you're on Heroku, simply enable the
290
243
  [dyno metadata](https://devcenter.heroku.com/articles/dyno-metadata) feature. If you are not,
291
244
  set the following environment variables and this context will be added automatically:
@@ -304,7 +257,7 @@ All variables are optional, but at least one must be present.
304
257
  ## Integrations
305
258
 
306
259
  Timber integrates with popular frameworks and libraries to capture context and metadata you
307
- couldn't otherwise. This automatically upgrades logs produced by these libraries, making them
260
+ couldn't otherwise. This automatically augments logs produced by these libraries, making them
308
261
  [easier to search and use](#do-amazing-things-with-your-logs). Below is a list of libraries we
309
262
  support:
310
263
 
@@ -313,7 +266,6 @@ support:
313
266
  * [**Rack**](https://timber.io/docs/languages/ruby/integrations/rack)
314
267
  * [**Devise**](https://timber.io/docs/languages/ruby/integrations/devise)
315
268
  * [**Clearance**](https://timber.io/docs/languages/ruby/integrations/clearnace)
316
- * [**Omniauth**](https://timber.io/docs/languages/ruby/integrations/omniauth)
317
269
  * [**Warden**](https://timber.io/docs/languages/ruby/integrations/devise)
318
270
  * Platforms
319
271
  * [**Heroku**](https://timber.io/docs/languages/ruby/integrations/heroku)
@@ -324,7 +276,7 @@ support:
324
276
 
325
277
  ## Get things done with your logs
326
278
 
327
- Logging features every developer needs:
279
+ Logging features designed to help developers get more done:
328
280
 
329
281
  1. [**Powerful searching.** - Find what you need faster.](https://timber.io/docs/app/console/searching)
330
282
  2. [**Live tail users.** - Easily solve customer issues.](https://timber.io/docs/app/console/tail-a-user)
@@ -8,6 +8,8 @@ module Timber
8
8
  # This is a Rack middleware responsible for setting the user context.
9
9
  # See {Timber::Contexts::User} for more information on the user context.
10
10
  #
11
+ # ## Why a Rack middleware?
12
+ #
11
13
  # We use a Rack middleware because we want to set the user context as early as
12
14
  # possible, and before the initial incoming request log line:
13
15
  #
@@ -29,7 +31,6 @@ module Timber
29
31
  # automatically set the user context for you.
30
32
  #
31
33
  # * Devise, or any Warden based authentication strategy
32
- # * Omniauth
33
34
  # * Clearance
34
35
  #
35
36
  # Or, you can use your own custom authentication, see the {.custom_user_context}
@@ -47,7 +48,7 @@ module Timber
47
48
  #
48
49
  # @example Setting your own custom user context
49
50
  # Timber::Integrations::Rack::UserContext.custom_user_hash = lambda do |rack_env|
50
- # rach_env['my_custom_key'].user
51
+ # rack_env['my_custom_key'].user
51
52
  # end
52
53
  def custom_user_hash=(proc)
53
54
  if proc && !proc.is_a?(Proc)
@@ -78,14 +79,10 @@ module Timber
78
79
  private
79
80
  def get_user_hash(env)
80
81
  # The order is relevant here. The 'warden' key can be set, but
81
- # not return a user, in which case the user data might be in the omniauth
82
- # data.
82
+ # not return a user, in which case the user data might be in another key.
83
83
  if self.class.custom_user_hash.is_a?(Proc)
84
84
  Timber::Config.instance.debug { "Obtaining user context from the custom user hash" }
85
85
  self.class.custom_user_hash.call(env)
86
- elsif (auth_hash = env['omniauth.auth'])
87
- Timber::Config.instance.debug { "Obtaining user context from the omniauth auth hash" }
88
- get_omniauth_user_hash(auth_hash)
89
86
  elsif env[:clearance] && env[:clearance].signed_in?
90
87
  Timber::Config.instance.debug { "Obtaining user context from the clearance user" }
91
88
  user = env[:clearance].current_user
@@ -99,16 +96,6 @@ module Timber
99
96
  end
100
97
  end
101
98
 
102
- def get_omniauth_user_hash(auth_hash)
103
- info = auth_hash['info']
104
-
105
- {
106
- id: auth_hash['uid'],
107
- name: info['name'],
108
- email: info['email']
109
- }
110
- end
111
-
112
99
  def get_user_object_hash(user)
113
100
  id = try_user_id(user)
114
101
  name = try_user_name(user)
@@ -1,3 +1,3 @@
1
1
  module Timber
2
- VERSION = "2.2.0"
2
+ VERSION = "2.2.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timber
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Timber Technologies, Inc.