sensible_logging 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +4 -2
- data/.gitignore +1 -0
- data/.rubocop.yml +8 -0
- data/.ruby-version +1 -1
- data/.simplecov +7 -0
- data/README.md +71 -20
- data/Rakefile +2 -0
- data/examples/app.rb +8 -2
- data/examples/config.ru +2 -1
- data/lib/sensible_logging.rb +50 -9
- data/lib/sensible_logging/helpers/logger_io_wrap.rb +23 -0
- data/lib/sensible_logging/helpers/subdomain_parser.rb +4 -1
- data/lib/sensible_logging/middlewares/request_id.rb +3 -0
- data/lib/sensible_logging/middlewares/request_logger.rb +6 -3
- data/lib/sensible_logging/middlewares/tagged_logger.rb +24 -4
- data/lib/sensible_logging/version.rb +3 -1
- data/sensible_logging.gemspec +11 -6
- metadata +81 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a3b74510253681a9999278535633d1297f065418722947adab13556809eff9a
|
4
|
+
data.tar.gz: ea8e280d74e25f055ccb30fea6c5adbe87154e5b67e2ded25a2b0c87365f5bea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ffa0e0f617c0a8725b06ab70e44735206c7e88001912ccaa2b150e92ce27877af0fa4cc1cbfecaa96c1b1ce1cf433c98184a106233ec9a75cc5ffaffb188e782
|
7
|
+
data.tar.gz: 3f5758087a70913f9aeb4bd52c8fbd6177e316712cd8e70d41eabd3f55247964e4cc73d4174b2c238316daa3c732dbaa2ae6ebfb9eda27aff39a2c144864f497
|
data/.circleci/config.yml
CHANGED
@@ -2,16 +2,18 @@ version: 2
|
|
2
2
|
jobs:
|
3
3
|
build_and_test:
|
4
4
|
docker:
|
5
|
-
- image: circleci/ruby:2.
|
5
|
+
- image: circleci/ruby:2.6.1
|
6
6
|
environment:
|
7
|
-
|
7
|
+
RACK_ENV: test
|
8
8
|
|
9
9
|
steps:
|
10
10
|
- checkout
|
11
11
|
|
12
|
+
- run: gem install bundler
|
12
13
|
- run: bundle install --jobs=4 --retry=3 --path vendor/bundle
|
13
14
|
|
14
15
|
- run: bundle exec rspec --backtrace
|
16
|
+
- run: bundle exec rubocop
|
15
17
|
|
16
18
|
workflows:
|
17
19
|
version: 2
|
data/.gitignore
CHANGED
data/.rubocop.yml
ADDED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.6.1
|
data/.simplecov
ADDED
data/README.md
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
-
# Sensible
|
1
|
+
# Sensible Logging
|
2
2
|
|
3
|
-
[![CircleCI](https://circleci.com/gh/madetech/sensible_logging.svg?style=svg)](https://circleci.com/gh/madetech/sensible_logging)
|
3
|
+
[![CircleCI](https://circleci.com/gh/madetech/sensible_logging.svg?style=svg)](https://circleci.com/gh/madetech/sensible_logging)
|
4
|
+
[![codecov](https://codecov.io/gh/madetech/sensible_logging/branch/master/graph/badge.svg)](https://codecov.io/gh/madetech/sensible_logging)
|
5
|
+
[![Gem Version](https://badge.fury.io/rb/sensible_logging.png)](http://badge.fury.io/rb/sensible_logging)
|
4
6
|
|
5
|
-
|
6
|
-
A logging library with sensible defaults for Sinatra apps.
|
7
|
+
A logging extension with sensible defaults for Sinatra apps.
|
7
8
|
|
8
9
|
## Features
|
9
10
|
|
10
|
-
* Add (or use an existing if present `X-Request-Id`
|
11
|
+
* Add a request UUID (or use an existing one if present in the `X-Request-Id` HTTP header) for use in logs, your app or other middlewares
|
11
12
|
* Trim the request logs to the bare minimal (inspired by lograge):
|
12
13
|
* method
|
13
14
|
* path
|
@@ -15,28 +16,67 @@ A logging library with sensible defaults for Sinatra apps.
|
|
15
16
|
* status
|
16
17
|
* duration
|
17
18
|
* params if a `GET` request
|
19
|
+
|
20
|
+
Example log line:
|
21
|
+
```
|
22
|
+
method=GET path=/contact client=192.168.1.254 status=200 duration=0.124 params={"category"=>"question"}
|
23
|
+
```
|
18
24
|
* Tagged logging, with some sensible defaults:
|
25
|
+
* severity
|
19
26
|
* subdomain
|
20
27
|
* environment
|
21
|
-
*
|
28
|
+
* request UUID
|
29
|
+
|
30
|
+
Example log line:
|
31
|
+
```
|
32
|
+
[INFO] [www.gb] [staging] [6004bb70-7b6d-43b6-a2cf-72d0336663ba] @todo tidy sql query
|
33
|
+
```
|
22
34
|
|
23
35
|
## Usage
|
24
36
|
|
25
|
-
1. Add `sensible_logging` to your `Gemfile` and
|
26
|
-
2. In `app.rb` register the module and then define your logging defaults.
|
37
|
+
1. Add `sensible_logging` to your `Gemfile` and install with `bundle install`:
|
27
38
|
|
28
|
-
```ruby
|
29
|
-
|
39
|
+
```ruby
|
40
|
+
gem 'sensible_logging'
|
41
|
+
```
|
42
|
+
2. In your `app.rb` register the module and then define your logging configuration:
|
30
43
|
|
31
|
-
|
32
|
-
|
44
|
+
```ruby
|
45
|
+
require 'sensible_logging'
|
33
46
|
|
34
|
-
|
35
|
-
|
36
|
-
)
|
47
|
+
class App < Sinatra::Base
|
48
|
+
register Sinatra::SensibleLogging
|
37
49
|
|
38
|
-
#
|
39
|
-
|
50
|
+
# Initialise Sensible Logging to add our middlewares.
|
51
|
+
sensible_logging(
|
52
|
+
logger: Logger.new(STDOUT)
|
53
|
+
)
|
54
|
+
|
55
|
+
# Configure the log level for different environments
|
56
|
+
configure :production do
|
57
|
+
set :log_level, Logger::INFO
|
58
|
+
end
|
59
|
+
|
60
|
+
# Requests will be logged in a minimal format
|
61
|
+
get '/' do
|
62
|
+
'Hello!'
|
63
|
+
end
|
64
|
+
|
65
|
+
get '/about' do
|
66
|
+
# The standard Sinatra logger helper will use the Sensible Logging gem
|
67
|
+
logger.info('About page')
|
68
|
+
end
|
69
|
+
|
70
|
+
get '/contact' do
|
71
|
+
# In addition to the default tags, you can add additional ones by using the `tagged` block on the `logger` helper
|
72
|
+
# [INFO] [localhost] [development] [a9d0183d-a3c3-4081-b502-38dcf4c3c4d7] [todo] Contact page
|
73
|
+
logger.tagged('todo') do |logger|
|
74
|
+
logger.info('Contact page')
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# rest of code omitted
|
79
|
+
```
|
40
80
|
|
41
81
|
### Available options
|
42
82
|
|
@@ -45,13 +85,20 @@ There are a number of options that you can pass into `sensible_logging`:
|
|
45
85
|
* `logger`: The logging object.
|
46
86
|
**Default**: `Logger.new(STDOUT)`
|
47
87
|
* `use_default_log_tags`: Includes the subdomain, `RACK_ENV` and unique request ID in the log tags.
|
48
|
-
**Default**: `true`
|
88
|
+
**Default**: `true`
|
49
89
|
* `tld_length`: For example, if your domain was `www.google.com` this would result in `www` being tagged as your subdomain. If your domain is `www.google.co.uk`, set this value to `2` to correctly identify the subdomain as `www` rather than `www.google`.
|
50
90
|
**Default**: `1`.
|
51
91
|
* `log_tags`: An array of additional log tags to include. This can be strings, or you can include a `lambda` that will be evaluated. The `lambda` is passed a Rack `Request` object, and it must return an array of string values.
|
52
92
|
**Default**: `[]`
|
53
93
|
* `exclude_params`: An array of parameter names to be excluded from `GET` requests. By default, `GET` parameters are outputted in logs. If for example with the request `http://google.com/?one=dog&two=cat` you didn't want the `one` logged, you would set `exclude_params` to be `['one']`
|
54
94
|
**Default**: `[]`
|
95
|
+
* `include_log_severity`: Includes the log severity in the tagged output, such as `INFO`, `DEBUG` etc
|
96
|
+
**Default**: `true`
|
97
|
+
|
98
|
+
Sensible Logger will also respect the following Sinatra settings:
|
99
|
+
|
100
|
+
* `log_level`: The level at which your logger object should respect logs. See above example.
|
101
|
+
**Default**: `Logger::DEBUG`
|
55
102
|
|
56
103
|
## Examples
|
57
104
|
|
@@ -74,7 +121,7 @@ You should notice in the logs:
|
|
74
121
|
* Standard Sinatra `logger` helper works out of the box within apps with tags.
|
75
122
|
* Excluded parameters are not included, in this example `two` based on `config.ru`
|
76
123
|
* The request log is minimal compared to out of the box Sinatra.
|
77
|
-
* `env['request_id']` is now available to
|
124
|
+
* `env['request_id']` is now available to group log lines from the same request together, or to use in additional services such as Sentry.
|
78
125
|
|
79
126
|
## FAQ
|
80
127
|
|
@@ -84,8 +131,12 @@ To quote [lograge][link_lograge] (which was the inspiration for this library):
|
|
84
131
|
|
85
132
|
> The syntax is heavily inspired by the log output of the Heroku router. It doesn't include any timestamp by default, instead, it assumes you use a proper log formatter instead.
|
86
133
|
|
134
|
+
## Authors
|
135
|
+
|
136
|
+
By [David Winter](https://github.com/davidwinter), [Mark Sta Ana](https://github.com/booyaa) & [Anthony King](https://github.com/cybojenix)
|
137
|
+
|
87
138
|
## License
|
88
139
|
|
89
140
|
MIT
|
90
141
|
|
91
|
-
[link_lograge]: https://github.com/roidrage/lograge#lograge---taming-rails-default-request-logging
|
142
|
+
[link_lograge]: https://github.com/roidrage/lograge#lograge---taming-rails-default-request-logging
|
data/Rakefile
CHANGED
data/examples/app.rb
CHANGED
@@ -1,14 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'sinatra/base'
|
2
4
|
require 'logger'
|
3
5
|
|
4
6
|
require_relative '../lib/sensible_logging'
|
5
7
|
|
8
|
+
# Example Sinatra app
|
6
9
|
class App < Sinatra::Base
|
7
10
|
register Sinatra::SensibleLogging
|
8
11
|
|
9
12
|
sensible_logging(
|
10
13
|
logger: Logger.new(STDOUT),
|
11
|
-
log_tags: [
|
14
|
+
log_tags: [->(req) { [req.port] }],
|
12
15
|
exclude_params: ['two']
|
13
16
|
)
|
14
17
|
|
@@ -21,7 +24,10 @@ class App < Sinatra::Base
|
|
21
24
|
end
|
22
25
|
|
23
26
|
get '/hello' do
|
24
|
-
logger.
|
27
|
+
logger.tagged('todo') do |logger|
|
28
|
+
logger.debug('test')
|
29
|
+
env['rack.errors'].puts('This is an example error')
|
30
|
+
end
|
25
31
|
'test'
|
26
32
|
end
|
27
33
|
|
data/examples/config.ru
CHANGED
data/lib/sensible_logging.rb
CHANGED
@@ -1,29 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'sinatra/base'
|
2
4
|
|
3
5
|
require_relative './sensible_logging/middlewares/request_id'
|
4
6
|
require_relative './sensible_logging/middlewares/tagged_logger'
|
5
7
|
require_relative './sensible_logging/middlewares/request_logger'
|
8
|
+
require_relative './sensible_logging/helpers/logger_io_wrap'
|
6
9
|
|
10
|
+
module Rack
|
11
|
+
# Disable Rack::CommonLogger
|
12
|
+
class CommonLogger
|
13
|
+
def call(env)
|
14
|
+
@app.call(env)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# Sinatra extension
|
7
20
|
module Sinatra
|
21
|
+
# Sensible logging library for Sinatra based Apps
|
8
22
|
module SensibleLogging
|
9
|
-
def sensible_logging(
|
23
|
+
def sensible_logging( # rubocop:disable Metrics/MethodLength, Metrics/ParameterLists
|
10
24
|
logger: Logger.new(STDOUT),
|
11
25
|
log_tags: [],
|
12
26
|
use_default_log_tags: true,
|
13
27
|
exclude_params: [],
|
14
|
-
tld_length: 1
|
28
|
+
tld_length: 1,
|
29
|
+
include_log_severity: true
|
15
30
|
)
|
16
|
-
|
17
|
-
|
18
|
-
|
31
|
+
setup_middlewares(
|
32
|
+
logger: logger,
|
33
|
+
log_tags: log_tags,
|
34
|
+
use_default_log_tags: use_default_log_tags,
|
35
|
+
exclude_params: exclude_params,
|
36
|
+
tld_length: tld_length,
|
37
|
+
include_log_severity: include_log_severity
|
38
|
+
)
|
19
39
|
|
20
40
|
before do
|
21
|
-
env['rack.
|
22
|
-
|
23
|
-
|
24
|
-
end
|
41
|
+
env['rack.logger'] = env['logger']
|
42
|
+
env['rack.errors'] = IOWrap.new(logger, level: Logger::ERROR)
|
43
|
+
logger.level = settings.log_level unless settings.log_level.nil?
|
25
44
|
end
|
26
45
|
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def setup_middlewares( # rubocop:disable Metrics/ParameterLists
|
50
|
+
logger:,
|
51
|
+
log_tags:,
|
52
|
+
use_default_log_tags:,
|
53
|
+
exclude_params:,
|
54
|
+
tld_length:,
|
55
|
+
include_log_severity:
|
56
|
+
)
|
57
|
+
use RequestId
|
58
|
+
use(
|
59
|
+
TaggedLogger,
|
60
|
+
logger: logger,
|
61
|
+
tags: log_tags,
|
62
|
+
use_default_tags: use_default_log_tags,
|
63
|
+
tld_length: tld_length,
|
64
|
+
include_log_severity: include_log_severity
|
65
|
+
)
|
66
|
+
use RequestLogger, exclude_params
|
67
|
+
end
|
27
68
|
end
|
28
69
|
|
29
70
|
register SensibleLogging
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'logger'
|
4
|
+
|
5
|
+
# Wrap Logger objects to behave as IO objects in Rack
|
6
|
+
class IOWrap
|
7
|
+
def initialize(logger, level: Logger::INFO)
|
8
|
+
@logger = logger
|
9
|
+
@level = level
|
10
|
+
end
|
11
|
+
|
12
|
+
def flush
|
13
|
+
# No-Op
|
14
|
+
end
|
15
|
+
|
16
|
+
def puts(message)
|
17
|
+
logger.add(level, message)
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
attr_reader :logger, :level
|
23
|
+
end
|
@@ -1,3 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Returns subdomains from a full qualified domain name
|
1
4
|
class SubdomainParser
|
2
5
|
attr_reader :tld_length
|
3
6
|
|
@@ -15,7 +18,7 @@ class SubdomainParser
|
|
15
18
|
|
16
19
|
subdomain_parts = domain_parts[0...subdomain_length]
|
17
20
|
|
18
|
-
return nil if subdomain_parts.
|
21
|
+
return nil if subdomain_parts.empty?
|
19
22
|
|
20
23
|
subdomain_parts.join('.')
|
21
24
|
end
|
@@ -1,12 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rack/request'
|
2
4
|
|
5
|
+
# Captures information around request
|
3
6
|
class RequestLogger
|
4
7
|
def initialize(app, filtered_params = [])
|
5
8
|
@app = app
|
6
9
|
@filtered_params = filtered_params
|
7
10
|
end
|
8
11
|
|
9
|
-
def call(env)
|
12
|
+
def call(env) # rubocop:disable Metrics/AbcSize
|
10
13
|
req = Rack::Request.new(env)
|
11
14
|
start_time = Time.now
|
12
15
|
status, headers, body = @app.call(env)
|
@@ -16,7 +19,7 @@ class RequestLogger
|
|
16
19
|
|
17
20
|
message = "method=#{req.request_method} path=#{req.path} client=#{client_ip} status=#{status} duration=#{end_time}"
|
18
21
|
filtered_params = filter_params(req)
|
19
|
-
message += " params=#{filtered_params}" if req.get? && !
|
22
|
+
message += " params=#{filtered_params}" if req.get? && !filtered_params.empty?
|
20
23
|
env['logger'].info(message)
|
21
24
|
[status, headers, body]
|
22
25
|
end
|
@@ -24,6 +27,6 @@ class RequestLogger
|
|
24
27
|
private
|
25
28
|
|
26
29
|
def filter_params(req)
|
27
|
-
req.params.
|
30
|
+
req.params.reject { |x| @filtered_params.include?(x) }
|
28
31
|
end
|
29
32
|
end
|
@@ -1,14 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'ipaddr'
|
2
4
|
require 'active_support/tagged_logging'
|
3
5
|
require_relative '../helpers/subdomain_parser'
|
4
6
|
|
7
|
+
# Allow custom tags to be captured
|
5
8
|
class TaggedLogger
|
6
|
-
def initialize(
|
9
|
+
def initialize( # rubocop:disable Metrics/ParameterLists
|
10
|
+
app,
|
11
|
+
logger: Logger.new(STDOUT),
|
12
|
+
tags: [],
|
13
|
+
use_default_tags: true,
|
14
|
+
tld_length: 1,
|
15
|
+
include_log_severity: true
|
16
|
+
)
|
7
17
|
@app = app
|
8
|
-
@logger = ActiveSupport::TaggedLogging.new(logger)
|
9
18
|
|
19
|
+
logger = setup_severity_tag(logger) if include_log_severity
|
20
|
+
|
21
|
+
@logger = ActiveSupport::TaggedLogging.new(logger)
|
10
22
|
@tags = []
|
11
|
-
@tags += default_tags(tld_length: tld_length) if
|
23
|
+
@tags += default_tags(tld_length: tld_length) if use_default_tags
|
12
24
|
@tags += tags
|
13
25
|
end
|
14
26
|
|
@@ -21,6 +33,14 @@ class TaggedLogger
|
|
21
33
|
|
22
34
|
private
|
23
35
|
|
36
|
+
def setup_severity_tag(logger)
|
37
|
+
original_formatter = logger.formatter || ActiveSupport::Logger::SimpleFormatter.new
|
38
|
+
logger.formatter = proc do |severity, *args|
|
39
|
+
"[#{severity}] #{original_formatter.call(severity, *args)}"
|
40
|
+
end
|
41
|
+
logger
|
42
|
+
end
|
43
|
+
|
24
44
|
def default_tags(tld_length: 1)
|
25
45
|
[lambda { |req|
|
26
46
|
[subdomain(req.host, tld_length) || 'n/a', ENV['RACK_ENV'], req.env['request_id']]
|
@@ -36,7 +56,7 @@ class TaggedLogger
|
|
36
56
|
|
37
57
|
def generate_tags(env)
|
38
58
|
req = Rack::Request.new(env)
|
39
|
-
|
59
|
+
@tags.map do |tag|
|
40
60
|
tag.call(req)
|
41
61
|
end
|
42
62
|
end
|
data/sensible_logging.gemspec
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
|
-
lib = File.expand_path('
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'sensible_logging/version'
|
5
6
|
|
@@ -19,13 +20,17 @@ Gem::Specification.new do |spec|
|
|
19
20
|
|
20
21
|
spec.require_paths = ['lib']
|
21
22
|
|
22
|
-
spec.add_runtime_dependency 'rack', '~> 2.0'
|
23
23
|
spec.add_runtime_dependency 'activesupport', '~> 5.2'
|
24
|
+
spec.add_runtime_dependency 'rack', '~> 2.0'
|
24
25
|
|
25
|
-
spec.add_development_dependency '
|
26
|
+
spec.add_development_dependency 'bundler', '~> 2.0.1'
|
27
|
+
spec.add_development_dependency 'codecov'
|
28
|
+
spec.add_development_dependency 'pry', '~> 0.12.2'
|
26
29
|
spec.add_development_dependency 'puma', '~> 3.12'
|
27
|
-
spec.add_development_dependency '
|
28
|
-
spec.add_development_dependency 'rake', '~> 10.0'
|
30
|
+
spec.add_development_dependency 'rake', '~> 12.3'
|
29
31
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
30
|
-
spec.add_development_dependency '
|
32
|
+
spec.add_development_dependency 'rubocop', '~> 0.65.0'
|
33
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 1.32.0'
|
34
|
+
spec.add_development_dependency 'simplecov'
|
35
|
+
spec.add_development_dependency 'sinatra', '~> 2.0'
|
31
36
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensible_logging
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Winter
|
@@ -10,8 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2019-
|
13
|
+
date: 2019-05-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: activesupport
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - "~>"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '5.2'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - "~>"
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '5.2'
|
15
29
|
- !ruby/object:Gem::Dependency
|
16
30
|
name: rack
|
17
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -27,33 +41,47 @@ dependencies:
|
|
27
41
|
- !ruby/object:Gem::Version
|
28
42
|
version: '2.0'
|
29
43
|
- !ruby/object:Gem::Dependency
|
30
|
-
name:
|
44
|
+
name: bundler
|
31
45
|
requirement: !ruby/object:Gem::Requirement
|
32
46
|
requirements:
|
33
47
|
- - "~>"
|
34
48
|
- !ruby/object:Gem::Version
|
35
|
-
version:
|
36
|
-
type: :
|
49
|
+
version: 2.0.1
|
50
|
+
type: :development
|
37
51
|
prerelease: false
|
38
52
|
version_requirements: !ruby/object:Gem::Requirement
|
39
53
|
requirements:
|
40
54
|
- - "~>"
|
41
55
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
56
|
+
version: 2.0.1
|
43
57
|
- !ruby/object:Gem::Dependency
|
44
|
-
name:
|
58
|
+
name: codecov
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: pry
|
45
73
|
requirement: !ruby/object:Gem::Requirement
|
46
74
|
requirements:
|
47
75
|
- - "~>"
|
48
76
|
- !ruby/object:Gem::Version
|
49
|
-
version:
|
77
|
+
version: 0.12.2
|
50
78
|
type: :development
|
51
79
|
prerelease: false
|
52
80
|
version_requirements: !ruby/object:Gem::Requirement
|
53
81
|
requirements:
|
54
82
|
- - "~>"
|
55
83
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
84
|
+
version: 0.12.2
|
57
85
|
- !ruby/object:Gem::Dependency
|
58
86
|
name: puma
|
59
87
|
requirement: !ruby/object:Gem::Requirement
|
@@ -69,61 +97,89 @@ dependencies:
|
|
69
97
|
- !ruby/object:Gem::Version
|
70
98
|
version: '3.12'
|
71
99
|
- !ruby/object:Gem::Dependency
|
72
|
-
name:
|
100
|
+
name: rake
|
73
101
|
requirement: !ruby/object:Gem::Requirement
|
74
102
|
requirements:
|
75
103
|
- - "~>"
|
76
104
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
105
|
+
version: '12.3'
|
78
106
|
type: :development
|
79
107
|
prerelease: false
|
80
108
|
version_requirements: !ruby/object:Gem::Requirement
|
81
109
|
requirements:
|
82
110
|
- - "~>"
|
83
111
|
- !ruby/object:Gem::Version
|
84
|
-
version: '
|
112
|
+
version: '12.3'
|
85
113
|
- !ruby/object:Gem::Dependency
|
86
|
-
name:
|
114
|
+
name: rspec
|
87
115
|
requirement: !ruby/object:Gem::Requirement
|
88
116
|
requirements:
|
89
117
|
- - "~>"
|
90
118
|
- !ruby/object:Gem::Version
|
91
|
-
version: '
|
119
|
+
version: '3.0'
|
92
120
|
type: :development
|
93
121
|
prerelease: false
|
94
122
|
version_requirements: !ruby/object:Gem::Requirement
|
95
123
|
requirements:
|
96
124
|
- - "~>"
|
97
125
|
- !ruby/object:Gem::Version
|
98
|
-
version: '
|
126
|
+
version: '3.0'
|
99
127
|
- !ruby/object:Gem::Dependency
|
100
|
-
name:
|
128
|
+
name: rubocop
|
101
129
|
requirement: !ruby/object:Gem::Requirement
|
102
130
|
requirements:
|
103
131
|
- - "~>"
|
104
132
|
- !ruby/object:Gem::Version
|
105
|
-
version:
|
133
|
+
version: 0.65.0
|
106
134
|
type: :development
|
107
135
|
prerelease: false
|
108
136
|
version_requirements: !ruby/object:Gem::Requirement
|
109
137
|
requirements:
|
110
138
|
- - "~>"
|
111
139
|
- !ruby/object:Gem::Version
|
112
|
-
version:
|
140
|
+
version: 0.65.0
|
113
141
|
- !ruby/object:Gem::Dependency
|
114
|
-
name:
|
142
|
+
name: rubocop-rspec
|
115
143
|
requirement: !ruby/object:Gem::Requirement
|
116
144
|
requirements:
|
117
145
|
- - "~>"
|
118
146
|
- !ruby/object:Gem::Version
|
119
|
-
version:
|
147
|
+
version: 1.32.0
|
120
148
|
type: :development
|
121
149
|
prerelease: false
|
122
150
|
version_requirements: !ruby/object:Gem::Requirement
|
123
151
|
requirements:
|
124
152
|
- - "~>"
|
125
153
|
- !ruby/object:Gem::Version
|
126
|
-
version:
|
154
|
+
version: 1.32.0
|
155
|
+
- !ruby/object:Gem::Dependency
|
156
|
+
name: simplecov
|
157
|
+
requirement: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - ">="
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '0'
|
162
|
+
type: :development
|
163
|
+
prerelease: false
|
164
|
+
version_requirements: !ruby/object:Gem::Requirement
|
165
|
+
requirements:
|
166
|
+
- - ">="
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: '0'
|
169
|
+
- !ruby/object:Gem::Dependency
|
170
|
+
name: sinatra
|
171
|
+
requirement: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - "~>"
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '2.0'
|
176
|
+
type: :development
|
177
|
+
prerelease: false
|
178
|
+
version_requirements: !ruby/object:Gem::Requirement
|
179
|
+
requirements:
|
180
|
+
- - "~>"
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '2.0'
|
127
183
|
description:
|
128
184
|
email:
|
129
185
|
- sre@madetech.com
|
@@ -134,7 +190,9 @@ files:
|
|
134
190
|
- ".circleci/config.yml"
|
135
191
|
- ".gitignore"
|
136
192
|
- ".rspec"
|
193
|
+
- ".rubocop.yml"
|
137
194
|
- ".ruby-version"
|
195
|
+
- ".simplecov"
|
138
196
|
- Gemfile
|
139
197
|
- LICENSE.txt
|
140
198
|
- README.md
|
@@ -142,6 +200,7 @@ files:
|
|
142
200
|
- examples/app.rb
|
143
201
|
- examples/config.ru
|
144
202
|
- lib/sensible_logging.rb
|
203
|
+
- lib/sensible_logging/helpers/logger_io_wrap.rb
|
145
204
|
- lib/sensible_logging/helpers/subdomain_parser.rb
|
146
205
|
- lib/sensible_logging/middlewares/request_id.rb
|
147
206
|
- lib/sensible_logging/middlewares/request_logger.rb
|
@@ -167,8 +226,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
167
226
|
- !ruby/object:Gem::Version
|
168
227
|
version: '0'
|
169
228
|
requirements: []
|
170
|
-
|
171
|
-
rubygems_version: 2.7.3
|
229
|
+
rubygems_version: 3.0.1
|
172
230
|
signing_key:
|
173
231
|
specification_version: 4
|
174
232
|
summary: Sensible logging defaults for your Sinatra app
|