logster 2.11.2 → 2.11.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +14 -4
- data/CHANGELOG.md +9 -0
- data/assets/javascript/client-app.js +53 -45
- data/assets/javascript/vendor.js +727 -735
- data/client-app/app/models/message-collection.js +2 -1
- data/client-app/package-lock.json +6968 -29525
- data/client-app/package.json +5 -2
- data/client-app/tests/unit/controllers/index-test.js +1 -1
- data/lib/logster/message.rb +4 -1
- data/lib/logster/middleware/viewer.rb +12 -12
- data/lib/logster/redis_store.rb +4 -4
- data/lib/logster/version.rb +1 -1
- data/test/logster/middleware/test_viewer.rb +14 -8
- metadata +2 -2
data/client-app/package.json
CHANGED
@@ -27,7 +27,7 @@
|
|
27
27
|
"@glimmer/component": "^1.0.0",
|
28
28
|
"babel-eslint": "^10.1.0",
|
29
29
|
"broccoli-asset-rev": "^3.0.0",
|
30
|
-
"ember-auto-import": "^1.
|
30
|
+
"ember-auto-import": "^1.12.2",
|
31
31
|
"ember-cli": "^3.15.0",
|
32
32
|
"ember-cli-app-version": "^3.2.0",
|
33
33
|
"ember-cli-babel": "^7.19.0",
|
@@ -58,6 +58,9 @@
|
|
58
58
|
"edition": "octane"
|
59
59
|
},
|
60
60
|
"dependencies": {
|
61
|
-
"moment": "~2.29.
|
61
|
+
"moment": "~2.29.4"
|
62
|
+
},
|
63
|
+
"overrides": {
|
64
|
+
"testem": "^3.9.0"
|
62
65
|
}
|
63
66
|
}
|
@@ -25,6 +25,6 @@ module('Unit | Controller | index', function (hooks) {
|
|
25
25
|
|
26
26
|
assert.equal(controller.searchTerm, "tomtom", 'search sets search term');
|
27
27
|
assert.equal(ajaxStub.firstCall.args[0], "/messages.json", "get messages");
|
28
|
-
assert.deepEqual(ajaxStub.firstCall.args[1], {"data": {"filter": "5", "search": "tomtom"}}, "with correct terms");
|
28
|
+
assert.deepEqual(ajaxStub.firstCall.args[1], {"data": {"filter": "5", "search": "tomtom"}, "method": "POST"}, "with correct terms");
|
29
29
|
});
|
30
30
|
});
|
data/lib/logster/message.rb
CHANGED
@@ -81,8 +81,11 @@ module Logster
|
|
81
81
|
|
82
82
|
def self.hostname
|
83
83
|
@hostname ||= begin
|
84
|
-
command =
|
84
|
+
command = Logster.config.use_full_hostname ? `hostname -f` : `hostname`
|
85
85
|
command.strip!
|
86
|
+
command
|
87
|
+
rescue
|
88
|
+
"<unknown>"
|
86
89
|
end
|
87
90
|
end
|
88
91
|
|
@@ -18,7 +18,7 @@ module Logster
|
|
18
18
|
(@store = Logster.store) || raise(ArgumentError.new("store"))
|
19
19
|
|
20
20
|
@assets_path = File.expand_path("../../../../assets", __FILE__)
|
21
|
-
@fileserver = Rack::
|
21
|
+
@fileserver = Rack::Files.new(@assets_path)
|
22
22
|
end
|
23
23
|
|
24
24
|
def call(env)
|
@@ -33,7 +33,7 @@ module Logster
|
|
33
33
|
if resource =~ /\.ico$|\.js$|\.png|\.handlebars$|\.css$|\.woff$|\.ttf$|\.woff2$|\.svg$|\.otf$|\.eot$/
|
34
34
|
serve_file(env, resource)
|
35
35
|
|
36
|
-
elsif resource.start_with?("/messages.json")
|
36
|
+
elsif resource.start_with?("/messages.json") && env[REQUEST_METHOD] == "POST"
|
37
37
|
serve_messages(Rack::Request.new(env))
|
38
38
|
|
39
39
|
elsif resource =~ /\/message\/([0-9a-f]+)$/
|
@@ -102,10 +102,10 @@ module Logster
|
|
102
102
|
end
|
103
103
|
|
104
104
|
if json
|
105
|
-
[200, { "
|
105
|
+
[200, { "content-type" => "application/json; charset=utf-8" }, [message.to_json]]
|
106
106
|
else
|
107
107
|
preload = { "/show/#{key}" => message }
|
108
|
-
[200, { "
|
108
|
+
[200, { "content-type" => "text/html; charset=utf-8" }, [body(preload)]]
|
109
109
|
end
|
110
110
|
|
111
111
|
elsif resource =~ /\/settings(\.json)?$/
|
@@ -128,9 +128,9 @@ module Logster
|
|
128
128
|
grouping = Logster::GroupingPattern.find_all(raw: true).map do |pattern|
|
129
129
|
{ value: pattern }
|
130
130
|
end
|
131
|
-
[200, { "
|
131
|
+
[200, { "content-type" => "application/json; charset=utf-8" }, [JSON.generate(suppression: suppression, grouping: grouping)]]
|
132
132
|
else
|
133
|
-
[200, { "
|
133
|
+
[200, { "content-type" => "text/html; charset=utf-8" }, [body]]
|
134
134
|
end
|
135
135
|
elsif resource =~ /\/patterns\/([a-zA-Z0-9_]+)\.json$/
|
136
136
|
unless Logster.config.enable_custom_patterns_via_ui
|
@@ -161,12 +161,12 @@ module Logster
|
|
161
161
|
Logster.store.remove_ignore_count(pattern)
|
162
162
|
[200, {}, ["OK"]]
|
163
163
|
elsif resource == "/"
|
164
|
-
[200, { "
|
164
|
+
[200, { "content-type" => "text/html; charset=utf-8" }, [body]]
|
165
165
|
elsif resource =~ /\/fetch-env\/([0-9a-f]+)\.json$/
|
166
166
|
key = $1
|
167
167
|
env = Logster.store.get_env(key)
|
168
168
|
if env
|
169
|
-
[200, { "
|
169
|
+
[200, { "content-type" => "application/json; charset=utf-8" }, [JSON.generate(env)]]
|
170
170
|
else
|
171
171
|
not_found
|
172
172
|
end
|
@@ -181,7 +181,7 @@ module Logster
|
|
181
181
|
group.messages_keys.each { |k| Logster.store.solve(k) }
|
182
182
|
[200, {}, []]
|
183
183
|
elsif resource == '/development-preload.json' && ENV["LOGSTER_ENV"] == "development"
|
184
|
-
[200, { "
|
184
|
+
[200, { "content-type" => "application/json; charset=utf-8" }, [JSON.generate(preloaded_data)]]
|
185
185
|
else
|
186
186
|
not_found
|
187
187
|
end
|
@@ -230,7 +230,7 @@ module Logster
|
|
230
230
|
}
|
231
231
|
|
232
232
|
json = JSON.generate(payload)
|
233
|
-
[200, { "
|
233
|
+
[200, { "content-type" => "application/json" }, [json]]
|
234
234
|
end
|
235
235
|
|
236
236
|
def update_patterns(set_name, req)
|
@@ -258,7 +258,7 @@ module Logster
|
|
258
258
|
return method_not_allowed(%w[POST PUT DELETE])
|
259
259
|
end
|
260
260
|
|
261
|
-
[200, { "
|
261
|
+
[200, { "content-type" => "application/json" }, [JSON.generate(pattern: record.to_s)]]
|
262
262
|
rescue => err
|
263
263
|
error_message = err.message
|
264
264
|
|
@@ -293,7 +293,7 @@ module Logster
|
|
293
293
|
if Array === allowed_methods
|
294
294
|
allowed_methods = allowed_methods.join(", ")
|
295
295
|
end
|
296
|
-
[405, { "
|
296
|
+
[405, { "allow" => allowed_methods }, []]
|
297
297
|
end
|
298
298
|
|
299
299
|
def parse_regex(string)
|
data/lib/logster/redis_store.rb
CHANGED
@@ -318,11 +318,11 @@ module Logster
|
|
318
318
|
end
|
319
319
|
|
320
320
|
def insert_pattern(set_name, pattern)
|
321
|
-
@redis.sadd(set_name, pattern)
|
321
|
+
@redis.sadd(set_name, [pattern])
|
322
322
|
end
|
323
323
|
|
324
324
|
def remove_pattern(set_name, pattern)
|
325
|
-
@redis.srem(set_name, pattern)
|
325
|
+
@redis.srem(set_name, [pattern])
|
326
326
|
end
|
327
327
|
|
328
328
|
def get_patterns(set_name)
|
@@ -434,9 +434,9 @@ module Logster
|
|
434
434
|
redis.hset(hash_key, message.key, message.to_json(exclude_env: true))
|
435
435
|
push_env(message.key, message.env, redis: redis) if save_env
|
436
436
|
if message.protected
|
437
|
-
redis.sadd(protected_key, message.key)
|
437
|
+
redis.sadd(protected_key, [message.key])
|
438
438
|
else
|
439
|
-
redis.srem(protected_key, message.key)
|
439
|
+
redis.srem(protected_key, [message.key])
|
440
440
|
end
|
441
441
|
end
|
442
442
|
|
data/lib/logster/version.rb
CHANGED
@@ -43,23 +43,29 @@ class TestViewer < Minitest::Test
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def test_search_raceguard_s
|
46
|
-
response = request.
|
46
|
+
response = request.post('/logsie/messages.json?search=searchkey')
|
47
47
|
result = JSON.parse(response.body)
|
48
48
|
assert_equal('searchkey', result['search'])
|
49
49
|
end
|
50
50
|
|
51
51
|
def test_search_raceguard_sr
|
52
|
-
response = request.
|
52
|
+
response = request.post('/logsie/messages.json?search=/regex/®ex_search=true')
|
53
53
|
result = JSON.parse(response.body)
|
54
54
|
assert_equal('/regex/', result['search'])
|
55
55
|
end
|
56
56
|
|
57
57
|
def test_search_raceguard_f
|
58
|
-
response = request.
|
58
|
+
response = request.post("/logsie/messages.json?filter=0_1_2_3_4")
|
59
59
|
result = JSON.parse(response.body)
|
60
60
|
assert_equal([0, 1, 2, 3, 4], result['filter'])
|
61
61
|
end
|
62
62
|
|
63
|
+
def test_search_does_not_respond_to_get_requests
|
64
|
+
response = request.get("/logsie/messages.json?filter=0_1_2_3_4")
|
65
|
+
assert_equal(404, response.status)
|
66
|
+
assert_equal("Not found", response.body)
|
67
|
+
end
|
68
|
+
|
63
69
|
def test_regex_parse
|
64
70
|
assert_equal(/hello/i, viewer.send(:parse_regex, '/hello/i'))
|
65
71
|
end
|
@@ -304,7 +310,7 @@ class TestViewer < Minitest::Test
|
|
304
310
|
).each do |path|
|
305
311
|
response = request.get(path)
|
306
312
|
assert_equal(200, response.status)
|
307
|
-
assert_equal('application/javascript', response.headers['
|
313
|
+
assert_equal('application/javascript', response.headers['content-type'])
|
308
314
|
end
|
309
315
|
end
|
310
316
|
|
@@ -315,7 +321,7 @@ class TestViewer < Minitest::Test
|
|
315
321
|
).each do |path|
|
316
322
|
response = request.get(path)
|
317
323
|
assert_equal(200, response.status)
|
318
|
-
assert_equal('text/css', response.headers['
|
324
|
+
assert_equal('text/css', response.headers['content-type'])
|
319
325
|
end
|
320
326
|
end
|
321
327
|
|
@@ -335,7 +341,7 @@ class TestViewer < Minitest::Test
|
|
335
341
|
Logster.store.clear_all
|
336
342
|
env = { "b" => 1, "c" => 2 }
|
337
343
|
msg = Logster.store.report(Logger::INFO, "test", "something hello", env: env)
|
338
|
-
response = request.
|
344
|
+
response = request.post("/logsie/messages.json")
|
339
345
|
assert_equal(200, response.status)
|
340
346
|
messages = JSON.parse(response.body)["messages"]
|
341
347
|
assert_equal(1, messages.size)
|
@@ -348,7 +354,7 @@ class TestViewer < Minitest::Test
|
|
348
354
|
Logster.store.clear_all
|
349
355
|
env = { "b" => 1, "c" => 2 }
|
350
356
|
msg = Logster.store.report(Logger::INFO, "test", "something hello", env: env)
|
351
|
-
response = request.
|
357
|
+
response = request.post("/logsie/messages.json?search=something")
|
352
358
|
assert_equal(200, response.status)
|
353
359
|
messages = JSON.parse(response.body)["messages"]
|
354
360
|
assert_equal(1, messages.size)
|
@@ -387,7 +393,7 @@ class TestViewer < Minitest::Test
|
|
387
393
|
%i[get head options].each do |m|
|
388
394
|
response = request.public_send(m, "/logsie/solve-group", params: { regex: "/gotta be post/" })
|
389
395
|
assert_equal(405, response.status)
|
390
|
-
assert_equal("POST", response.headers["
|
396
|
+
assert_equal("POST", response.headers["allow"])
|
391
397
|
end
|
392
398
|
latest = Logster.store.latest
|
393
399
|
assert_equal(1, latest.size)
|
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: 2.11.
|
4
|
+
version: 2.11.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Saffron
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|