timber 2.1.0.rc5 → 2.1.0.rc6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +6 -7
- data/lib/timber/cli/config_file.rb +4 -3
- data/lib/timber/cli/installers/config_file.rb +1 -1
- data/lib/timber/config/integrations.rb +3 -3
- data/lib/timber/contexts/custom.rb +1 -1
- data/lib/timber/contexts/http.rb +4 -4
- data/lib/timber/contexts/organization.rb +1 -1
- data/lib/timber/contexts/release.rb +3 -2
- data/lib/timber/contexts/runtime.rb +1 -1
- data/lib/timber/contexts/session.rb +2 -2
- data/lib/timber/contexts/system.rb +4 -1
- data/lib/timber/contexts/user.rb +1 -1
- data/lib/timber/events/controller_call.rb +1 -1
- data/lib/timber/events/custom.rb +1 -1
- data/lib/timber/events/exception.rb +1 -1
- data/lib/timber/events/http_client_request.rb +1 -1
- data/lib/timber/events/http_client_response.rb +1 -1
- data/lib/timber/events/http_server_request.rb +1 -1
- data/lib/timber/events/http_server_response.rb +1 -1
- data/lib/timber/events/sql_query.rb +1 -1
- data/lib/timber/events/template_render.rb +1 -1
- data/lib/timber/log_devices/http.rb +1 -1
- data/lib/timber/log_entry.rb +2 -2
- data/lib/timber/overrides/lograge.rb +4 -0
- data/lib/timber/version.rb +1 -1
- data/spec/timber/cli/config_file_spec.rb +4 -2
- data/spec/timber/cli/installers/config_file_spec.rb +2 -2
- metadata +3 -3
- data/CHANGELOG +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a643334c71fa0882be4dff042d82a30e2b46a6a
|
4
|
+
data.tar.gz: 5fa71626d12aa84e4235de2134c4dead24de3bd3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b51e148b80b8054a020ff4a3e6a0d0044755da44373360aedda5c3c495e53c4b920d4e697bfb25f778bccc7f1fe39c1e14738af3813a312dfc8ebb4b39579b57
|
7
|
+
data.tar.gz: 59b9e2d8caf5072fc05a17939c734e5f4fda0800f8b6b92a4f8acffd28ae0951e35561f2831a3bc782969690f52ba8a45307eceb7e27d056306e515ae3e90206
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
[![ISC License](https://img.shields.io/badge/license-ISC-ff69b4.svg)](LICENSE.md)
|
4
4
|
[![Build Status](https://travis-ci.org/timberio/timber-ruby.svg?branch=master)](https://travis-ci.org/timberio/timber-ruby)
|
5
|
-
[![Build Status](https://travis-ci.org/timberio/timber-ruby.svg?branch=master)](https://travis-ci.org/timberio/timber-ruby)
|
6
5
|
[![Code Climate](https://codeclimate.com/github/timberio/timber-ruby/badges/gpa.svg)](https://codeclimate.com/github/timberio/timber-ruby)
|
7
6
|
[![View docs](https://img.shields.io/badge/docs-viewdocs-blue.svg?style=flat-square "Viewdocs")](http://www.rubydoc.info/github/timberio/timber-ruby)
|
8
7
|
|
@@ -198,8 +197,8 @@ end
|
|
198
197
|
|
199
198
|
Aggregates destroy details, and with Timber capturing metrics and timings is just logging events.
|
200
199
|
Timber is built on modern big-data principles, it can calculate aggregates across terrabytes of
|
201
|
-
data in seconds. Don't reduce the quality of your data
|
202
|
-
|
200
|
+
data in seconds. Don't reduce the quality of your log data to accomodate a restrive
|
201
|
+
logging system.
|
203
202
|
|
204
203
|
Here's a timing example. Notice how Timber automatically calculates the time and adds the timing
|
205
204
|
to the message.
|
@@ -213,7 +212,7 @@ logger.info("Processed background job", background_job: {time_ms: timer})
|
|
213
212
|
# => Processed background job in 54.2ms @metadata {"level": "info", "event": {"background_job": {"time_ms": 54.2}}}
|
214
213
|
```
|
215
214
|
|
216
|
-
And of course, `time_ms` can also take a `Float`:
|
215
|
+
And of course, `time_ms` can also take a `Float` or `Fixnum`:
|
217
216
|
|
218
217
|
```ruby
|
219
218
|
logger.info("Processed background job", background_job: {time_ms: 45.6})
|
@@ -296,10 +295,10 @@ config.integrations.rack.http_events.collapse_into_single_event = true
|
|
296
295
|
```
|
297
296
|
|
298
297
|
This does _not_ silence the controller call log event. This is because Timber captures the
|
299
|
-
parameters passed to the controller, which
|
298
|
+
parameters passed to the controller, which are generally valuable when debugging.
|
300
299
|
|
301
|
-
For a full list of
|
302
|
-
[Timber::Integrations](http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Integrations)
|
300
|
+
For a full list of integration settings, see
|
301
|
+
[Timber::Config::Integrations](http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Config/Integrations)
|
303
302
|
|
304
303
|
---
|
305
304
|
|
@@ -3,14 +3,15 @@ require "timber/cli/file_helper"
|
|
3
3
|
module Timber
|
4
4
|
class CLI
|
5
5
|
class ConfigFile
|
6
|
-
attr_reader :path
|
6
|
+
attr_reader :path, :file_helper
|
7
7
|
|
8
|
-
def initialize(path)
|
8
|
+
def initialize(path, file_helper)
|
9
9
|
@path = path
|
10
|
+
@file_helper = file_helper
|
10
11
|
end
|
11
12
|
|
12
13
|
def create!
|
13
|
-
|
14
|
+
file_helper.write(path, content)
|
14
15
|
end
|
15
16
|
|
16
17
|
def exists?
|
@@ -29,7 +29,7 @@ module Timber
|
|
29
29
|
Timber::Integrations::ActionController
|
30
30
|
end
|
31
31
|
|
32
|
-
# Convenience method for accessing the {Timber::
|
32
|
+
# Convenience method for accessing the {Timber::Integrations::ActionView} class
|
33
33
|
# specific configuration.
|
34
34
|
#
|
35
35
|
# @example
|
@@ -39,7 +39,7 @@ module Timber
|
|
39
39
|
Timber::Integrations::ActionView
|
40
40
|
end
|
41
41
|
|
42
|
-
# Convenience method for accessing the {Timber::
|
42
|
+
# Convenience method for accessing the {Timber::Integrations::ActiveRecord} class
|
43
43
|
# specific configuration.
|
44
44
|
#
|
45
45
|
# @example
|
@@ -49,7 +49,7 @@ module Timber
|
|
49
49
|
Timber::Integrations::ActiveRecord
|
50
50
|
end
|
51
51
|
|
52
|
-
# Convenience method for accessing the various `Timber::
|
52
|
+
# Convenience method for accessing the various `Timber::Integrations::Rack::*`
|
53
53
|
# classes. See {Rack} for a list of methods available.
|
54
54
|
#
|
55
55
|
# @example
|
@@ -28,7 +28,7 @@ module Timber
|
|
28
28
|
@data = attributes[:data] || raise(ArgumentError.new(":data is required"))
|
29
29
|
end
|
30
30
|
|
31
|
-
# Builds a hash representation
|
31
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
32
32
|
def as_json(options = {})
|
33
33
|
{Timber::Util::Object.try(type, :to_sym) => data}
|
34
34
|
end
|
data/lib/timber/contexts/http.rb
CHANGED
@@ -3,15 +3,15 @@ require "timber/context"
|
|
3
3
|
module Timber
|
4
4
|
module Contexts
|
5
5
|
# The HTTP context adds data about the current HTTP request being processed to your logs.
|
6
|
-
# This allows
|
6
|
+
# This allows you to tail and filter by this data. A very useful piece of data this
|
7
7
|
# captures is the request ID. This gives you the ability to trace requests and view logs
|
8
8
|
# for a specific request only. For example, say you've searched your logs and found the
|
9
9
|
# specific line you are looking for, but it lacks context. With Timber you can simply
|
10
10
|
# click the request ID and "zoom out" to view all logs for that request. This gives you
|
11
11
|
# complete picture of how the log line in questio was generated.
|
12
12
|
#
|
13
|
-
# @note This context should be installed automatically through
|
14
|
-
#
|
13
|
+
# @note This context should be installed automatically through the,
|
14
|
+
# {Intregrations::Rack::HTTPContext} Rack middleware.
|
15
15
|
class HTTP < Context
|
16
16
|
@keyspace = :http
|
17
17
|
|
@@ -24,7 +24,7 @@ module Timber
|
|
24
24
|
@request_id = attributes[:request_id]
|
25
25
|
end
|
26
26
|
|
27
|
-
# Builds a hash representation
|
27
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
28
28
|
def as_json(_options = {})
|
29
29
|
{:method => method, :path => path, :remote_addr => remote_addr, :request_id => request_id}
|
30
30
|
end
|
@@ -28,7 +28,7 @@ module Timber
|
|
28
28
|
@name = attributes[:name]
|
29
29
|
end
|
30
30
|
|
31
|
-
# Builds a hash representation
|
31
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
32
32
|
def as_json(_options = {})
|
33
33
|
{id: Timber::Util::Object.try(id, :to_s), name: name}
|
34
34
|
end
|
@@ -5,7 +5,8 @@ require "timber/util"
|
|
5
5
|
module Timber
|
6
6
|
module Contexts
|
7
7
|
# The release context tracks application releases / versions / deploys.
|
8
|
-
#
|
8
|
+
#
|
9
|
+
# @note To automatically set this context, see {.from_env}.
|
9
10
|
class Release < Context
|
10
11
|
@keyspace = :release
|
11
12
|
|
@@ -40,7 +41,7 @@ module Timber
|
|
40
41
|
@version = attributes[:version]
|
41
42
|
end
|
42
43
|
|
43
|
-
# Builds a hash representation
|
44
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
44
45
|
def as_json(_options = {})
|
45
46
|
{commit_hash: commit_hash, created_at: created_at, version: version}
|
46
47
|
end
|
@@ -20,7 +20,7 @@ module Timber
|
|
20
20
|
@module_name = attributes[:module_name]
|
21
21
|
end
|
22
22
|
|
23
|
-
# Builds a hash representation
|
23
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
24
24
|
def as_json(_options = {})
|
25
25
|
{application: application, class_name: class_name, file: file, function: function,
|
26
26
|
line: line, module_name: module_name}
|
@@ -3,7 +3,7 @@ require "timber/util"
|
|
3
3
|
|
4
4
|
module Timber
|
5
5
|
module Contexts
|
6
|
-
# The session context adds the current session ID to your logs. This allows
|
6
|
+
# The session context adds the current session ID to your logs. This allows you
|
7
7
|
# to tail and filter logs by specific session IDs. Moreover, it gives you a unique
|
8
8
|
# identifier to report on user activity by session. This way your logs can tell the
|
9
9
|
# story of how many time a user has engaged your site.
|
@@ -19,7 +19,7 @@ module Timber
|
|
19
19
|
@id = attributes[:id] || raise(ArgumentError.new(":id is required"))
|
20
20
|
end
|
21
21
|
|
22
|
-
# Builds a hash representation
|
22
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
23
23
|
def as_json(_options = {})
|
24
24
|
{id: Timber::Util::Object.try(id, :to_s)}
|
25
25
|
end
|
@@ -4,6 +4,9 @@ require "timber/util"
|
|
4
4
|
module Timber
|
5
5
|
module Contexts
|
6
6
|
# The system context tracks OS level process information, such as the process ID.
|
7
|
+
#
|
8
|
+
# @note This is tracked automatically in {CurrentContext}. When the current context
|
9
|
+
# is initialized, the system context gets added automatically.
|
7
10
|
class System < Context
|
8
11
|
@keyspace = :system
|
9
12
|
|
@@ -15,7 +18,7 @@ module Timber
|
|
15
18
|
@pid = @pid.to_s
|
16
19
|
end
|
17
20
|
|
18
|
-
# Builds a hash representation
|
21
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
19
22
|
def as_json(_options = {})
|
20
23
|
{hostname: hostname, pid: Timber::Util::Object.try(pid, :to_s)}
|
21
24
|
end
|
data/lib/timber/contexts/user.rb
CHANGED
@@ -21,7 +21,7 @@ module Timber
|
|
21
21
|
@email = attributes[:email]
|
22
22
|
end
|
23
23
|
|
24
|
-
# Builds a hash representation
|
24
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
25
25
|
def as_json(_options = {})
|
26
26
|
{id: Timber::Util::Object.try(id, :to_s), name: name, email: email}
|
27
27
|
end
|
@@ -26,7 +26,7 @@ module Timber
|
|
26
26
|
end
|
27
27
|
alias to_h to_hash
|
28
28
|
|
29
|
-
# Builds a hash representation
|
29
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
30
30
|
def as_json(_options = {})
|
31
31
|
{:controller_call => to_hash}
|
32
32
|
end
|
data/lib/timber/events/custom.rb
CHANGED
@@ -41,7 +41,7 @@ module Timber
|
|
41
41
|
end
|
42
42
|
alias to_h to_hash
|
43
43
|
|
44
|
-
# Builds a hash representation
|
44
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
45
45
|
def as_json(_options = {})
|
46
46
|
{:custom => to_hash}
|
47
47
|
end
|
@@ -28,7 +28,7 @@ module Timber
|
|
28
28
|
end
|
29
29
|
alias to_h to_hash
|
30
30
|
|
31
|
-
# Builds a hash representation
|
31
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
32
32
|
def as_json(_options = {})
|
33
33
|
{:exception => to_hash}
|
34
34
|
end
|
@@ -33,7 +33,7 @@ module Timber
|
|
33
33
|
end
|
34
34
|
alias to_h to_hash
|
35
35
|
|
36
|
-
# Builds a hash representation
|
36
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
37
37
|
def as_json(_options = {})
|
38
38
|
{:http_client_request => to_hash}
|
39
39
|
end
|
@@ -28,7 +28,7 @@ module Timber
|
|
28
28
|
end
|
29
29
|
alias to_h to_hash
|
30
30
|
|
31
|
-
# Builds a hash representation
|
31
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
32
32
|
def as_json(_options = {})
|
33
33
|
{:http_client_response => to_hash}
|
34
34
|
end
|
@@ -30,7 +30,7 @@ module Timber
|
|
30
30
|
end
|
31
31
|
alias to_h to_hash
|
32
32
|
|
33
|
-
# Builds a hash representation
|
33
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
34
34
|
def as_json(_options = {})
|
35
35
|
{:http_server_request => to_hash}
|
36
36
|
end
|
@@ -26,7 +26,7 @@ module Timber
|
|
26
26
|
end
|
27
27
|
alias to_h to_hash
|
28
28
|
|
29
|
-
# Builds a hash representation
|
29
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
30
30
|
def as_json(_options = {})
|
31
31
|
{:http_server_response => to_hash}
|
32
32
|
end
|
@@ -21,7 +21,7 @@ module Timber
|
|
21
21
|
end
|
22
22
|
alias to_h to_hash
|
23
23
|
|
24
|
-
# Builds a hash representation
|
24
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
25
25
|
def as_json(_options = {})
|
26
26
|
{:sql_query => to_hash}
|
27
27
|
end
|
@@ -21,7 +21,7 @@ module Timber
|
|
21
21
|
end
|
22
22
|
alias to_h to_hash
|
23
23
|
|
24
|
-
# Builds a hash representation
|
24
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
25
25
|
def as_json(_options = {})
|
26
26
|
{:template_render => to_hash}
|
27
27
|
end
|
@@ -12,7 +12,7 @@ module Timber
|
|
12
12
|
# A highly efficient log device that buffers and delivers log messages over HTTPS to
|
13
13
|
# the Timber API. It uses batches, keep-alive connections, and msgpack to deliver logs with
|
14
14
|
# high-throughput and little overhead. All log preparation and delivery is done asynchronously
|
15
|
-
# in a thread as not to block application execution and
|
15
|
+
# in a thread as not to block application execution and efficiently deliver logs for
|
16
16
|
# multi-threaded environments.
|
17
17
|
#
|
18
18
|
# See {#initialize} for options and more details.
|
data/lib/timber/log_entry.rb
CHANGED
@@ -13,7 +13,7 @@ module Timber
|
|
13
13
|
attr_reader :context_snapshot, :event, :level, :message, :progname, :tags, :time, :time_ms
|
14
14
|
|
15
15
|
# Creates a log entry suitable to be sent to the Timber API.
|
16
|
-
# @param
|
16
|
+
# @param level [Integer] the log level / severity
|
17
17
|
# @param time [Time] the exact time the log message was written
|
18
18
|
# @param progname [String] the progname scope for the log message
|
19
19
|
# @param message [String] Human readable log message.
|
@@ -37,7 +37,7 @@ module Timber
|
|
37
37
|
@event = event
|
38
38
|
end
|
39
39
|
|
40
|
-
# Builds a hash representation
|
40
|
+
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
|
41
41
|
def as_json(options = {})
|
42
42
|
options ||= {}
|
43
43
|
hash = {
|
@@ -1,5 +1,9 @@
|
|
1
1
|
# Timber and lograge are not compatible installed together. Using lograge
|
2
2
|
# with the Timber.io *service* is perfectly fine, but not with the Timber *gem*.
|
3
|
+
#
|
4
|
+
# Timber does ship with a {Timber::Config#logrageify!} option that configures
|
5
|
+
# Timber to behave similarly to Lograge (silencing various logs). Check out
|
6
|
+
# the aforementioned method or the README for info.
|
3
7
|
begin
|
4
8
|
require "lograge"
|
5
9
|
|
data/lib/timber/version.rb
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Timber::CLI::ConfigFile, :rails_23 => true do
|
4
|
+
let(:api) { Timber::CLI::API.new("abcd1234") }
|
5
|
+
let(:file_helper) { @file_helper = Timber::CLI::FileHelper.new(api) }
|
4
6
|
let(:path) { "config/initializers/timber.rb" }
|
5
|
-
let(:config_file) { described_class.new(path) }
|
7
|
+
let(:config_file) { described_class.new(path, file_helper) }
|
6
8
|
let(:initial_contents) { "# Timber.io Ruby Configuration - Simple Structured Logging\n#\n# ^ ^ ^ ^ ___I_ ^ ^ ^ ^ ^ ^ ^\n# /|\\/|\\/|\\ /|\\ /\\-_--\\ /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\\n# /|\\/|\\/|\\ /|\\ / \\_-__\\ /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\\n# /|\\/|\\/|\\ /|\\ |[]| [] | /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\\n# -------------------------------------------------------------------\n# Website: https://timber.io\n# Documentation: https://timber.io/docs\n# Support: support@timber.io\n# -------------------------------------------------------------------\n\nconfig = Timber::Config.instance\n\n# Add additional configuration here.\n# For a full list of configuration options and their explanations see:\n# http://www.rubydoc.info/github/timberio/timber-ruby/Timber/Config\n\n" }
|
7
9
|
let(:contents_hook) { "# Add additional configuration here." }
|
8
10
|
|
9
11
|
describe ".create!" do
|
10
12
|
it "should create" do
|
11
|
-
expect(
|
13
|
+
expect(config_file.file_helper).to receive(:write).with(path, initial_contents).exactly(1).times
|
12
14
|
config_file.create!
|
13
15
|
end
|
14
16
|
end
|
@@ -23,9 +23,9 @@ describe Timber::CLI::Installers::ConfigFile, :rails_23 => true do
|
|
23
23
|
describe ".run" do
|
24
24
|
it "should run properly" do
|
25
25
|
path = "/path/to/file"
|
26
|
-
config_file = Timber::CLI::ConfigFile.new(path)
|
26
|
+
config_file = Timber::CLI::ConfigFile.new(path, installer.file_helper)
|
27
27
|
|
28
|
-
expect(Timber::CLI::ConfigFile).to receive(:new).with(path).and_return(config_file)
|
28
|
+
expect(Timber::CLI::ConfigFile).to receive(:new).with(path, installer.file_helper).and_return(config_file)
|
29
29
|
expect(config_file).to receive(:exists?).exactly(1).times.and_return(false)
|
30
30
|
expect(installer).to receive(:logrageify?).exactly(1).times.and_return(true)
|
31
31
|
expect(config_file).to receive(:logrageify!).exactly(1).times
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.0.
|
4
|
+
version: 2.1.0.rc6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Timber Technologies, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-06-
|
11
|
+
date: 2017-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -134,7 +134,7 @@ files:
|
|
134
134
|
- ".rspec"
|
135
135
|
- ".travis.yml"
|
136
136
|
- ".yardopts"
|
137
|
-
- CHANGELOG
|
137
|
+
- CHANGELOG.md
|
138
138
|
- Gemfile
|
139
139
|
- LICENSE.md
|
140
140
|
- README.md
|
data/CHANGELOG
DELETED