logster 2.21.0 → 3.0.1

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.
Files changed (140) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/README.md +29 -14
  4. data/assets/javascript/main-C9t0S9He.js +1 -0
  5. data/assets/javascript/modules-4-12-BnbZfQQN.js +1 -0
  6. data/assets/javascript/vendor.js +11 -5260
  7. data/assets/logster-config.json +18 -0
  8. data/assets/manifest.json +23 -0
  9. data/assets/stylesheets/main-et5OPj6E.css +1 -0
  10. data/lib/logster/configuration.rb +1 -0
  11. data/lib/logster/middleware/reporter.rb +34 -3
  12. data/lib/logster/middleware/viewer.rb +204 -32
  13. data/lib/logster/rails/railtie.rb +4 -20
  14. data/lib/logster/redis_store.rb +0 -2
  15. data/lib/logster/version.rb +1 -1
  16. data/lib/logster.rb +1 -1
  17. metadata +17 -186
  18. data/.github/workflows/ci.yml +0 -140
  19. data/.gitignore +0 -3
  20. data/.rubocop.yml +0 -12
  21. data/.streerc +0 -2
  22. data/Gemfile +0 -10
  23. data/Guardfile +0 -10
  24. data/Rakefile +0 -24
  25. data/assets/javascript/.gitkeep +0 -0
  26. data/assets/javascript/chunk.524.b7d0b89d25457a72409c.js +0 -22
  27. data/assets/javascript/chunk.582.5a04ae4713e692cd335a.js +0 -22
  28. data/assets/javascript/chunk.747.a730c497582bb6742a6e.js +0 -579
  29. data/assets/javascript/chunk.761.64949d89942c829e5c1b.js +0 -1213
  30. data/assets/javascript/client-app.js +0 -1389
  31. data/assets/stylesheets/.gitkeep +0 -0
  32. data/assets/stylesheets/client-app.css +0 -1
  33. data/assets/stylesheets/vendor.css +0 -1
  34. data/build_client_app.sh +0 -10
  35. data/client-app/.editorconfig +0 -19
  36. data/client-app/.ember-cli +0 -9
  37. data/client-app/.eslintignore +0 -20
  38. data/client-app/.eslintrc +0 -10
  39. data/client-app/.gitignore +0 -23
  40. data/client-app/.prettierignore +0 -21
  41. data/client-app/.prettierrc +0 -1
  42. data/client-app/.template-lintrc.js +0 -10
  43. data/client-app/.watchmanconfig +0 -3
  44. data/client-app/README.md +0 -56
  45. data/client-app/app/app.js +0 -12
  46. data/client-app/app/components/actions-menu.js +0 -50
  47. data/client-app/app/components/back-to-site-link.js +0 -9
  48. data/client-app/app/components/back-trace.js +0 -153
  49. data/client-app/app/components/env-tab.js +0 -68
  50. data/client-app/app/components/message-info.js +0 -151
  51. data/client-app/app/components/message-row.js +0 -46
  52. data/client-app/app/components/page-nav.js +0 -42
  53. data/client-app/app/components/panel-resizer.js +0 -108
  54. data/client-app/app/components/patterns-list.js +0 -142
  55. data/client-app/app/components/tab-contents.js +0 -23
  56. data/client-app/app/components/tabbed-section.js +0 -45
  57. data/client-app/app/components/time-formatter.js +0 -36
  58. data/client-app/app/controllers/index.js +0 -288
  59. data/client-app/app/controllers/show.js +0 -39
  60. data/client-app/app/helpers/logster-url.js +0 -12
  61. data/client-app/app/helpers/or.js +0 -7
  62. data/client-app/app/index.html +0 -31
  63. data/client-app/app/initializers/app-init.js +0 -71
  64. data/client-app/app/lib/decorators.js +0 -13
  65. data/client-app/app/lib/preload.js +0 -43
  66. data/client-app/app/lib/utilities.js +0 -230
  67. data/client-app/app/models/group.js +0 -34
  68. data/client-app/app/models/message-collection.js +0 -303
  69. data/client-app/app/models/message.js +0 -128
  70. data/client-app/app/models/pattern-item.js +0 -32
  71. data/client-app/app/resolver.js +0 -3
  72. data/client-app/app/router.js +0 -13
  73. data/client-app/app/routes/index.js +0 -64
  74. data/client-app/app/routes/settings.js +0 -32
  75. data/client-app/app/routes/show.js +0 -16
  76. data/client-app/app/services/events.js +0 -4
  77. data/client-app/app/styles/app.css +0 -898
  78. data/client-app/app/templates/application.hbs +0 -1
  79. data/client-app/app/templates/components/actions-menu.hbs +0 -31
  80. data/client-app/app/templates/components/back-to-site-link.hbs +0 -8
  81. data/client-app/app/templates/components/back-trace.hbs +0 -15
  82. data/client-app/app/templates/components/env-tab.hbs +0 -10
  83. data/client-app/app/templates/components/message-info.hbs +0 -86
  84. data/client-app/app/templates/components/message-row.hbs +0 -32
  85. data/client-app/app/templates/components/page-nav.hbs +0 -37
  86. data/client-app/app/templates/components/panel-resizer.hbs +0 -3
  87. data/client-app/app/templates/components/patterns-list.hbs +0 -78
  88. data/client-app/app/templates/components/tabbed-section.hbs +0 -18
  89. data/client-app/app/templates/components/time-formatter.hbs +0 -1
  90. data/client-app/app/templates/index.hbs +0 -192
  91. data/client-app/app/templates/settings.hbs +0 -47
  92. data/client-app/app/templates/show.hbs +0 -13
  93. data/client-app/config/ember-cli-update.json +0 -18
  94. data/client-app/config/environment.js +0 -51
  95. data/client-app/config/icons.js +0 -28
  96. data/client-app/config/optional-features.json +0 -6
  97. data/client-app/config/targets.js +0 -26
  98. data/client-app/ember-cli-build.js +0 -34
  99. data/client-app/package.json +0 -76
  100. data/client-app/preload-json-manager.rb +0 -35
  101. data/client-app/public/assets/images/icon_144x144.png +0 -0
  102. data/client-app/public/assets/images/icon_64x64.png +0 -0
  103. data/client-app/testem.js +0 -23
  104. data/client-app/tests/index.html +0 -41
  105. data/client-app/tests/integration/components/back-to-site-link-test.js +0 -20
  106. data/client-app/tests/integration/components/back-trace-test.js +0 -138
  107. data/client-app/tests/integration/components/env-tab-test.js +0 -220
  108. data/client-app/tests/integration/components/message-info-test.js +0 -122
  109. data/client-app/tests/integration/components/patterns-list-test.js +0 -76
  110. data/client-app/tests/test-helper.js +0 -12
  111. data/client-app/tests/unit/controllers/index-test.js +0 -77
  112. data/client-app/tests/unit/controllers/show-test.js +0 -12
  113. data/client-app/tests/unit/routes/index-test.js +0 -11
  114. data/client-app/tests/unit/routes/show-test.js +0 -11
  115. data/client-app/yarn.lock +0 -9905
  116. data/gemfiles/rails_6.1.gemfile +0 -12
  117. data/gemfiles/rails_7.0.gemfile +0 -12
  118. data/gemfiles/rails_7.1.gemfile +0 -9
  119. data/gemfiles/rails_7.2.gemfile +0 -9
  120. data/logster.gemspec +0 -43
  121. data/test/dummy/config/application.rb +0 -31
  122. data/test/dummy/config/boot.rb +0 -6
  123. data/test/dummy/config/environment.rb +0 -6
  124. data/test/examples/test_sidekiq_reporter_example.rb +0 -47
  125. data/test/fake_data/Gemfile +0 -6
  126. data/test/fake_data/generate.rb +0 -23
  127. data/test/logster/middleware/test_reporter.rb +0 -84
  128. data/test/logster/middleware/test_viewer.rb +0 -495
  129. data/test/logster/test_base_store.rb +0 -224
  130. data/test/logster/test_cache.rb +0 -39
  131. data/test/logster/test_defer_logger.rb +0 -36
  132. data/test/logster/test_group.rb +0 -92
  133. data/test/logster/test_ignore_pattern.rb +0 -42
  134. data/test/logster/test_logger.rb +0 -177
  135. data/test/logster/test_message.rb +0 -269
  136. data/test/logster/test_pattern.rb +0 -144
  137. data/test/logster/test_railtie.rb +0 -21
  138. data/test/logster/test_redis_rate_limiter.rb +0 -246
  139. data/test/logster/test_redis_store.rb +0 -1165
  140. data/test/test_helper.rb +0 -66
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source "https://rubygems.org"
4
-
5
- group :test do
6
- gem "rails", "~> 6.1.0"
7
- gem "concurrent-ruby", "1.3.4"
8
- gem "mutex_m"
9
- gem "bigdecimal"
10
- end
11
-
12
- gemspec path: "../"
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source "https://rubygems.org"
4
-
5
- group :test do
6
- gem "rails", "~> 7.0.0"
7
- gem "concurrent-ruby", "1.3.4"
8
- gem "mutex_m"
9
- gem "bigdecimal"
10
- end
11
-
12
- gemspec path: "../"
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source "https://rubygems.org"
4
-
5
- group :test do
6
- gem "rails", "~> 7.1.0"
7
- end
8
-
9
- gemspec path: "../"
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source "https://rubygems.org"
4
-
5
- group :test do
6
- gem "rails", "~> 7.2.0"
7
- end
8
-
9
- gemspec path: "../"
data/logster.gemspec DELETED
@@ -1,43 +0,0 @@
1
- # coding: utf-8
2
- # frozen_string_literal: true
3
-
4
- lib = File.expand_path("../lib", __FILE__)
5
- $LOAD_PATH.unshift(lib) if !$LOAD_PATH.include?(lib)
6
- require "logster/version"
7
-
8
- Gem::Specification.new do |spec|
9
- spec.name = "logster"
10
- spec.version = Logster::VERSION
11
- spec.authors = ["Sam Saffron"]
12
- spec.email = ["sam.saffron@gmail.com"]
13
- spec.summary = "UI for viewing logs in Rack"
14
- spec.description = "UI for viewing logs in Rack"
15
- spec.homepage = "https://github.com/discourse/logster"
16
- spec.license = "MIT"
17
-
18
- spec.required_ruby_version = ">= 2.5.0"
19
-
20
- files = `git ls-files -z`.split("\x0").reject { |f| f.start_with?(/website|bin/) }
21
- files += Dir.glob("assets/javascript/*")
22
- files += Dir.glob("assets/stylesheets/*")
23
- spec.files = files
24
-
25
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
26
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
27
- spec.require_paths = ["lib"]
28
-
29
- # NOTE dependency on rack is not explicit, this enables us to use
30
- # logster outside of rack (for reporting)
31
-
32
- spec.add_development_dependency "bundler"
33
- spec.add_development_dependency "rake"
34
- spec.add_development_dependency "rack"
35
- spec.add_development_dependency "redis"
36
- spec.add_development_dependency "guard"
37
- spec.add_development_dependency "guard-minitest"
38
- spec.add_development_dependency "timecop"
39
- spec.add_development_dependency "byebug", "~> 11.1.0"
40
- spec.add_development_dependency "rubocop-discourse"
41
- spec.add_development_dependency "syntax_tree"
42
- spec.add_development_dependency "sqlite3"
43
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
- require_relative "boot"
3
-
4
- require "active_record/railtie"
5
- require "action_controller/railtie"
6
-
7
- # Require the gems listed in Gemfile, including any gems
8
- # you've limited to :test, :development, or :production.
9
- Bundler.require(*Rails.groups)
10
-
11
- require "logster"
12
-
13
- module Dummy
14
- class Application < Rails::Application
15
- config.load_defaults Rails::VERSION::STRING.to_f
16
-
17
- # For compatibility with applications that use this config
18
- config.action_controller.include_all_helpers = false
19
-
20
- config.eager_load = false
21
-
22
- # Configuration for the application, engines, and railties goes here.
23
- #
24
- # These settings can be overridden in specific environments using the files
25
- # in config/environments, which are processed later.
26
- #
27
- # config.time_zone = "Central Time (US & Canada)"
28
- # config.eager_load_paths << Rails.root.join("extras")
29
- Logster.set_environments([Rails.env.to_sym])
30
- end
31
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
- # Set up gems listed in the Gemfile.
3
- ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../../Gemfile", __dir__)
4
-
5
- require "bundler/setup" if File.exist?(ENV["BUNDLE_GEMFILE"])
6
- $LOAD_PATH.unshift File.expand_path("../../../lib", __dir__)
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
- # Load the Rails application.
3
- require_relative "application"
4
-
5
- # Initialize the Rails application.
6
- Rails.application.initialize!
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../test_helper"
4
- require "logster/logger"
5
- require "logster/redis_store"
6
- require "logger"
7
- require "examples/sidekiq_logster_reporter"
8
-
9
- class TestSidekiqReporter < Minitest::Test
10
- def setup
11
- Logster.store = @store = Logster::RedisStore.new(Redis.new)
12
- Logster.logger = @logger = Logster::Logger.new(Logster.store)
13
- @store.clear_all
14
- end
15
-
16
- def teardown
17
- @store.clear_all
18
- end
19
-
20
- def test_sidekiq_handler_example
21
- handler = SidekiqLogsterReporter.new
22
- error = nil
23
- begin
24
- raise TypeError.new
25
- rescue => e
26
- error = e
27
- end
28
- trace = error.backtrace
29
-
30
- handler.call(error, code: "Test", something_important: "Foo", params: { article_id: 20 })
31
-
32
- report = @store.latest[0]
33
-
34
- # Message is right format
35
- assert_equal("Job exception: TypeError\n", report.message)
36
-
37
- # A backtrace is joined()
38
- assert_equal(trace.join("\n"), report.backtrace)
39
- # The backtrace is deleted from the env
40
- assert_nil(report.env["backtrace"])
41
- assert_nil(report.env[:backtrace])
42
-
43
- # The env is in the report
44
- assert_equal("Test", report.env["code"])
45
- assert_equal(20, report.env["params"]["article_id"])
46
- end
47
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- gem 'redis'
6
- gem 'logster', path: '../../'
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "redis"
4
- require "logster"
5
-
6
- Logster.config.allow_grouping = true
7
- Logster.config.application_version = "ABC123"
8
- Logster.store = Logster::RedisStore.new
9
-
10
- 10.times do
11
- Logster.store.report(
12
- Logger::WARN,
13
- "application",
14
- "test warning",
15
- backtrace: "method1\nmethod2",
16
- env: {
17
- something: ["hello world", "hello places"],
18
- another: {
19
- thing: "something else",
20
- },
21
- },
22
- )
23
- end
@@ -1,84 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../../test_helper"
4
- require "rack"
5
- require "logster/redis_store"
6
- require "logster/middleware/reporter"
7
-
8
- class TestReporter < Minitest::Test
9
- def setup
10
- Logster.store = Logster::RedisStore.new
11
- Logster.store.clear_all
12
- Logster.config.enable_js_error_reporting = true
13
- Logster.config.rate_limit_error_reporting = true
14
- end
15
-
16
- def test_logs_errors
17
- reporter = Logster::Middleware::Reporter.new(nil)
18
- env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello")
19
- status, = reporter.call(env)
20
-
21
- assert_equal(200, status)
22
- assert_equal(1, Logster.store.count)
23
- end
24
-
25
- def test_logs_severity_of_errors
26
- Logster.config.rate_limit_error_reporting = false
27
-
28
- reporter = Logster::Middleware::Reporter.new(nil)
29
- env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello")
30
- reporter.call(env)
31
-
32
- assert_equal(Logger::Severity::WARN, Logster.store.latest[-1].severity)
33
-
34
- reporter = Logster::Middleware::Reporter.new(nil)
35
- env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello&severity=invalid")
36
- reporter.call(env)
37
-
38
- assert_equal(Logger::Severity::WARN, Logster.store.latest[-1].severity)
39
-
40
- reporter = Logster::Middleware::Reporter.new(nil)
41
- env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello&severity=error")
42
- reporter.call(env)
43
-
44
- assert_equal(Logger::Severity::ERROR, Logster.store.latest[-1].severity)
45
- end
46
-
47
- def test_respects_ban_on_errors
48
- Logster.config.enable_js_error_reporting = false
49
-
50
- reporter = Logster::Middleware::Reporter.new(nil)
51
- env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello")
52
- status, = reporter.call(env)
53
-
54
- assert_equal(403, status)
55
- assert_equal(0, Logster.store.count)
56
- end
57
-
58
- def test_rate_limiting
59
- reporter = Logster::Middleware::Reporter.new(nil)
60
- env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello")
61
- status, = reporter.call(env)
62
-
63
- assert_equal(200, status)
64
- assert_equal(1, Logster.store.count)
65
-
66
- reporter = Logster::Middleware::Reporter.new(nil)
67
- env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello2")
68
- status, = reporter.call(env)
69
-
70
- assert_equal(429, status)
71
- assert_equal(1, Logster.store.count)
72
-
73
- reporter = Logster::Middleware::Reporter.new(nil)
74
- env =
75
- Rack::MockRequest.env_for(
76
- "/logs/report_js_error?message=hello2",
77
- "REMOTE_ADDR" => "100.1.1.2",
78
- )
79
- status, = reporter.call(env)
80
-
81
- assert_equal(200, status)
82
- assert_equal(2, Logster.store.count)
83
- end
84
- end