l2meter 0.9.1 → 0.10.0
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 +22 -0
- data/lib/l2meter/configuration.rb +1 -1
- data/lib/l2meter/emitter.rb +23 -14
- data/lib/l2meter/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b8abd7703829d8b981631fd16b5fa6f30daea752
|
4
|
+
data.tar.gz: e539765cd1db9d19045a60ff6f437de738e8722d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7270713f3b643b674b9bfb6f5c9d3cceb1ba5f72893331314c8f2119f773ccbd708bade4fefc7434d7ca6c38161e718c50ff4b944f5539d28065ccd43c9cffdd
|
7
|
+
data.tar.gz: d4578d786d1518b2b7a8e226be63426006f85cd91a96975a309dfae900b451b361c4df52eeb85362165b8a8daad2ffa4d391bd2272e99bcabed1ddab18dbc537
|
data/README.md
CHANGED
@@ -206,6 +206,28 @@ config.prefix = "my-app"
|
|
206
206
|
Metrics.count :users, 100500 # => count#my-app.users=100500
|
207
207
|
```
|
208
208
|
|
209
|
+
## Scrubbing
|
210
|
+
|
211
|
+
L2meter allows plugging in custom scrubbing logic that might be useful in
|
212
|
+
environments where logging compliance is important.
|
213
|
+
|
214
|
+
```ruby
|
215
|
+
config.scrubber = ->(key, value) do
|
216
|
+
begin
|
217
|
+
uri = URI.parse(value)
|
218
|
+
uri.password = "scrubbed" if uri.password
|
219
|
+
uri.to_s
|
220
|
+
rescue URI::Error
|
221
|
+
value
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
Metric.log my_url: "https://user:password@example.com"
|
226
|
+
# => my-url="https://user:redacted@example.com"
|
227
|
+
```
|
228
|
+
|
229
|
+
Note that returning nil value will make l2meter omit the field completely.
|
230
|
+
|
209
231
|
## Silence
|
210
232
|
|
211
233
|
There's a way to temporary silence the log emitter. This might be userful for
|
data/lib/l2meter/emitter.rb
CHANGED
@@ -90,12 +90,8 @@ module L2meter
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def fire!
|
93
|
-
tokens = @buffer.map
|
94
|
-
|
95
|
-
key = format_key(key)
|
96
|
-
value == true ? key : "#{key}=#{format_value(value)}"
|
97
|
-
end.compact
|
98
|
-
|
93
|
+
tokens = @buffer.map { |key, value| build_token(key, value) }
|
94
|
+
tokens.compact!
|
99
95
|
tokens.sort! if configuration.sort?
|
100
96
|
|
101
97
|
output_queue.last.print tokens.join(SPACE) << NL if tokens.any?
|
@@ -124,6 +120,14 @@ module L2meter
|
|
124
120
|
end
|
125
121
|
end
|
126
122
|
|
123
|
+
def build_token(key, value)
|
124
|
+
value = value.call if Proc === value
|
125
|
+
return if value.nil?
|
126
|
+
value = scrub_value(key, value)
|
127
|
+
return if value.nil?
|
128
|
+
value == true ? key : "#{key}=#{format_value(value)}"
|
129
|
+
end
|
130
|
+
|
127
131
|
def format_float(value, unit: nil)
|
128
132
|
"%.#{configuration.float_precision}f#{unit}" % value
|
129
133
|
end
|
@@ -143,7 +147,7 @@ module L2meter
|
|
143
147
|
|
144
148
|
def format_value(value)
|
145
149
|
case value
|
146
|
-
when /[^\w
|
150
|
+
when /[^\w,.:@\-\]\[]/
|
147
151
|
value.strip.gsub(/\s+/, " ").inspect
|
148
152
|
when String
|
149
153
|
value.to_s
|
@@ -151,8 +155,6 @@ module L2meter
|
|
151
155
|
format_float(value)
|
152
156
|
when Time
|
153
157
|
value.iso8601
|
154
|
-
when Proc
|
155
|
-
format_value(value.call)
|
156
158
|
when Hash
|
157
159
|
format_value(value.inspect)
|
158
160
|
when Array
|
@@ -162,12 +164,11 @@ module L2meter
|
|
162
164
|
end
|
163
165
|
end
|
164
166
|
|
165
|
-
def format_key(key)
|
166
|
-
configuration.key_formatter.call(key)
|
167
|
-
end
|
168
|
-
|
169
167
|
def format_keys(hash)
|
170
|
-
hash.each_with_object({})
|
168
|
+
hash.each_with_object({}) do |(key, value), acc|
|
169
|
+
key = configuration.key_formatter.call(key)
|
170
|
+
acc[key] = value
|
171
|
+
end
|
171
172
|
end
|
172
173
|
|
173
174
|
def write(params = nil)
|
@@ -222,5 +223,13 @@ module L2meter
|
|
222
223
|
def elapsed_value(since)
|
223
224
|
format_float(Time.now - since, unit: ?s)
|
224
225
|
end
|
226
|
+
|
227
|
+
def scrub_value(key, value)
|
228
|
+
if scrubber = configuration.scrubber
|
229
|
+
scrubber.call(key, value)
|
230
|
+
else
|
231
|
+
value
|
232
|
+
end
|
233
|
+
end
|
225
234
|
end
|
226
235
|
end
|
data/lib/l2meter/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: l2meter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Pravosud
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-07 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|
@@ -45,7 +45,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
45
45
|
version: '0'
|
46
46
|
requirements: []
|
47
47
|
rubyforge_project:
|
48
|
-
rubygems_version: 2.6.
|
48
|
+
rubygems_version: 2.6.11
|
49
49
|
signing_key:
|
50
50
|
specification_version: 4
|
51
51
|
summary: L2met friendly log formatter
|