logster 2.8.0 → 2.9.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/.rubocop.yml +2 -1
- data/.travis.yml +0 -1
- data/CHANGELOG.md +7 -0
- data/README.md +2 -2
- data/assets/javascript/client-app.js +149 -118
- data/assets/javascript/vendor.js +151 -128
- data/build_client_app.sh +1 -1
- data/client-app/.eslintignore +0 -2
- data/client-app/.gitignore +0 -2
- data/client-app/app/controllers/index.js +5 -0
- data/client-app/app/lib/utilities.js +3 -1
- data/client-app/package-lock.json +1235 -214
- data/client-app/package.json +5 -5
- data/client-app/tests/integration/components/env-tab-test.js +2 -2
- data/lib/logster/message.rb +1 -5
- data/lib/logster/middleware/reporter.rb +8 -1
- data/lib/logster/middleware/viewer.rb +8 -8
- data/lib/logster/version.rb +1 -1
- data/logster.gemspec +4 -5
- data/test/logster/middleware/test_reporter.rb +23 -0
- data/test/logster/test_group.rb +1 -1
- data/test/logster/test_message.rb +1 -1
- metadata +8 -22
data/client-app/package.json
CHANGED
@@ -24,18 +24,18 @@
|
|
24
24
|
"@fortawesome/free-regular-svg-icons": "^5.13.0",
|
25
25
|
"@fortawesome/free-solid-svg-icons": "^5.13.0",
|
26
26
|
"@glimmer/component": "^1.0.0",
|
27
|
-
"babel-eslint": "^10.0
|
27
|
+
"babel-eslint": "^10.1.0",
|
28
28
|
"broccoli-asset-rev": "^3.0.0",
|
29
29
|
"ember-auto-import": "^1.5.3",
|
30
30
|
"ember-cli": "^3.15.0",
|
31
31
|
"ember-cli-app-version": "^3.2.0",
|
32
|
-
"ember-cli-babel": "^7.
|
32
|
+
"ember-cli-babel": "^7.19.0",
|
33
33
|
"ember-cli-dependency-checker": "^3.2.0",
|
34
34
|
"ember-cli-eslint": "^5.1.0",
|
35
|
-
"ember-cli-htmlbars": "^4.
|
35
|
+
"ember-cli-htmlbars": "^4.3.1",
|
36
36
|
"ember-cli-inject-live-reload": "^2.0.1",
|
37
37
|
"ember-cli-sri": "^2.1.1",
|
38
|
-
"ember-cli-template-lint": "^1.0.0
|
38
|
+
"ember-cli-template-lint": "^1.0.0",
|
39
39
|
"ember-cli-uglify": "^3.0.0",
|
40
40
|
"ember-export-application-global": "^2.0.1",
|
41
41
|
"ember-load-initializers": "^2.1.1",
|
@@ -43,7 +43,7 @@
|
|
43
43
|
"ember-qunit": "^4.6.0",
|
44
44
|
"ember-resolver": "^7.0.0",
|
45
45
|
"ember-source": "^3.15.0",
|
46
|
-
"eslint-plugin-ember": "^7.
|
46
|
+
"eslint-plugin-ember": "^7.13.0",
|
47
47
|
"eslint-plugin-node": "^10.0.0",
|
48
48
|
"loader.js": "^4.7.0",
|
49
49
|
"prettier": "^1.19.1",
|
@@ -148,7 +148,7 @@ module("Integration | Component | env-tab", function(hooks) {
|
|
148
148
|
|
149
149
|
assert.equal(
|
150
150
|
defaultExpanded.children[1].textContent.trim(),
|
151
|
-
"
|
151
|
+
"vvv1, [vvv2]",
|
152
152
|
"list is expanded by default when its length is 3 or less"
|
153
153
|
);
|
154
154
|
|
@@ -165,7 +165,7 @@ module("Integration | Component | env-tab", function(hooks) {
|
|
165
165
|
const expanded = find(".env-table tr");
|
166
166
|
assert.equal(
|
167
167
|
expanded.children[1].textContent.trim(),
|
168
|
-
"
|
168
|
+
"value1, [value2, value3, value4]",
|
169
169
|
"expanded env keys shown correctly"
|
170
170
|
);
|
171
171
|
|
data/lib/logster/message.rb
CHANGED
@@ -137,10 +137,6 @@ module Logster
|
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
140
|
-
def is_similar?(other)
|
141
|
-
self.grouping_key == other.grouping_key
|
142
|
-
end
|
143
|
-
|
144
140
|
def merge_similar_message(other)
|
145
141
|
self.first_timestamp ||= self.timestamp
|
146
142
|
self.timestamp = [self.timestamp, other.timestamp].max
|
@@ -306,7 +302,7 @@ module Logster
|
|
306
302
|
end
|
307
303
|
|
308
304
|
def get_timestamp
|
309
|
-
(Time.
|
305
|
+
(Time.now.to_f * 1000).to_i
|
310
306
|
end
|
311
307
|
end
|
312
308
|
end
|
@@ -57,7 +57,14 @@ module Logster
|
|
57
57
|
message << "\nWindow Location: " << params["window_location"] if params["window_location"]
|
58
58
|
|
59
59
|
backtrace = params["stacktrace"] || ""
|
60
|
-
|
60
|
+
|
61
|
+
severity = ::Logger::Severity::WARN
|
62
|
+
if params["severity"] &&
|
63
|
+
::Logger::Severity.const_defined?(params["severity"].upcase)
|
64
|
+
severity = ::Logger::Severity.const_get(params["severity"].upcase)
|
65
|
+
end
|
66
|
+
|
67
|
+
Logster.store.report(severity,
|
61
68
|
"javascript",
|
62
69
|
message,
|
63
70
|
backtrace: backtrace,
|
@@ -48,7 +48,7 @@ module Logster
|
|
48
48
|
end
|
49
49
|
|
50
50
|
Logster.store.delete(message)
|
51
|
-
|
51
|
+
[301, { "Location" => "#{@logs_path}/" }, []]
|
52
52
|
|
53
53
|
elsif resource =~ /\/(un)?protect\/([0-9a-f]+)$/
|
54
54
|
off = $1 == "un"
|
@@ -61,15 +61,15 @@ module Logster
|
|
61
61
|
|
62
62
|
if off
|
63
63
|
if Logster.store.unprotect(key)
|
64
|
-
|
64
|
+
[301, { "Location" => "#{@logs_path}/show/#{key}?protected=false" }, []]
|
65
65
|
else
|
66
|
-
|
66
|
+
[500, {}, ["Failed"]]
|
67
67
|
end
|
68
68
|
else
|
69
69
|
if Logster.store.protect(key)
|
70
|
-
|
70
|
+
[301, { "Location" => "#{@logs_path}/show/#{key}?protected=true" }, []]
|
71
71
|
else
|
72
|
-
|
72
|
+
[500, {}, ["Failed"]]
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
@@ -83,14 +83,14 @@ module Logster
|
|
83
83
|
|
84
84
|
Logster.store.solve(key)
|
85
85
|
|
86
|
-
|
86
|
+
[301, { "Location" => "#{@logs_path}" }, []]
|
87
87
|
|
88
88
|
elsif resource =~ /\/clear$/
|
89
89
|
if env[REQUEST_METHOD] != "POST"
|
90
90
|
return method_not_allowed("POST")
|
91
91
|
end
|
92
92
|
Logster.store.clear
|
93
|
-
|
93
|
+
[200, {}, ["Messages cleared"]]
|
94
94
|
|
95
95
|
elsif resource =~ /\/show\/([0-9a-f]+)(\.json)?$/
|
96
96
|
key = $1
|
@@ -179,7 +179,7 @@ module Logster
|
|
179
179
|
end.first
|
180
180
|
return not_found("No such pattern group exists") if !group
|
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
184
|
[200, { "Content-Type" => "application/json; charset=utf-8" }, [JSON.generate(preloaded_data)]]
|
185
185
|
else
|
data/lib/logster/version.rb
CHANGED
data/logster.gemspec
CHANGED
@@ -8,7 +8,7 @@ require 'logster/version'
|
|
8
8
|
Gem::Specification.new do |spec|
|
9
9
|
spec.name = "logster"
|
10
10
|
spec.version = Logster::VERSION
|
11
|
-
spec.authors = ["
|
11
|
+
spec.authors = ["Sam Saffron"]
|
12
12
|
spec.email = ["sam.saffron@gmail.com"]
|
13
13
|
spec.summary = %q{UI for viewing logs in Rack}
|
14
14
|
spec.description = %q{UI for viewing logs in Rack}
|
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.license = "MIT"
|
17
17
|
|
18
18
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
|
-
f.start_with?("
|
19
|
+
f.start_with?("website") || f.start_with?("bin")
|
20
20
|
end
|
21
21
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
22
22
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
@@ -32,7 +32,6 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_development_dependency "guard"
|
33
33
|
spec.add_development_dependency "guard-minitest"
|
34
34
|
spec.add_development_dependency "timecop"
|
35
|
-
spec.add_development_dependency "byebug", "~> 11.
|
36
|
-
spec.add_development_dependency "rubocop", "~>
|
37
|
-
spec.add_development_dependency "rubocop-discourse"
|
35
|
+
spec.add_development_dependency "byebug", "~> 11.1.0"
|
36
|
+
spec.add_development_dependency "rubocop-discourse", "~> 2.1.2"
|
38
37
|
end
|
@@ -11,6 +11,7 @@ class TestReporter < Minitest::Test
|
|
11
11
|
Logster.store = Logster::RedisStore.new
|
12
12
|
Logster.store.clear_all
|
13
13
|
Logster.config.enable_js_error_reporting = true
|
14
|
+
Logster.config.rate_limit_error_reporting = true
|
14
15
|
end
|
15
16
|
|
16
17
|
def test_logs_errors
|
@@ -22,6 +23,28 @@ class TestReporter < Minitest::Test
|
|
22
23
|
assert_equal(1, Logster.store.count)
|
23
24
|
end
|
24
25
|
|
26
|
+
def test_logs_severity_of_errors
|
27
|
+
Logster.config.rate_limit_error_reporting = false
|
28
|
+
|
29
|
+
reporter = Logster::Middleware::Reporter.new(nil)
|
30
|
+
env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello")
|
31
|
+
status, = reporter.call(env)
|
32
|
+
|
33
|
+
assert_equal(Logger::Severity::WARN, Logster.store.latest[-1].severity)
|
34
|
+
|
35
|
+
reporter = Logster::Middleware::Reporter.new(nil)
|
36
|
+
env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello&severity=invalid")
|
37
|
+
status, = reporter.call(env)
|
38
|
+
|
39
|
+
assert_equal(Logger::Severity::WARN, Logster.store.latest[-1].severity)
|
40
|
+
|
41
|
+
reporter = Logster::Middleware::Reporter.new(nil)
|
42
|
+
env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello&severity=error")
|
43
|
+
status, = reporter.call(env)
|
44
|
+
|
45
|
+
assert_equal(Logger::Severity::ERROR, Logster.store.latest[-1].severity)
|
46
|
+
end
|
47
|
+
|
25
48
|
def test_respects_ban_on_errors
|
26
49
|
Logster.config.enable_js_error_reporting = false
|
27
50
|
|
data/test/logster/test_group.rb
CHANGED
@@ -10,7 +10,7 @@ class TestGroup < MiniTest::Test
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_from_json_works_correctly
|
13
|
-
time = (Time.
|
13
|
+
time = (Time.now.to_f * 1000).to_i - 5000
|
14
14
|
json = JSON.generate(
|
15
15
|
key: '/somekey/',
|
16
16
|
messages_keys: [111, 222, 333].map(&:to_s),
|
@@ -20,7 +20,7 @@ class TestMessage < MiniTest::Test
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def test_populate_from_env_will_add_time_to_env_unless_it_already_exists
|
23
|
-
t = (Time.
|
23
|
+
t = (Time.now.to_f * 1000).to_i
|
24
24
|
msg = Logster::Message.new(0, '', 'test', t)
|
25
25
|
msg.populate_from_env({})
|
26
26
|
assert_equal(t, msg.env["time"])
|
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.
|
4
|
+
version: 2.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Sam Saffron
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -114,42 +114,28 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 11.
|
117
|
+
version: 11.1.0
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 11.
|
124
|
+
version: 11.1.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name: rubocop
|
126
|
+
name: rubocop-discourse
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
131
|
+
version: 2.1.2
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: rubocop-discourse
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - ">="
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
138
|
+
version: 2.1.2
|
153
139
|
description: UI for viewing logs in Rack
|
154
140
|
email:
|
155
141
|
- sam.saffron@gmail.com
|