logster 1.3.4 → 1.4.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|