logster 1.3.4 → 1.4.0.pre
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/.travis.yml +2 -1
- data/CHANGELOG.md +7 -0
- data/README.md +1 -1
- data/Rakefile +0 -3
- data/assets/javascript/client-app.js +41 -33
- data/assets/stylesheets/client-app.css +1 -1
- data/client-app/app/components/env-tab.js +44 -0
- data/client-app/app/components/message-row.js +1 -1
- data/client-app/app/components/panel-resizer.js +4 -5
- data/client-app/app/controllers/index.js +15 -2
- data/client-app/app/models/message-collection.js +25 -5
- data/client-app/app/models/message.js +9 -8
- data/client-app/app/styles/app.css +63 -54
- data/client-app/app/templates/components/env-tab.hbs +10 -0
- data/client-app/app/templates/components/message-info.hbs +1 -1
- data/client-app/app/templates/components/message-row.hbs +10 -12
- data/client-app/app/templates/index.hbs +9 -16
- data/client-app/tests/integration/components/env-tab-test.js +73 -0
- data/lib/logster/base_store.rb +2 -5
- data/lib/logster/ignore_pattern.rb +1 -1
- data/lib/logster/logger.rb +1 -1
- data/lib/logster/message.rb +53 -27
- data/lib/logster/redis_store.rb +58 -7
- data/lib/logster/version.rb +1 -1
- data/test/logster/test_message.rb +59 -0
- data/test/logster/test_redis_store.rb +130 -7
- metadata +7 -4
@@ -198,28 +198,29 @@ class TestRedisStore < Minitest::Test
|
|
198
198
|
end
|
199
199
|
|
200
200
|
def test_search
|
201
|
-
@store.report(Logger::INFO, "test", "
|
202
|
-
@store.report(Logger::INFO, "test", "
|
201
|
+
@store.report(Logger::INFO, "test", "ABCDEFG")
|
202
|
+
@store.report(Logger::INFO, "test", "TUVWXYZ")
|
203
203
|
|
204
204
|
messages = @store.latest
|
205
205
|
assert_equal(2, messages.length)
|
206
206
|
|
207
|
-
latest = @store.latest(search: "
|
207
|
+
latest = @store.latest(search: "TUVWXYZ")
|
208
208
|
|
209
209
|
assert_equal(1, latest.length)
|
210
|
+
assert_equal("TUVWXYZ", latest[0].message)
|
210
211
|
end
|
211
212
|
|
212
213
|
def test_search_exclude_results
|
213
|
-
@store.report(Logger::INFO, "test", "
|
214
|
-
@store.report(Logger::INFO, "test", "
|
214
|
+
@store.report(Logger::INFO, "test", "ABCDEFG")
|
215
|
+
@store.report(Logger::INFO, "test", "TUVWXYZ")
|
215
216
|
|
216
217
|
messages = @store.latest
|
217
218
|
assert_equal(2, messages.length)
|
218
219
|
|
219
|
-
latest = @store.latest(search: "-
|
220
|
+
latest = @store.latest(search: "-ABCD")
|
220
221
|
|
221
222
|
assert_equal(1, latest.length)
|
222
|
-
assert_equal("
|
223
|
+
assert_equal("TUVWXYZ", latest[0].message)
|
223
224
|
end
|
224
225
|
|
225
226
|
def test_regex_search
|
@@ -234,6 +235,128 @@ class TestRedisStore < Minitest::Test
|
|
234
235
|
assert_equal(1, latest.length)
|
235
236
|
end
|
236
237
|
|
238
|
+
def test_env_search
|
239
|
+
@store.report(Logger::INFO, "test", "message ABCD", env: { cluster: "business5" })
|
240
|
+
@store.report(Logger::INFO, "test", "message WXYZ", env: { cluster: "business7" })
|
241
|
+
|
242
|
+
messages = @store.latest
|
243
|
+
assert_equal(2, messages.length)
|
244
|
+
|
245
|
+
latest = @store.latest(search: "business5")
|
246
|
+
|
247
|
+
assert_equal(1, latest.length)
|
248
|
+
assert_equal("message ABCD", latest[0].message)
|
249
|
+
|
250
|
+
latest = @store.latest(search: "-business5")
|
251
|
+
|
252
|
+
assert_equal(1, latest.length)
|
253
|
+
assert_equal("message WXYZ", latest[0].message)
|
254
|
+
|
255
|
+
latest = @store.latest(search: /business/)
|
256
|
+
|
257
|
+
assert_equal(2, latest.length)
|
258
|
+
assert_equal(["message ABCD", "message WXYZ"], latest.map(&:message).sort)
|
259
|
+
end
|
260
|
+
|
261
|
+
def test_array_env_search_preserve_env
|
262
|
+
m1_original_env = [{ cluster: "business5" }, { cluster: "standard3" }]
|
263
|
+
m2_original_env = [{ cluster: "business2" }, { cluster: "standard7" }]
|
264
|
+
|
265
|
+
@store.report(Logger::INFO, "test", "message ABCD", env: m1_original_env, count: 2)
|
266
|
+
@store.report(Logger::INFO, "test", "message WXYZ", env: m2_original_env, count: 2)
|
267
|
+
|
268
|
+
messages = @store.latest
|
269
|
+
assert_equal(2, messages.length)
|
270
|
+
|
271
|
+
m1_key = messages[0].key
|
272
|
+
m2_key = messages[1].key
|
273
|
+
|
274
|
+
messages = @store.latest(search: "business")
|
275
|
+
assert_equal(2, messages.size)
|
276
|
+
|
277
|
+
# any hashes that don't match should be stripped from the env
|
278
|
+
# array but only temporarily until it's sent to the client
|
279
|
+
# env array should remain untouched in redis memory
|
280
|
+
assert_equal(["business5"], messages[0].env.map { |env| env["cluster"]})
|
281
|
+
assert_equal(1, messages[0].count)
|
282
|
+
assert_equal(["business2"], messages[1].env.map { |env| env["cluster"]})
|
283
|
+
assert_equal(1, messages[1].count)
|
284
|
+
|
285
|
+
m1 = @store.get(m1_key)
|
286
|
+
m2 = @store.get(m2_key)
|
287
|
+
# original env should preserved in redis memory
|
288
|
+
assert_equal(["business5", "standard3"], m1.env.map { |env| env["cluster"] })
|
289
|
+
assert_equal(["business2", "standard7"], m2.env.map { |env| env["cluster"] })
|
290
|
+
end
|
291
|
+
|
292
|
+
def test_both_env_and_title_match_search
|
293
|
+
@store.report(Logger::INFO, "test", "message", env: [{ cluster: "business15" }])
|
294
|
+
@store.report(Logger::INFO, "test", "message2", env: { cluster: "business15" })
|
295
|
+
|
296
|
+
messages = @store.latest
|
297
|
+
assert_equal(2, messages.size)
|
298
|
+
|
299
|
+
messages = @store.latest(search: "-business15")
|
300
|
+
assert_equal(0, messages.size)
|
301
|
+
end
|
302
|
+
|
303
|
+
def test_data_kept_intact_on_report_when_env_matches_an_ignore_pattern
|
304
|
+
begin
|
305
|
+
Logster.config.allow_grouping = true
|
306
|
+
backtrace = caller
|
307
|
+
message = @store.report(Logger::WARN, "", "my error", env: { whatever: "something", backtrace: backtrace })
|
308
|
+
|
309
|
+
@store.ignore = [
|
310
|
+
Logster::IgnorePattern.new("business")
|
311
|
+
]
|
312
|
+
message2 = @store.report(Logger::WARN, "", "my error", env: { cluster: "business17", backtrace: backtrace })
|
313
|
+
|
314
|
+
message = @store.get(message.key)
|
315
|
+
assert(Array === message.env)
|
316
|
+
assert_equal(2, message.env.size)
|
317
|
+
# message2 shouldn't vanish even if
|
318
|
+
# its env matches an ignore pattern
|
319
|
+
# however it should be merged with message1
|
320
|
+
assert_equal("business17", message.env[1]["cluster"])
|
321
|
+
ensure
|
322
|
+
# reset so it doesn't affect other tests
|
323
|
+
@store.ignore = nil
|
324
|
+
Logster.config.allow_grouping = false
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
def test_array_env_negative_search
|
329
|
+
@store.report(Logger::INFO, "test", "message ABCD", env: [{ cluster: "business5" }, { cluster: "standard3" }], count: 2)
|
330
|
+
@store.report(Logger::INFO, "test", "message WXYZ", env: [{ cluster: "business2" }, { cluster: "standard7" }], count: 2)
|
331
|
+
|
332
|
+
messages = @store.latest
|
333
|
+
assert_equal(2, messages.length)
|
334
|
+
|
335
|
+
messages = @store.latest(search: "-business")
|
336
|
+
assert_equal(2, messages.size)
|
337
|
+
|
338
|
+
assert_equal(["standard3"], messages[0].env.map { |env| env["cluster"]})
|
339
|
+
assert_equal(1, messages[0].count)
|
340
|
+
assert_equal(["standard7"], messages[1].env.map { |env| env["cluster"]})
|
341
|
+
assert_equal(1, messages[1].count)
|
342
|
+
end
|
343
|
+
|
344
|
+
def test_negative_search_MUST_not_match_title_in_order_to_include_message
|
345
|
+
@store.report(Logger::INFO, "test", "message ABCD", env: [{ cluster: "business5" }, { cluster: "standard3" }], count: 2)
|
346
|
+
|
347
|
+
messages = @store.latest(search: "-ABCD")
|
348
|
+
assert_equal(0, messages.size) # cause title has ABCD
|
349
|
+
end
|
350
|
+
|
351
|
+
def test_positive_search_looks_at_title_OR_env
|
352
|
+
@store.report(Logger::INFO, "test", "message", env: [{ cluster: "business5 ABCDEFG" }, { cluster: "standard3" }], count: 2)
|
353
|
+
|
354
|
+
messages = @store.latest(search: "ABCDEFG")
|
355
|
+
assert_equal(1, messages.size)
|
356
|
+
assert_equal(1, messages[0].env.size)
|
357
|
+
assert_equal("business5 ABCDEFG", messages[0].env[0]["cluster"])
|
358
|
+
end
|
359
|
+
|
237
360
|
def test_backtrace
|
238
361
|
@store.report(Logger::INFO, "test", "pattern_1")
|
239
362
|
message = @store.latest(limit: 1).first
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- UI for viewing logs in Rack
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -162,6 +162,7 @@ files:
|
|
162
162
|
- client-app/README.md
|
163
163
|
- client-app/app/app.js
|
164
164
|
- client-app/app/components/actions-menu.js
|
165
|
+
- client-app/app/components/env-tab.js
|
165
166
|
- client-app/app/components/message-info.js
|
166
167
|
- client-app/app/components/message-row.js
|
167
168
|
- client-app/app/components/panel-resizer.js
|
@@ -185,6 +186,7 @@ files:
|
|
185
186
|
- client-app/app/styles/app.css
|
186
187
|
- client-app/app/templates/application.hbs
|
187
188
|
- client-app/app/templates/components/actions-menu.hbs
|
189
|
+
- client-app/app/templates/components/env-tab.hbs
|
188
190
|
- client-app/app/templates/components/message-info.hbs
|
189
191
|
- client-app/app/templates/components/message-row.hbs
|
190
192
|
- client-app/app/templates/components/panel-resizer.hbs
|
@@ -201,6 +203,7 @@ files:
|
|
201
203
|
- client-app/testem.js
|
202
204
|
- client-app/tests/index.html
|
203
205
|
- client-app/tests/integration/components/actions-menu-test.js
|
206
|
+
- client-app/tests/integration/components/env-tab-test.js
|
204
207
|
- client-app/tests/integration/components/message-info-test.js
|
205
208
|
- client-app/tests/integration/components/message-row-test.js
|
206
209
|
- client-app/tests/integration/components/panel-resizer-test.js
|
@@ -258,9 +261,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
258
261
|
version: '0'
|
259
262
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
260
263
|
requirements:
|
261
|
-
- - "
|
264
|
+
- - ">"
|
262
265
|
- !ruby/object:Gem::Version
|
263
|
-
version:
|
266
|
+
version: 1.3.1
|
264
267
|
requirements: []
|
265
268
|
rubygems_version: 3.0.1
|
266
269
|
signing_key:
|