rack-traffic-logger 0.2.3 → 0.2.4
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/README.md +33 -0
- data/lib/rack/traffic_logger/express_setup.rb +19 -0
- data/lib/rack/traffic_logger/version.rb +1 -1
- data/lib/rack/traffic_logger.rb +1 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 14b29cb8230446091b0ff4d48a732e4cb907381c
|
|
4
|
+
data.tar.gz: 28bf54115618158d68942804a366894a3cc59537
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f3deff06a541bab57142e46c2f11a077c4dc9ea662e11585f7f4df00836a8d50a45a65f4d9317c93afca930382ef694be3fa56404553f70079d39b455763ede1
|
|
7
|
+
data.tar.gz: 71d3bebc92b6b9e4587a25826f18813feb76a901e1c990b3b578dd06945137d5c2e71a632f994882a09fe6b32a8e25a89a56820f531461f881d8050b09de6116
|
data/README.md
CHANGED
|
@@ -153,6 +153,39 @@ It's ruby, plus these rules:
|
|
|
153
153
|
- Use `a` for `all`, `h` for `headers`, `b` for `bodies`, `ih` for `request_headers`, `ib` for `request_bodies`, `oh` for `response_headers`, and `ob` for `response_bodies` (think of `i` for *input*, and `o` for *output*).
|
|
154
154
|
- Use `o` for `only` and `f` for false.
|
|
155
155
|
|
|
156
|
+
### Express Setup
|
|
157
|
+
|
|
158
|
+
If you're reading log config from an environment variable, use express setup in place of `use` in a rack-up file to conditionally set up logging on your stack.
|
|
159
|
+
|
|
160
|
+
```ruby
|
|
161
|
+
# config.ru
|
|
162
|
+
Rack::TrafficLogger.use on: self
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Or, with some configuration:
|
|
166
|
+
|
|
167
|
+
```ruby
|
|
168
|
+
# config.ru
|
|
169
|
+
Rack::TrafficLogger.use on: self,
|
|
170
|
+
filter: ENV['LOG_INBOUND_HTTP'],
|
|
171
|
+
formatter: Rack::TrafficLogger::Formatter::JSON.new,
|
|
172
|
+
log_path: ::File.expand_path('../log/http_in.log', __FILE__)
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
- Express setup will send `use` to the object passed to the `on:` argument. In a rack-up file, pass `self`.
|
|
177
|
+
- Logging will not be set up if `filter` is one of: `0 no false none off nil`, or a blank string.
|
|
178
|
+
- Logging will revert to basic logging (no headers or bodies) if `filter` is one of `1 yes true normal basic minimal on`.
|
|
179
|
+
- Omit `filter` to use default (basic) log filtering.
|
|
180
|
+
- Omit `formatter` to use default (stream-like) log formatting.
|
|
181
|
+
- Omit `log_path` to write directly to standard output (via `/dev/stdout`).
|
|
182
|
+
|
|
183
|
+
Under typical conditions, express setup internally calls:
|
|
184
|
+
|
|
185
|
+
```ruby
|
|
186
|
+
on.use Rack::TrafficLogger, log_path, formatter, format
|
|
187
|
+
```
|
|
188
|
+
|
|
156
189
|
### Tailing a JSON log
|
|
157
190
|
|
|
158
191
|
Tailing a JSON log can induce migraines. There are a couple of solutions:
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Rack
|
|
2
|
+
class TrafficLogger
|
|
3
|
+
|
|
4
|
+
def self.use(on: nil, filter: '', log_path: '/dev/stdout', formatter: nil)
|
|
5
|
+
filter = (filter || '').to_s.downcase.strip
|
|
6
|
+
unless ['0', 'no', 'false', 'nil', 'none', '', 'off'].include? filter
|
|
7
|
+
args = [Rack::TrafficLogger, log_path]
|
|
8
|
+
args << formatter if formatter
|
|
9
|
+
begin
|
|
10
|
+
raise if %w[1 yes true normal basic minimal on].include? filter
|
|
11
|
+
on.use *args, filter
|
|
12
|
+
rescue
|
|
13
|
+
on.use *args
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
end
|
data/lib/rack/traffic_logger.rb
CHANGED
|
@@ -4,6 +4,7 @@ require_relative 'traffic_logger/option_interpreter'
|
|
|
4
4
|
require_relative 'traffic_logger/stream_simulator'
|
|
5
5
|
require_relative 'traffic_logger/formatter'
|
|
6
6
|
require_relative 'traffic_logger/reader'
|
|
7
|
+
require_relative 'traffic_logger/express_setup'
|
|
7
8
|
|
|
8
9
|
require 'json'
|
|
9
10
|
require 'securerandom'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rack-traffic-logger
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Neil E. Pearson
|
|
@@ -37,6 +37,7 @@ files:
|
|
|
37
37
|
- bin/parse-rack-traffic-log
|
|
38
38
|
- lib/rack/traffic_logger.rb
|
|
39
39
|
- lib/rack/traffic_logger/echo.rb
|
|
40
|
+
- lib/rack/traffic_logger/express_setup.rb
|
|
40
41
|
- lib/rack/traffic_logger/formatter.rb
|
|
41
42
|
- lib/rack/traffic_logger/formatter/json.rb
|
|
42
43
|
- lib/rack/traffic_logger/formatter/stream.rb
|