sensible_logging 0.3.0 → 0.4.3
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 +4 -4
- data/.editorconfig +5 -0
- data/.github/FUNDING.yml +1 -0
- data/.github/dependabot.yml +8 -0
- data/.github/workflows/test.yml +27 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +15 -0
- data/.ruby-version +1 -1
- data/.simplecov +9 -0
- data/README.md +122 -16
- data/Rakefile +2 -0
- data/examples/app.rb +9 -3
- data/examples/config.ru +2 -1
- 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 +9 -4
- data/lib/sensible_logging/middlewares/tagged_logger.rb +38 -9
- data/lib/sensible_logging/version.rb +3 -1
- data/lib/sensible_logging.rb +51 -10
- data/sensible_logging.gemspec +16 -9
- metadata +99 -31
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fe336ff76caedb39e58602dbf02834da1421e6b0c446650c83f92d6b3c57b1c9
|
|
4
|
+
data.tar.gz: 45ba85d3a3b2809f94aa6b36c8269111d15c88a053fa63a056409c16dd4e7896
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 142f2b9467a123ab1222b54273a04831eb47b85f250fe4fc226d1d515d85390e96f6651f9072e2a450e123c4999a880bd67a2de048f3765b74699c3554df2298
|
|
7
|
+
data.tar.gz: 88dc78761416c8c0402f22bf1a871175268cef687a173a7b47a0b3459b6363bf1f92a5c35f4920ee7c39436beae2051307762d9f4ed781ce1f48cacc49f0691b
|
data/.editorconfig
ADDED
data/.github/FUNDING.yml
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
github: [davidwinter]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
name: test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
strategy:
|
|
14
|
+
matrix:
|
|
15
|
+
ruby-version: ['2.6', '2.7', '3.0']
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v2
|
|
19
|
+
- name: Set up Ruby
|
|
20
|
+
uses: ruby/setup-ruby@v1
|
|
21
|
+
with:
|
|
22
|
+
ruby-version: ${{ matrix.ruby-version }}
|
|
23
|
+
bundler-cache: true
|
|
24
|
+
- name: Run tests
|
|
25
|
+
run: bundle exec rspec --backtrace
|
|
26
|
+
- name: Run linting
|
|
27
|
+
run: bundle exec rubocop
|
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,41 +1,147 @@
|
|
|
1
|
-
# Sensible
|
|
1
|
+
# Sensible Logging
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://github.com/davidwinter/sensible_logging/actions?query=workflow%3Atest) [](https://codecov.io/gh/davidwinter/sensible_logging) [](https://rubygems.org/gems/sensible_logging) [](https://rubygems.org/gems/sensible_logging)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
> A logging extension with sensible defaults for Sinatra apps.
|
|
6
6
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
9
|
-
* Add (or use an existing
|
|
10
|
-
* Trim the request logs to the bare minimal (
|
|
11
|
-
*
|
|
9
|
+
* 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
|
|
10
|
+
* Trim the request logs to the bare minimal (inspired by lograge):
|
|
11
|
+
* method
|
|
12
|
+
* path
|
|
13
|
+
* requesting IP address
|
|
14
|
+
* status
|
|
15
|
+
* duration
|
|
16
|
+
* params if a `GET` request
|
|
12
17
|
|
|
13
|
-
|
|
18
|
+
Example log line:
|
|
19
|
+
```
|
|
20
|
+
method=GET path=/contact client=192.168.1.254 status=200 duration=0.124 params={"category"=>"question"}
|
|
21
|
+
```
|
|
22
|
+
* Tagged logging, with some sensible defaults:
|
|
23
|
+
* severity
|
|
24
|
+
* subdomain
|
|
25
|
+
* environment
|
|
26
|
+
* request UUID
|
|
14
27
|
|
|
15
|
-
|
|
28
|
+
Example log line:
|
|
29
|
+
```
|
|
30
|
+
[INFO] [www.gb] [staging] [6004bb70-7b6d-43b6-a2cf-72d0336663ba] @todo tidy sql query
|
|
31
|
+
```
|
|
16
32
|
|
|
17
|
-
|
|
33
|
+
## Usage
|
|
34
|
+
|
|
35
|
+
1. Add `sensible_logging` to your `Gemfile` and install with `bundle install`:
|
|
36
|
+
|
|
37
|
+
```ruby
|
|
38
|
+
gem 'sensible_logging'
|
|
39
|
+
```
|
|
40
|
+
2. In your `app.rb` register the module and then define your logging configuration:
|
|
41
|
+
|
|
42
|
+
```ruby
|
|
43
|
+
require 'sensible_logging'
|
|
44
|
+
|
|
45
|
+
class App < Sinatra::Base
|
|
46
|
+
register Sinatra::SensibleLogging
|
|
47
|
+
|
|
48
|
+
# Initialise Sensible Logging to add our middlewares.
|
|
49
|
+
sensible_logging(
|
|
50
|
+
logger: Logger.new($stdout)
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
# Configure the log level for different environments
|
|
54
|
+
configure :production do
|
|
55
|
+
set :log_level, Logger::INFO
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Requests will be logged in a minimal format
|
|
59
|
+
get '/' do
|
|
60
|
+
'Hello!'
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
get '/about' do
|
|
64
|
+
# The standard Sinatra logger helper will use the Sensible Logging gem
|
|
65
|
+
logger.info('About page')
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
get '/contact' do
|
|
69
|
+
# In addition to the default tags, you can add additional ones by using the `tagged` block on the `logger` helper
|
|
70
|
+
# [INFO] [localhost] [development] [a9d0183d-a3c3-4081-b502-38dcf4c3c4d7] [todo] Contact page
|
|
71
|
+
logger.tagged('todo') do |logger|
|
|
72
|
+
logger.info('Contact page')
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# rest of code omitted
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Available options
|
|
80
|
+
|
|
81
|
+
There are a number of options that you can pass into `sensible_logging`:
|
|
82
|
+
|
|
83
|
+
* `logger`: The logging object.
|
|
84
|
+
**Default**: `Logger.new($stdout)`
|
|
85
|
+
* `use_default_log_tags`: Includes the subdomain, `RACK_ENV` and unique request ID in the log tags.
|
|
86
|
+
**Default**: `true`
|
|
87
|
+
* `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`.
|
|
88
|
+
**Default**: `1`.
|
|
89
|
+
* `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.
|
|
90
|
+
**Default**: `[]`
|
|
91
|
+
* `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']`
|
|
92
|
+
**Default**: `[]`
|
|
93
|
+
* `include_log_severity`: Includes the log severity in the tagged output, such as `INFO`, `DEBUG` etc
|
|
94
|
+
**Default**: `true`
|
|
95
|
+
|
|
96
|
+
Sensible Logger will also respect the following Sinatra settings:
|
|
97
|
+
|
|
98
|
+
* `log_level`: The level at which your logger object should respect logs. See above example.
|
|
99
|
+
**Default**: `Logger::DEBUG`
|
|
100
|
+
|
|
101
|
+
## Examples
|
|
102
|
+
|
|
103
|
+
There is an example Sinatra app included in this repo. Here's how to use it:
|
|
104
|
+
|
|
105
|
+
```shell
|
|
18
106
|
bundle install
|
|
107
|
+
cd examples
|
|
19
108
|
rackup
|
|
20
109
|
```
|
|
21
110
|
|
|
22
111
|
With the app running, run some curl commands against it:
|
|
23
112
|
|
|
24
|
-
```
|
|
113
|
+
```shell
|
|
25
114
|
curl 'localhost:9292/hello?one=two&two=three'
|
|
26
115
|
```
|
|
27
116
|
|
|
28
117
|
You should notice in the logs:
|
|
29
118
|
|
|
30
119
|
* Standard Sinatra `logger` helper works out of the box within apps with tags.
|
|
31
|
-
* Excluded
|
|
120
|
+
* Excluded parameters are not included, in this example `two` based on `config.ru`
|
|
32
121
|
* The request log is minimal compared to out of the box Sinatra.
|
|
33
|
-
* `env['request_id']` is now available to
|
|
122
|
+
* `env['request_id']` is now available to group log lines from the same request together, or to use in additional services such as Sentry.
|
|
123
|
+
|
|
124
|
+
## FAQ
|
|
125
|
+
|
|
126
|
+
### Why is the timestamp absent?
|
|
127
|
+
|
|
128
|
+
To quote [lograge][link_lograge] (which was the inspiration for this library):
|
|
129
|
+
|
|
130
|
+
> 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.
|
|
131
|
+
|
|
132
|
+
## Releasing
|
|
133
|
+
|
|
134
|
+
1. Update the version number `lib/sensible_logging/version.rb`
|
|
135
|
+
2. Create a git commit and tag with the new version number: `git tag -a v0.4.2 -m "v0.4.2"`
|
|
136
|
+
3. Create a new PR with this change and once approved, merge to `main`
|
|
137
|
+
4. Once approved and merged in, locally, run: `bundle exec rake release` which will build and push the new gem to Rubygems
|
|
138
|
+
|
|
139
|
+
## Authors
|
|
34
140
|
|
|
35
|
-
|
|
141
|
+
By [David Winter](https://github.com/davidwinter) with contributions from [Mark Sta Ana](https://github.com/booyaa) & [Anthony King](https://github.com/cybojenix)
|
|
36
142
|
|
|
37
|
-
|
|
143
|
+
## License
|
|
38
144
|
|
|
39
|
-
|
|
145
|
+
MIT
|
|
40
146
|
|
|
41
|
-
|
|
147
|
+
[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
|
-
logger: Logger.new(
|
|
11
|
-
log_tags: [
|
|
13
|
+
logger: Logger.new($stdout),
|
|
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
|
@@ -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,20 +1,25 @@
|
|
|
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)
|
|
13
16
|
end_time = Time.now - start_time
|
|
14
17
|
|
|
15
|
-
|
|
18
|
+
client_ip = req.ip || 'n/a'
|
|
19
|
+
|
|
20
|
+
message = "method=#{req.request_method} path=#{req.path} client=#{client_ip} status=#{status} duration=#{end_time}"
|
|
16
21
|
filtered_params = filter_params(req)
|
|
17
|
-
message += " params=#{filtered_params}" if req.get? && !
|
|
22
|
+
message += " params=#{filtered_params}" if req.get? && !filtered_params.empty?
|
|
18
23
|
env['logger'].info(message)
|
|
19
24
|
[status, headers, body]
|
|
20
25
|
end
|
|
@@ -22,6 +27,6 @@ class RequestLogger
|
|
|
22
27
|
private
|
|
23
28
|
|
|
24
29
|
def filter_params(req)
|
|
25
|
-
req.params.
|
|
30
|
+
req.params.reject { |x| @filtered_params.include?(x) }
|
|
26
31
|
end
|
|
27
32
|
end
|
|
@@ -1,14 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'ipaddr'
|
|
1
4
|
require 'active_support/tagged_logging'
|
|
2
5
|
require_relative '../helpers/subdomain_parser'
|
|
3
6
|
|
|
7
|
+
# Allow custom tags to be captured
|
|
4
8
|
class TaggedLogger
|
|
5
|
-
def initialize(
|
|
9
|
+
def initialize( # rubocop:disable Metrics/MethodLength
|
|
10
|
+
app,
|
|
11
|
+
options = {}
|
|
12
|
+
)
|
|
6
13
|
@app = app
|
|
7
|
-
@logger = ActiveSupport::TaggedLogging.new(logger)
|
|
8
14
|
|
|
15
|
+
options = {
|
|
16
|
+
logger: Logger.new($stdout),
|
|
17
|
+
tags: [],
|
|
18
|
+
use_default_tags: true,
|
|
19
|
+
tld_length: 1,
|
|
20
|
+
include_log_severity: true
|
|
21
|
+
}.merge(options)
|
|
22
|
+
|
|
23
|
+
options[:logger] = setup_severity_tag(options[:logger]) if options[:include_log_severity]
|
|
24
|
+
|
|
25
|
+
@logger = ActiveSupport::TaggedLogging.new(options[:logger])
|
|
9
26
|
@tags = []
|
|
10
|
-
@tags += default_tags(tld_length: tld_length) if
|
|
11
|
-
@tags += tags
|
|
27
|
+
@tags += default_tags(tld_length: options[:tld_length]) if options[:use_default_tags]
|
|
28
|
+
@tags += options[:tags]
|
|
12
29
|
end
|
|
13
30
|
|
|
14
31
|
def call(env)
|
|
@@ -20,18 +37,30 @@ class TaggedLogger
|
|
|
20
37
|
|
|
21
38
|
private
|
|
22
39
|
|
|
40
|
+
def setup_severity_tag(logger)
|
|
41
|
+
original_formatter = logger.formatter || ActiveSupport::Logger::SimpleFormatter.new
|
|
42
|
+
logger.formatter = proc do |severity, *args|
|
|
43
|
+
"[#{severity}] #{original_formatter.call(severity, *args)}"
|
|
44
|
+
end
|
|
45
|
+
logger
|
|
46
|
+
end
|
|
47
|
+
|
|
23
48
|
def default_tags(tld_length: 1)
|
|
24
49
|
[lambda { |req|
|
|
25
|
-
|
|
26
|
-
subdomain = subdomain_parser.parse(req.host)
|
|
27
|
-
|
|
28
|
-
[subdomain || 'n/a', ENV['RACK_ENV'], req.env['request_id']]
|
|
50
|
+
[subdomain(req.host, tld_length) || 'n/a', ENV['RACK_ENV'], req.env['request_id']]
|
|
29
51
|
}]
|
|
30
52
|
end
|
|
31
53
|
|
|
54
|
+
def subdomain(host, tld_length)
|
|
55
|
+
IPAddr.new(host)
|
|
56
|
+
rescue IPAddr::InvalidAddressError
|
|
57
|
+
subdomain_parser = SubdomainParser.new(tld_length: tld_length)
|
|
58
|
+
subdomain_parser.parse(host)
|
|
59
|
+
end
|
|
60
|
+
|
|
32
61
|
def generate_tags(env)
|
|
33
62
|
req = Rack::Request.new(env)
|
|
34
|
-
|
|
63
|
+
@tags.map do |tag|
|
|
35
64
|
tag.call(req)
|
|
36
65
|
end
|
|
37
66
|
end
|
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'
|
|
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
|
|
6
18
|
|
|
19
|
+
# Sinatra extension
|
|
7
20
|
module Sinatra
|
|
21
|
+
# Sensible logging library for Sinatra based Apps
|
|
8
22
|
module SensibleLogging
|
|
9
|
-
def sensible_logging(
|
|
10
|
-
logger
|
|
23
|
+
def sensible_logging( # rubocop:disable Metrics/MethodLength, Metrics/ParameterLists
|
|
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
|
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
|
|
|
@@ -7,25 +8,31 @@ Gem::Specification.new do |spec|
|
|
|
7
8
|
spec.name = 'sensible_logging'
|
|
8
9
|
spec.version = SensibleLogging::VERSION
|
|
9
10
|
spec.authors = ['David Winter', 'Mark Sta Ana', 'Anthony King']
|
|
10
|
-
spec.email = ['
|
|
11
|
+
spec.email = ['i@djw.me']
|
|
11
12
|
|
|
12
13
|
spec.summary = 'Sensible logging defaults for your Sinatra app'
|
|
13
|
-
spec.homepage = 'https://github.com/
|
|
14
|
+
spec.homepage = 'https://github.com/davidwinter/sensible_logging'
|
|
14
15
|
spec.license = 'MIT'
|
|
15
16
|
|
|
16
17
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
17
18
|
f.match(%r{^(test|spec|features)/})
|
|
18
19
|
end
|
|
19
20
|
|
|
21
|
+
spec.required_ruby_version = '>= 2.6'
|
|
22
|
+
|
|
20
23
|
spec.require_paths = ['lib']
|
|
21
24
|
|
|
25
|
+
spec.add_runtime_dependency 'activesupport', '>= 5.2', '< 7.0'
|
|
22
26
|
spec.add_runtime_dependency 'rack', '~> 2.0'
|
|
23
|
-
spec.add_runtime_dependency 'activesupport', '~> 5.2'
|
|
24
27
|
|
|
25
|
-
spec.add_development_dependency '
|
|
26
|
-
spec.add_development_dependency '
|
|
27
|
-
spec.add_development_dependency '
|
|
28
|
-
spec.add_development_dependency '
|
|
28
|
+
spec.add_development_dependency 'bundler', '~> 2.2.0'
|
|
29
|
+
spec.add_development_dependency 'codecov'
|
|
30
|
+
spec.add_development_dependency 'pry', '~> 0.14.1'
|
|
31
|
+
spec.add_development_dependency 'puma', '~> 5.3'
|
|
32
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
|
29
33
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
|
30
|
-
spec.add_development_dependency '
|
|
34
|
+
spec.add_development_dependency 'rubocop', '~> 1.20.0'
|
|
35
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 2.4.0'
|
|
36
|
+
spec.add_development_dependency 'simplecov'
|
|
37
|
+
spec.add_development_dependency 'sinatra', '~> 2.0'
|
|
31
38
|
end
|
metadata
CHANGED
|
@@ -1,17 +1,37 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sensible_logging
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3
|
|
4
|
+
version: 0.4.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Winter
|
|
8
8
|
- Mark Sta Ana
|
|
9
9
|
- Anthony King
|
|
10
|
-
autorequire:
|
|
10
|
+
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date:
|
|
13
|
+
date: 2021-08-26 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
|
+
- - "<"
|
|
23
|
+
- !ruby/object:Gem::Version
|
|
24
|
+
version: '7.0'
|
|
25
|
+
type: :runtime
|
|
26
|
+
prerelease: false
|
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
28
|
+
requirements:
|
|
29
|
+
- - ">="
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: '5.2'
|
|
32
|
+
- - "<"
|
|
33
|
+
- !ruby/object:Gem::Version
|
|
34
|
+
version: '7.0'
|
|
15
35
|
- !ruby/object:Gem::Dependency
|
|
16
36
|
name: rack
|
|
17
37
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -27,75 +47,75 @@ dependencies:
|
|
|
27
47
|
- !ruby/object:Gem::Version
|
|
28
48
|
version: '2.0'
|
|
29
49
|
- !ruby/object:Gem::Dependency
|
|
30
|
-
name:
|
|
50
|
+
name: bundler
|
|
31
51
|
requirement: !ruby/object:Gem::Requirement
|
|
32
52
|
requirements:
|
|
33
53
|
- - "~>"
|
|
34
54
|
- !ruby/object:Gem::Version
|
|
35
|
-
version:
|
|
36
|
-
type: :
|
|
55
|
+
version: 2.2.0
|
|
56
|
+
type: :development
|
|
37
57
|
prerelease: false
|
|
38
58
|
version_requirements: !ruby/object:Gem::Requirement
|
|
39
59
|
requirements:
|
|
40
60
|
- - "~>"
|
|
41
61
|
- !ruby/object:Gem::Version
|
|
42
|
-
version:
|
|
62
|
+
version: 2.2.0
|
|
43
63
|
- !ruby/object:Gem::Dependency
|
|
44
|
-
name:
|
|
64
|
+
name: codecov
|
|
45
65
|
requirement: !ruby/object:Gem::Requirement
|
|
46
66
|
requirements:
|
|
47
|
-
- - "
|
|
67
|
+
- - ">="
|
|
48
68
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: '
|
|
69
|
+
version: '0'
|
|
50
70
|
type: :development
|
|
51
71
|
prerelease: false
|
|
52
72
|
version_requirements: !ruby/object:Gem::Requirement
|
|
53
73
|
requirements:
|
|
54
|
-
- - "
|
|
74
|
+
- - ">="
|
|
55
75
|
- !ruby/object:Gem::Version
|
|
56
|
-
version: '
|
|
76
|
+
version: '0'
|
|
57
77
|
- !ruby/object:Gem::Dependency
|
|
58
|
-
name:
|
|
78
|
+
name: pry
|
|
59
79
|
requirement: !ruby/object:Gem::Requirement
|
|
60
80
|
requirements:
|
|
61
81
|
- - "~>"
|
|
62
82
|
- !ruby/object:Gem::Version
|
|
63
|
-
version:
|
|
83
|
+
version: 0.14.1
|
|
64
84
|
type: :development
|
|
65
85
|
prerelease: false
|
|
66
86
|
version_requirements: !ruby/object:Gem::Requirement
|
|
67
87
|
requirements:
|
|
68
88
|
- - "~>"
|
|
69
89
|
- !ruby/object:Gem::Version
|
|
70
|
-
version:
|
|
90
|
+
version: 0.14.1
|
|
71
91
|
- !ruby/object:Gem::Dependency
|
|
72
|
-
name:
|
|
92
|
+
name: puma
|
|
73
93
|
requirement: !ruby/object:Gem::Requirement
|
|
74
94
|
requirements:
|
|
75
95
|
- - "~>"
|
|
76
96
|
- !ruby/object:Gem::Version
|
|
77
|
-
version: '
|
|
97
|
+
version: '5.3'
|
|
78
98
|
type: :development
|
|
79
99
|
prerelease: false
|
|
80
100
|
version_requirements: !ruby/object:Gem::Requirement
|
|
81
101
|
requirements:
|
|
82
102
|
- - "~>"
|
|
83
103
|
- !ruby/object:Gem::Version
|
|
84
|
-
version: '
|
|
104
|
+
version: '5.3'
|
|
85
105
|
- !ruby/object:Gem::Dependency
|
|
86
106
|
name: rake
|
|
87
107
|
requirement: !ruby/object:Gem::Requirement
|
|
88
108
|
requirements:
|
|
89
109
|
- - "~>"
|
|
90
110
|
- !ruby/object:Gem::Version
|
|
91
|
-
version: '
|
|
111
|
+
version: '13.0'
|
|
92
112
|
type: :development
|
|
93
113
|
prerelease: false
|
|
94
114
|
version_requirements: !ruby/object:Gem::Requirement
|
|
95
115
|
requirements:
|
|
96
116
|
- - "~>"
|
|
97
117
|
- !ruby/object:Gem::Version
|
|
98
|
-
version: '
|
|
118
|
+
version: '13.0'
|
|
99
119
|
- !ruby/object:Gem::Dependency
|
|
100
120
|
name: rspec
|
|
101
121
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -111,29 +131,77 @@ dependencies:
|
|
|
111
131
|
- !ruby/object:Gem::Version
|
|
112
132
|
version: '3.0'
|
|
113
133
|
- !ruby/object:Gem::Dependency
|
|
114
|
-
name:
|
|
134
|
+
name: rubocop
|
|
115
135
|
requirement: !ruby/object:Gem::Requirement
|
|
116
136
|
requirements:
|
|
117
137
|
- - "~>"
|
|
118
138
|
- !ruby/object:Gem::Version
|
|
119
|
-
version:
|
|
139
|
+
version: 1.20.0
|
|
120
140
|
type: :development
|
|
121
141
|
prerelease: false
|
|
122
142
|
version_requirements: !ruby/object:Gem::Requirement
|
|
123
143
|
requirements:
|
|
124
144
|
- - "~>"
|
|
125
145
|
- !ruby/object:Gem::Version
|
|
126
|
-
version:
|
|
127
|
-
|
|
146
|
+
version: 1.20.0
|
|
147
|
+
- !ruby/object:Gem::Dependency
|
|
148
|
+
name: rubocop-rspec
|
|
149
|
+
requirement: !ruby/object:Gem::Requirement
|
|
150
|
+
requirements:
|
|
151
|
+
- - "~>"
|
|
152
|
+
- !ruby/object:Gem::Version
|
|
153
|
+
version: 2.4.0
|
|
154
|
+
type: :development
|
|
155
|
+
prerelease: false
|
|
156
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
157
|
+
requirements:
|
|
158
|
+
- - "~>"
|
|
159
|
+
- !ruby/object:Gem::Version
|
|
160
|
+
version: 2.4.0
|
|
161
|
+
- !ruby/object:Gem::Dependency
|
|
162
|
+
name: simplecov
|
|
163
|
+
requirement: !ruby/object:Gem::Requirement
|
|
164
|
+
requirements:
|
|
165
|
+
- - ">="
|
|
166
|
+
- !ruby/object:Gem::Version
|
|
167
|
+
version: '0'
|
|
168
|
+
type: :development
|
|
169
|
+
prerelease: false
|
|
170
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
171
|
+
requirements:
|
|
172
|
+
- - ">="
|
|
173
|
+
- !ruby/object:Gem::Version
|
|
174
|
+
version: '0'
|
|
175
|
+
- !ruby/object:Gem::Dependency
|
|
176
|
+
name: sinatra
|
|
177
|
+
requirement: !ruby/object:Gem::Requirement
|
|
178
|
+
requirements:
|
|
179
|
+
- - "~>"
|
|
180
|
+
- !ruby/object:Gem::Version
|
|
181
|
+
version: '2.0'
|
|
182
|
+
type: :development
|
|
183
|
+
prerelease: false
|
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
185
|
+
requirements:
|
|
186
|
+
- - "~>"
|
|
187
|
+
- !ruby/object:Gem::Version
|
|
188
|
+
version: '2.0'
|
|
189
|
+
description:
|
|
128
190
|
email:
|
|
129
|
-
-
|
|
191
|
+
- i@djw.me
|
|
130
192
|
executables: []
|
|
131
193
|
extensions: []
|
|
132
194
|
extra_rdoc_files: []
|
|
133
195
|
files:
|
|
196
|
+
- ".editorconfig"
|
|
197
|
+
- ".github/FUNDING.yml"
|
|
198
|
+
- ".github/dependabot.yml"
|
|
199
|
+
- ".github/workflows/test.yml"
|
|
134
200
|
- ".gitignore"
|
|
135
201
|
- ".rspec"
|
|
202
|
+
- ".rubocop.yml"
|
|
136
203
|
- ".ruby-version"
|
|
204
|
+
- ".simplecov"
|
|
137
205
|
- Gemfile
|
|
138
206
|
- LICENSE.txt
|
|
139
207
|
- README.md
|
|
@@ -141,17 +209,18 @@ files:
|
|
|
141
209
|
- examples/app.rb
|
|
142
210
|
- examples/config.ru
|
|
143
211
|
- lib/sensible_logging.rb
|
|
212
|
+
- lib/sensible_logging/helpers/logger_io_wrap.rb
|
|
144
213
|
- lib/sensible_logging/helpers/subdomain_parser.rb
|
|
145
214
|
- lib/sensible_logging/middlewares/request_id.rb
|
|
146
215
|
- lib/sensible_logging/middlewares/request_logger.rb
|
|
147
216
|
- lib/sensible_logging/middlewares/tagged_logger.rb
|
|
148
217
|
- lib/sensible_logging/version.rb
|
|
149
218
|
- sensible_logging.gemspec
|
|
150
|
-
homepage: https://github.com/
|
|
219
|
+
homepage: https://github.com/davidwinter/sensible_logging
|
|
151
220
|
licenses:
|
|
152
221
|
- MIT
|
|
153
222
|
metadata: {}
|
|
154
|
-
post_install_message:
|
|
223
|
+
post_install_message:
|
|
155
224
|
rdoc_options: []
|
|
156
225
|
require_paths:
|
|
157
226
|
- lib
|
|
@@ -159,16 +228,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
159
228
|
requirements:
|
|
160
229
|
- - ">="
|
|
161
230
|
- !ruby/object:Gem::Version
|
|
162
|
-
version: '
|
|
231
|
+
version: '2.6'
|
|
163
232
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
233
|
requirements:
|
|
165
234
|
- - ">="
|
|
166
235
|
- !ruby/object:Gem::Version
|
|
167
236
|
version: '0'
|
|
168
237
|
requirements: []
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
signing_key:
|
|
238
|
+
rubygems_version: 3.2.15
|
|
239
|
+
signing_key:
|
|
172
240
|
specification_version: 4
|
|
173
241
|
summary: Sensible logging defaults for your Sinatra app
|
|
174
242
|
test_files: []
|