timber 2.6.2 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +8 -38
- data/CHANGELOG.md +9 -0
- data/README.md +30 -284
- data/Rakefile +78 -0
- data/lib/timber.rb +6 -6
- data/lib/timber/config.rb +1 -83
- data/lib/timber/config/integrations.rb +1 -47
- data/lib/timber/context.rb +3 -24
- data/lib/timber/contexts.rb +2 -30
- data/lib/timber/contexts/http.rb +16 -36
- data/lib/timber/contexts/release.rb +12 -23
- data/lib/timber/contexts/runtime.rb +9 -36
- data/lib/timber/contexts/session.rb +8 -21
- data/lib/timber/contexts/system.rb +9 -16
- data/lib/timber/contexts/user.rb +13 -33
- data/lib/timber/current_context.rb +16 -78
- data/lib/timber/event.rb +12 -9
- data/lib/timber/events.rb +1 -33
- data/lib/timber/events/controller_call.rb +20 -31
- data/lib/timber/events/error.rb +18 -26
- data/lib/timber/events/exception.rb +1 -0
- data/lib/timber/events/sql_query.rb +14 -24
- data/lib/timber/events/template_render.rb +13 -24
- data/lib/timber/integration.rb +1 -1
- data/lib/timber/integrator.rb +1 -1
- data/lib/timber/log_devices/http.rb +98 -19
- data/lib/timber/log_entry.rb +6 -24
- data/lib/timber/logger.rb +5 -14
- data/lib/timber/util.rb +1 -6
- data/lib/timber/util/non_nil_hash_builder.rb +3 -1
- data/lib/timber/version.rb +1 -1
- data/spec/README.md +2 -8
- data/spec/spec_helper.rb +0 -7
- data/spec/support/timber.rb +1 -3
- data/spec/timber/current_context_spec.rb +12 -50
- data/spec/timber/events/controller_call_spec.rb +4 -4
- data/spec/timber/events/error_spec.rb +4 -9
- data/spec/timber/log_devices/http_spec.rb +26 -2
- data/spec/timber/log_entry_spec.rb +12 -6
- data/spec/timber/logger_spec.rb +27 -68
- data/timber.gemspec +1 -1
- metadata +5 -139
- data/gemfiles/rails-3.0.gemfile +0 -5
- data/gemfiles/rails-3.1.gemfile +0 -5
- data/gemfiles/rails-3.2.gemfile +0 -5
- data/gemfiles/rails-4.0.gemfile +0 -9
- data/gemfiles/rails-4.1.gemfile +0 -9
- data/gemfiles/rails-4.2.gemfile +0 -9
- data/gemfiles/rails-5.0.gemfile +0 -9
- data/gemfiles/rails-5.1.gemfile +0 -9
- data/gemfiles/rails-edge.gemfile +0 -7
- data/lib/timber/cli.rb +0 -60
- data/lib/timber/cli/api.rb +0 -183
- data/lib/timber/cli/api/application.rb +0 -34
- data/lib/timber/cli/config_file.rb +0 -71
- data/lib/timber/cli/file_helper.rb +0 -53
- data/lib/timber/cli/installer.rb +0 -70
- data/lib/timber/cli/installers.rb +0 -102
- data/lib/timber/cli/installers/config_file.rb +0 -51
- data/lib/timber/cli/installers/other.rb +0 -59
- data/lib/timber/cli/installers/rails.rb +0 -225
- data/lib/timber/cli/installers/root.rb +0 -116
- data/lib/timber/cli/io.rb +0 -100
- data/lib/timber/cli/io/ansi.rb +0 -22
- data/lib/timber/cli/io/messages.rb +0 -198
- data/lib/timber/cli/os_helper.rb +0 -74
- data/lib/timber/config/integrations/rack.rb +0 -74
- data/lib/timber/contexts/custom.rb +0 -44
- data/lib/timber/contexts/organization.rb +0 -48
- data/lib/timber/events/custom.rb +0 -53
- data/lib/timber/events/http_request.rb +0 -71
- data/lib/timber/events/http_response.rb +0 -81
- data/lib/timber/frameworks.rb +0 -19
- data/lib/timber/frameworks/rails.rb +0 -27
- data/lib/timber/integrations.rb +0 -29
- data/lib/timber/integrations/action_controller.rb +0 -18
- data/lib/timber/integrations/action_controller/log_subscriber.rb +0 -27
- data/lib/timber/integrations/action_controller/log_subscriber/timber_log_subscriber.rb +0 -46
- data/lib/timber/integrations/action_dispatch.rb +0 -23
- data/lib/timber/integrations/action_dispatch/debug_exceptions.rb +0 -53
- data/lib/timber/integrations/action_view.rb +0 -18
- data/lib/timber/integrations/action_view/log_subscriber.rb +0 -27
- data/lib/timber/integrations/action_view/log_subscriber/timber_log_subscriber.rb +0 -83
- data/lib/timber/integrations/active_record.rb +0 -18
- data/lib/timber/integrations/active_record/log_subscriber.rb +0 -26
- data/lib/timber/integrations/active_record/log_subscriber/timber_log_subscriber.rb +0 -53
- data/lib/timber/integrations/rack.rb +0 -27
- data/lib/timber/integrations/rack/error_event.rb +0 -64
- data/lib/timber/integrations/rack/http_context.rb +0 -27
- data/lib/timber/integrations/rack/http_events.rb +0 -210
- data/lib/timber/integrations/rack/middleware.rb +0 -28
- data/lib/timber/integrations/rack/session_context.rb +0 -65
- data/lib/timber/integrations/rack/user_context.rb +0 -135
- data/lib/timber/integrations/rails.rb +0 -22
- data/lib/timber/integrations/rails/rack_logger.rb +0 -60
- data/lib/timber/overrides.rb +0 -12
- data/lib/timber/overrides/active_support_3_tagged_logging.rb +0 -111
- data/lib/timber/overrides/active_support_buffered_logger.rb +0 -22
- data/lib/timber/overrides/active_support_tagged_logging.rb +0 -66
- data/lib/timber/overrides/lograge.rb +0 -18
- data/lib/timber/overrides/rails_stdout_logging.rb +0 -21
- data/lib/timber/util/active_support_log_subscriber.rb +0 -37
- data/lib/timber/util/attribute_normalizer.rb +0 -89
- data/lib/timber/util/hash.rb +0 -90
- data/lib/timber/util/request.rb +0 -72
- data/lib/timber/util/struct.rb +0 -16
- data/spec/rails/tagged_logging_spec.rb +0 -44
- data/spec/support/action_controller.rb +0 -8
- data/spec/support/active_record.rb +0 -32
- data/spec/support/rails.rb +0 -67
- data/spec/support/rails/templates/_partial.html +0 -1
- data/spec/support/rails/templates/template.html +0 -1
- data/spec/timber/cli/config_file_spec.rb +0 -26
- data/spec/timber/cli/installers/config_file_spec.rb +0 -36
- data/spec/timber/cli/installers/other_spec.rb +0 -49
- data/spec/timber/cli/installers/rails_spec.rb +0 -364
- data/spec/timber/cli/installers/root_spec.rb +0 -73
- data/spec/timber/config_spec.rb +0 -28
- data/spec/timber/contexts/custom_spec.rb +0 -11
- data/spec/timber/contexts/organization_spec.rb +0 -11
- data/spec/timber/contexts/runtime_spec.rb +0 -11
- data/spec/timber/contexts/system_spec.rb +0 -11
- data/spec/timber/contexts/user_spec.rb +0 -11
- data/spec/timber/contexts_spec.rb +0 -49
- data/spec/timber/event_spec.rb +0 -10
- data/spec/timber/events/custom_spec.rb +0 -36
- data/spec/timber/events/http_request_spec.rb +0 -32
- data/spec/timber/events/http_response_spec.rb +0 -12
- data/spec/timber/events_spec.rb +0 -55
- data/spec/timber/integrations/action_controller/log_subscriber_spec.rb +0 -55
- data/spec/timber/integrations/action_dispatch/debug_exceptions_spec.rb +0 -53
- data/spec/timber/integrations/action_view/log_subscriber_spec.rb +0 -115
- data/spec/timber/integrations/active_record/log_subscriber_spec.rb +0 -46
- data/spec/timber/integrations/rack/error_event_spec.rb +0 -63
- data/spec/timber/integrations/rack/http_context_spec.rb +0 -60
- data/spec/timber/integrations/rack/http_events_spec.rb +0 -101
- data/spec/timber/integrations/rack/session_context_spec.rb +0 -62
- data/spec/timber/integrations/rails/rack_logger_spec.rb +0 -58
- data/spec/timber/util/attribute_normalizer_spec.rb +0 -90
- data/spec/timber/util/hash_spec.rb +0 -30
- data/spec/timber/util/request_spec.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3a26e7b9b1e27e631deac9a62753d67fabfe532a37446c29ad532fc6948b5682
|
4
|
+
data.tar.gz: 66c38071146891f8d8e7a763a2486eda7d5aef7fdffbffb9a26dc8128a581e79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5acf7ca9461dd5b24b20cda20f7f6828e5f78c8fcb8cc44a3ef8a01ec882ba5fbcdec33f522d5753b4ef81a750c27820b33dbfb8d4cdd5eab80a299ce43bdece
|
7
|
+
data.tar.gz: e47f9313d14194be733203491d82213f87e5d1c2d5f2f6796a29e489dec892b6b699016a657147263e2658fd835f7836b64ed423fa6c882c1dd9171b8e2c51ee
|
data/.travis.yml
CHANGED
@@ -3,23 +3,13 @@ language: ruby
|
|
3
3
|
cache: bundler
|
4
4
|
rvm:
|
5
5
|
- 1.9.3
|
6
|
-
- 2.2.
|
7
|
-
- 2.3.
|
8
|
-
- 2.4.
|
9
|
-
-
|
10
|
-
- jruby-
|
11
|
-
|
12
|
-
-
|
13
|
-
- gemfiles/rails-3.1.gemfile
|
14
|
-
- gemfiles/rails-3.2.gemfile
|
15
|
-
- gemfiles/rails-4.0.gemfile
|
16
|
-
- gemfiles/rails-4.1.gemfile
|
17
|
-
- gemfiles/rails-4.2.gemfile
|
18
|
-
- gemfiles/rails-5.0.gemfile
|
19
|
-
- gemfiles/rails-5.1.gemfile
|
20
|
-
- gemfiles/rails-edge.gemfile
|
21
|
-
env:
|
22
|
-
global: RAILS_ENV=test
|
6
|
+
- 2.2.10
|
7
|
+
- 2.3.8
|
8
|
+
- 2.4.5
|
9
|
+
- 2.5.3
|
10
|
+
- jruby-1.7.27
|
11
|
+
- jruby-9.2.5.0
|
12
|
+
before_install: gem install bundler -v 1.17.3
|
23
13
|
before_script:
|
24
14
|
- echo $BUNDLE_GEMFILE
|
25
15
|
- bundle install
|
@@ -27,27 +17,7 @@ script:
|
|
27
17
|
- bundle exec rspec --format documentation
|
28
18
|
matrix:
|
29
19
|
fast_finish: true
|
30
|
-
|
31
|
-
- rvm: 1.9.3
|
32
|
-
- rvm: 2.2.6
|
33
|
-
gemfile: gemfiles/rails-edge.gemfile
|
34
|
-
- rvm: 2.3.3
|
35
|
-
gemfile: gemfiles/rails-edge.gemfile
|
36
|
-
include:
|
37
|
-
- rvm: 1.9.3
|
38
|
-
gemfile: gemfiles/rails-3.0.gemfile
|
39
|
-
- rvm: 1.9.3
|
40
|
-
gemfile: gemfiles/rails-3.1.gemfile
|
41
|
-
- rvm: 1.9.3
|
42
|
-
gemfile: gemfiles/rails-3.2.gemfile
|
43
|
-
allow_failures:
|
44
|
-
- rvm: 1.9.3 # bundler wont install the gems
|
45
|
-
- rvm: 2.4.2
|
46
|
-
gemfile: gemfiles/rails-4.0.gemfile
|
47
|
-
- rvm: 2.4.2
|
48
|
-
gemfile: gemfiles/rails-4.1.gemfile
|
49
|
-
- rvm: jruby-1.7.26
|
50
|
-
- rvm: jruby-9.1.9.0
|
20
|
+
|
51
21
|
notifications:
|
52
22
|
email: false
|
53
23
|
slack:
|
data/CHANGELOG.md
CHANGED
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
### Changed
|
11
|
+
|
12
|
+
- Timber's Rails integration has been moved to the optional `timber_rails` gem: https://github.com/timberio/timber-ruby-rails
|
13
|
+
- Timber's Rack integration has been moved to the optional `timber_rack` gem: https://github.com/timberio/timber-ruby-rack
|
14
|
+
- Custom events are no longer nested under the `custom.event` key, events are now merged into the root docoment.
|
15
|
+
- Custom contexts are no longer nested under the `context.custom` key, contexts are not part of the top-level `context` document.
|
16
|
+
- The Timber JSON schema (`$shema` key) was dropped since the Timber.io service no longer requires a strict schema (structured data in any shape is accepted).
|
17
|
+
- `Timber::LogDevices::HTTP#initialize` now takes a second `source_id` parameter. Timber's new API keys are no longer Timber source specific and therefore require a `source_id` to be specificed. Ex: `Timber::LogDevices::HTTP.new('api_key', 'source_id')`.
|
18
|
+
|
10
19
|
## [2.6.2] - 2018-10-17
|
11
20
|
|
12
21
|
### Fixed
|
data/README.md
CHANGED
@@ -1,299 +1,45 @@
|
|
1
1
|
# 🌲 Timber - Great Ruby Logging Made Easy
|
2
2
|
|
3
|
+
<p align="center">
|
4
|
+
<a href="https://timber.io" target="_blank" align="center">
|
5
|
+
<img src="https://res.cloudinary.com/timber/image/upload/v1552328675/banner.jpg" width="900">
|
6
|
+
</a>
|
7
|
+
<br>
|
8
|
+
</p>
|
9
|
+
|
3
10
|
[![ISC License](https://img.shields.io/badge/license-ISC-ff69b4.svg)](LICENSE.md)
|
4
11
|
[![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://www.rubydoc.info/github/timberio/timber-ruby)
|
5
12
|
[![Build Status](https://travis-ci.org/timberio/timber-ruby.svg?branch=master)](https://travis-ci.org/timberio/timber-ruby)
|
6
13
|
[![Code Climate](https://codeclimate.com/github/timberio/timber-ruby/badges/gpa.svg)](https://codeclimate.com/github/timberio/timber-ruby)
|
7
14
|
|
8
|
-
Timber
|
9
|
-
[
|
10
|
-
|
11
|
-
|
12
|
-
[Timber console](#the-timber-console) to deliver a tailored Ruby logging experience designed to make
|
13
|
-
you more productive.
|
14
|
-
|
15
|
-
1. [**Installation** - One command: `bundle exec timber install`](#installation)
|
16
|
-
2. [**Usage** - Simple & powerful API](#usage)
|
17
|
-
3. [**Integrations** - Automatic context and metadata for your existing logs](#integrations)
|
18
|
-
4. [**The Timber Console** - Designed for applications & developers](#the-timber-console)
|
19
|
-
5. [**Get things done with your logs 💪**](#get-things-done-with-your-logs)
|
20
|
-
|
21
|
-
|
22
|
-
## Installation
|
23
|
-
|
24
|
-
1. In your `Gemfile`, add the `timber` gem:
|
25
|
-
|
26
|
-
```ruby
|
27
|
-
gem 'timber', '~> 2.3'
|
28
|
-
```
|
29
|
-
|
30
|
-
2. In your `shell`, run:
|
31
|
-
|
32
|
-
```
|
33
|
-
bundle install && bundle exec timber install
|
34
|
-
```
|
35
|
-
|
36
|
-
|
37
|
-
## Usage
|
38
|
-
|
39
|
-
<details><summary><strong>Basic logging</strong></summary><p>
|
15
|
+
[Timber.io](https://timber.io) is a hosted service for aggregating logs across your entire stack -
|
16
|
+
[any language](https://docs.timber.io/setup/languages),
|
17
|
+
[any platform](https://docs.timber.io/setup/platforms),
|
18
|
+
[any data source](https://docs.timber.io/setup/log_forwarders).
|
40
19
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
logger.error("Error message")
|
48
|
-
logger.fatal("Fatal message")
|
49
|
-
```
|
50
|
-
|
51
|
-
* [Search it](https://timber.io/docs/app/console/searching) with queries like: `error message`
|
52
|
-
* [Alert on it](https://timber.io/docs/app/console/alerts) with threshold based alerts
|
53
|
-
* [View this event's metadata and context](https://timber.io/docs/app/console/view-metadata-and-context)
|
54
|
-
|
55
|
-
[...read more in our docs](https://timber.io/docs/languages/ruby/usage/basic-logging)
|
56
|
-
|
57
|
-
---
|
58
|
-
|
59
|
-
</p></details>
|
60
|
-
|
61
|
-
<details><summary><strong>Logging events (structured data)</strong></summary><p>
|
62
|
-
|
63
|
-
Log structured data without sacrificing readability:
|
64
|
-
|
65
|
-
```ruby
|
66
|
-
logger.warn "Payment rejected", payment_rejected: {customer_id: "abcd1234", amount: 100, reason: "Card expired"}
|
67
|
-
```
|
68
|
-
|
69
|
-
* [Search it](https://timber.io/docs/app/console/searching) with queries like: `type:payment_rejected` or `payment_rejected.amount:>100`
|
70
|
-
* [Alert on it](https://timber.io/docs/app/console/alerts) with threshold based alerts
|
71
|
-
* [View this event's data and context](https://timber.io/docs/app/console/view-metadata-and-context)
|
72
|
-
|
73
|
-
...[read more in our docs](https://timber.io/docs/languages/ruby/usage/custom-events)
|
20
|
+
Unlike traditional logging tools, Timber integrates with language runtimes to automatically
|
21
|
+
capture in-app context, turning your text-based logs into rich structured events.
|
22
|
+
Timber integrates with Ruby through this library. And Timber's
|
23
|
+
[rich free-form query tools](https://docs-new.timber.io/usage/live-tailing#query-syntax) and
|
24
|
+
[real-time tailing](https://docs-new.timber.io/usage/live-tailing), make drilling down into
|
25
|
+
important stats easier than ever.
|
74
26
|
|
75
27
|
---
|
76
28
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
Timber.with_context(job: {id: 123}) do
|
85
|
-
logger.info("Background job execution started")
|
86
|
-
# ... code here
|
87
|
-
logger.info("Background job execution completed")
|
88
|
-
end
|
89
|
-
```
|
90
|
-
|
91
|
-
* [Search it](https://timber.io/docs/app/console/searching) with queries like: `job.id:123`
|
92
|
-
* [View this context when viewing a log's metadata](https://timber.io/docs/app/console/view-metadata-and-context)
|
93
|
-
|
94
|
-
...[read more in our docs](https://timber.io/docs/languages/ruby/usage/custom-context)
|
29
|
+
* **[Features](https://docs.timber.io/setup/languages/ruby#features)**
|
30
|
+
* **[Installation](https://docs.timber.io/setup/languages/ruby#installation)**
|
31
|
+
* **[Configuration](https://docs.timber.io/setup/languages/ruby#configuration)**
|
32
|
+
* **[Usage](https://docs.timber.io/setup/languages/ruby#usage)**
|
33
|
+
* **[Guides](https://docs.timber.io/setup/languages/ruby#guides)**
|
34
|
+
* **[Integrations](https://docs.timber.io/setup/languages/ruby/integrations)**
|
35
|
+
* **[Performance](https://docs.timber.io/setup/languages/ruby#performance)**
|
95
36
|
|
96
37
|
---
|
97
38
|
|
98
|
-
|
99
|
-
|
100
|
-
<
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
```ruby
|
105
|
-
timer = Timber.start_timer
|
106
|
-
# ... code to time ...
|
107
|
-
logger.info("Processed background job", background_job: {time_ms: timer})
|
108
|
-
```
|
109
|
-
|
110
|
-
Log generic metrics:
|
111
|
-
|
112
|
-
```ruby
|
113
|
-
logger.info("Credit card charged", credit_card_charge: {amount: 123.23})
|
114
|
-
```
|
115
|
-
|
116
|
-
* [Search it](https://timber.io/docs/app/console/searching) with queries like: `background_job.time_ms:>500`
|
117
|
-
* [Alert on it](https://timber.io/docs/app/console/alerts) with threshold based alerts
|
118
|
-
* [View this log's metadata in the console](https://timber.io/docs/app/console/view-metadata-and-context)
|
119
|
-
|
120
|
-
...[read more in our docs](https://timber.io/docs/languages/ruby/usage/metrics-and-timings)
|
121
|
-
|
122
|
-
</p></details>
|
123
|
-
|
124
|
-
|
125
|
-
## Configuration
|
126
|
-
|
127
|
-
Below are a few popular configuration options, for a comprehensive list, see
|
128
|
-
[Timber::Config](http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Config).
|
129
|
-
|
130
|
-
<details><summary><strong>Logrageify. Silence noisy logs.</strong></summary><p>
|
131
|
-
|
132
|
-
Silence noisy logs that aren't of value to you, just like
|
133
|
-
[lograge](https://github.com/roidrage/lograge):
|
134
|
-
|
135
|
-
```ruby
|
136
|
-
# config/initializers/timber.rb
|
137
|
-
Timber.config.logrageify!()
|
138
|
-
```
|
139
|
-
|
140
|
-
It turns this:
|
141
|
-
|
142
|
-
```
|
143
|
-
Started GET "/" for 127.0.0.1 at 2012-03-10 14:28:14 +0100
|
144
|
-
Processing by HomeController#index as HTML
|
145
|
-
Rendered text template within layouts/application (0.0ms)
|
146
|
-
Rendered layouts/_assets.html.erb (2.0ms)
|
147
|
-
Rendered layouts/_top.html.erb (2.6ms)
|
148
|
-
Rendered layouts/_about.html.erb (0.3ms)
|
149
|
-
Rendered layouts/_google_analytics.html.erb (0.4ms)
|
150
|
-
Completed 200 OK in 79ms (Views: 78.8ms | ActiveRecord: 0.0ms)
|
151
|
-
```
|
152
|
-
|
153
|
-
Into this:
|
154
|
-
|
155
|
-
```
|
156
|
-
Get "/" sent 200 OK in 79ms
|
157
|
-
```
|
158
|
-
|
159
|
-
### Pro-tip: Keep controller call logs (recommended)
|
160
|
-
|
161
|
-
Feel free to deviate and customize which logs you silence. We recommend a slight deviation
|
162
|
-
from lograge with the following settings:
|
163
|
-
|
164
|
-
```ruby
|
165
|
-
# config/initializers/timber.rb
|
166
|
-
|
167
|
-
Timber.config.integrations.action_view.silence = true
|
168
|
-
Timber.config.integrations.active_record.silence = true
|
169
|
-
Timber.config.integrations.rack.http_events.collapse_into_single_event = true
|
170
|
-
```
|
171
|
-
|
172
|
-
This does _not_ silence the controller call log event. This is because Timber captures the
|
173
|
-
parameters passed to the controller, which are generally valuable when debugging.
|
174
|
-
|
175
|
-
For a full list of integration settings, see
|
176
|
-
[Timber::Config::Integrations](http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Config/Integrations)
|
177
|
-
|
178
|
-
---
|
179
|
-
|
180
|
-
</p></details>
|
181
|
-
|
182
|
-
<details><summary><strong>Silence specific requests (LB health checks, etc)</strong></summary><p>
|
183
|
-
|
184
|
-
Silencing noisy requests can be helpful for silencing load balance health checks, bot scanning,
|
185
|
-
or activity that generally is not meaningful to you. The following will silence all
|
186
|
-
`[GET] /_health` requests:
|
187
|
-
|
188
|
-
```ruby
|
189
|
-
# config/initializers/timber.rb
|
190
|
-
|
191
|
-
Timber.config.integrations.rack.http_events.silence_request = lambda do |rack_env, rack_request|
|
192
|
-
rack_request.path == "/_health"
|
193
|
-
end
|
194
|
-
```
|
195
|
-
|
196
|
-
We require a block because it gives you complete control over how you want to silence requests.
|
197
|
-
The first parameter being the traditional Rack env hash, the second being a
|
198
|
-
[Rack Request](http://www.rubydoc.info/gems/rack/Rack/Request) object.
|
199
|
-
|
200
|
-
---
|
201
|
-
|
202
|
-
</p></details>
|
203
|
-
|
204
|
-
<details><summary><strong>Capture custom user context</strong></summary><p>
|
205
|
-
|
206
|
-
By default Timber automatically captures user context for most of the popular authentication
|
207
|
-
libraries (Devise, and Clearance). See
|
208
|
-
[Timber::Integrations::Rack::UserContext](http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Integrations/Rack/UserContext)
|
209
|
-
for a complete list.
|
210
|
-
|
211
|
-
In cases where you Timber doesn't support your strategy, or you want to customize it further,
|
212
|
-
you can do so like:
|
213
|
-
|
214
|
-
```ruby
|
215
|
-
# config/initializers/timber.rb
|
216
|
-
|
217
|
-
Timber.config.integrations.rack.user_context.custom_user_hash = lambda do |rack_env|
|
218
|
-
user = rack_env['warden'].user
|
219
|
-
if user
|
220
|
-
{
|
221
|
-
id: user.id, # unique identifier for the user, can be an integer or string,
|
222
|
-
name: user.name, # identifiable name for the user,
|
223
|
-
email: user.email, # user's email address
|
224
|
-
}
|
225
|
-
else
|
226
|
-
nil
|
227
|
-
end
|
228
|
-
end
|
229
|
-
```
|
230
|
-
|
231
|
-
*All* of the user hash keys are optional, but you must provide at least one.
|
232
|
-
|
233
|
-
---
|
234
|
-
|
235
|
-
</p></details>
|
236
|
-
|
237
|
-
<details><summary><strong>Capture release / deploy context</strong></summary><p>
|
238
|
-
|
239
|
-
[Timber::Contexts::Release](http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Contexts/Release)
|
240
|
-
tracks the current application release and version.
|
241
|
-
|
242
|
-
If you're on Heroku, simply enable the
|
243
|
-
[dyno metadata](https://devcenter.heroku.com/articles/dyno-metadata) feature. If you are not,
|
244
|
-
set the following environment variables and this context will be added automatically:
|
245
|
-
|
246
|
-
1. `RELEASE_COMMIT` - Ex: `2c3a0b24069af49b3de35b8e8c26765c1dba9ff0`
|
247
|
-
2. `RELEASE_CREATED_AT` - Ex: `2015-04-02T18:00:42Z`
|
248
|
-
3. `RELEASE_VERSION` - Ex: `v2.3.1`
|
249
|
-
|
250
|
-
All variables are optional, but at least one must be present.
|
251
|
-
|
252
|
-
---
|
253
|
-
|
254
|
-
</p></details>
|
255
|
-
|
256
|
-
|
257
|
-
## Integrations
|
258
|
-
|
259
|
-
Timber integrates with popular frameworks and libraries to capture context and metadata you
|
260
|
-
couldn't otherwise. This automatically augments logs produced by these libraries, making them
|
261
|
-
[easier to search and use](#do-amazing-things-with-your-logs). Below is a list of libraries we
|
262
|
-
support:
|
263
|
-
|
264
|
-
* Frameworks & Libraries
|
265
|
-
* [**Rails**](https://timber.io/docs/languages/ruby/integrations/rails)
|
266
|
-
* [**Rack**](https://timber.io/docs/languages/ruby/integrations/rack)
|
267
|
-
* [**Devise**](https://timber.io/docs/languages/ruby/integrations/devise)
|
268
|
-
* [**Clearance**](https://timber.io/docs/languages/ruby/integrations/clearnace)
|
269
|
-
* [**Warden**](https://timber.io/docs/languages/ruby/integrations/devise)
|
270
|
-
* Platforms
|
271
|
-
* [**Heroku**](https://timber.io/docs/languages/ruby/integrations/heroku)
|
272
|
-
* [**System / Server**](https://timber.io/docs/languages/ruby/integrations/system)
|
273
|
-
|
274
|
-
...more coming soon! Make a request by [opening an issue](https://github.com/timberio/timber-ruby/issues/new)
|
275
|
-
|
276
|
-
|
277
|
-
## Get things done with your logs
|
278
|
-
|
279
|
-
Logging features designed to help developers get more done:
|
280
|
-
|
281
|
-
1. [**Powerful searching.** - Find what you need faster.](https://timber.io/docs/app/console/searching)
|
282
|
-
2. [**Live tail users.** - Easily solve customer issues.](https://timber.io/docs/app/console/tail-a-user)
|
283
|
-
3. [**View logs per HTTP request.** - See the full story without the noise.](https://timber.io/docs/app/console/trace-http-requests)
|
284
|
-
4. [**Inspect HTTP request parameters.** - Quickly reproduce issues.](https://timber.io/docs/app/console/inspect-http-requests)
|
285
|
-
5. [**Threshold based alerting.** - Know when things break.](https://timber.io/docs/app/alerts)
|
286
|
-
6. ...and more! Checkout our [the Timber application docs](https://timber.io/docs/app)
|
287
|
-
|
288
|
-
|
289
|
-
## The Timber Console
|
290
|
-
|
291
|
-
[![Timber Console](http://files.timber.io/images/readme-interface7.gif)](https://timber.io/docs/app)
|
292
|
-
|
293
|
-
[Learn more about our app.](https://timber.io/docs/app)
|
294
|
-
|
295
|
-
## Your Moment of Zen
|
296
|
-
|
297
|
-
<p align="center" style="background: #221f40;">
|
298
|
-
<a href="https://timber.io"><img src="http://files.timber.io/images/readme-log-truth.png" height="947" /></a>
|
39
|
+
<p align="center">
|
40
|
+
<a href="https://timber.io">Timber</a> •
|
41
|
+
<a href="https://docs.timber.io">Docs</a> •
|
42
|
+
<a href="https://timber.io/pricing">Pricing</a> •
|
43
|
+
<a href="https://timber.io/terms">Security</a> •
|
44
|
+
<a href="https://timber.io/privacy">Compliance</a>
|
299
45
|
</p>
|
data/Rakefile
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "timber"
|
3
|
+
|
4
|
+
def puts_with_level(message, level = :info)
|
5
|
+
case level
|
6
|
+
when :info
|
7
|
+
puts("\e[31m#{message}\e[0m")
|
8
|
+
when :error
|
9
|
+
puts("\e[31m#{message}\e[0m")
|
10
|
+
when :success
|
11
|
+
puts("\e[32m#{message}\e[0m")
|
12
|
+
else
|
13
|
+
puts(message)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
task :test_the_pipes, [:api_key] do |t, args|
|
18
|
+
support_email = "support@timber.io"
|
19
|
+
# Do not modify below this line. It's important to keep the `Timber::Logger`
|
20
|
+
# because it provides an API for logging structured data and capturing context.
|
21
|
+
header = <<-HEREDOC
|
22
|
+
^ ^ ^ ^ ^ ^ ___I_ ^ ^ ^ ^ ^ ^ ^
|
23
|
+
/|\\/|\\ /|\\/|\\/|\\ /|\\ /\\-_--\\ /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\
|
24
|
+
/|\\/|\\ /|\\/|\\/|\\ /|\\ / \\_-__\\ /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\
|
25
|
+
/|\\/|\\ /|\\/|\\/|\\ /|\\ |[]| [] | /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\
|
26
|
+
============================================================
|
27
|
+
TIMBER.IO - TESTING THE PIPES
|
28
|
+
============================================================
|
29
|
+
HEREDOC
|
30
|
+
|
31
|
+
puts header
|
32
|
+
|
33
|
+
current_context = Timber::CurrentContext.instance.snapshot
|
34
|
+
entry = Timber::LogEntry.new(:info, Time.now, nil, "Testing the pipes (click the inspect icon to view more details)", current_context, nil)
|
35
|
+
http_device = Timber::LogDevices::HTTP.new(args.api_key, flush_continuously: false)
|
36
|
+
response = http_device.deliver_one(entry)
|
37
|
+
if response.is_a?(Exception)
|
38
|
+
message = <<~HEREDOC
|
39
|
+
Unable to deliver logs.
|
40
|
+
Here's what we received from the Timber API:
|
41
|
+
#{response.inspect}
|
42
|
+
If you continue to have trouble please contact support:
|
43
|
+
#{support_email}
|
44
|
+
HEREDOC
|
45
|
+
puts_with_level(message, :error)
|
46
|
+
elsif response.is_a?(Net::HTTPResponse)
|
47
|
+
if response.code.start_with? '2'
|
48
|
+
puts_with_level("Logs successfully sent! View them at https://app.timber.io",
|
49
|
+
:success)
|
50
|
+
else
|
51
|
+
message =
|
52
|
+
<<~HEREDOC
|
53
|
+
Unable to deliver logs.
|
54
|
+
We received a #{response.code} response from the Timber API:
|
55
|
+
#{response.body.inspect}
|
56
|
+
If you continue to have trouble please contact support:
|
57
|
+
#{support_email}
|
58
|
+
HEREDOC
|
59
|
+
puts_with_level(message, :error)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
task :console do
|
65
|
+
require 'irb'
|
66
|
+
require 'irb/completion'
|
67
|
+
require 'timber'
|
68
|
+
$VERBOSE = nil
|
69
|
+
|
70
|
+
def reload!
|
71
|
+
files = $LOADED_FEATURES.select { |feat| feat =~ /\/timber\// }
|
72
|
+
files.each { |file| load file }
|
73
|
+
"reloaded"
|
74
|
+
end
|
75
|
+
|
76
|
+
ARGV.clear
|
77
|
+
IRB.start
|
78
|
+
end
|