logster 2.9.2 → 2.9.7

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.
@@ -18,7 +18,8 @@ module Logster
18
18
  :gems_dir,
19
19
  :max_env_bytes,
20
20
  :max_env_count_per_message,
21
- :maximum_message_length
21
+ :maximum_message_length,
22
+ :use_full_hostname
22
23
  )
23
24
 
24
25
  attr_writer :subdirectory
@@ -39,6 +40,7 @@ module Logster
39
40
  @enable_backtrace_links = true
40
41
  @gems_dir = Gem.dir + "/gems/"
41
42
  @maximum_message_length = 2000
43
+ @use_full_hostname = nil
42
44
 
43
45
  @allow_grouping = false
44
46
 
@@ -80,7 +80,8 @@ module Logster
80
80
  end
81
81
 
82
82
  def self.hostname
83
- @hostname ||= `hostname`.strip! rescue "<unknown>"
83
+ command = Logster.config.use_full_hostname ? `hostname -f` : `hostname`
84
+ @hostname ||= command.strip! rescue "<unknown>"
84
85
  end
85
86
 
86
87
  def populate_from_env(env)
@@ -99,7 +100,7 @@ module Logster
99
100
  env["time"] = @timestamp || get_timestamp
100
101
  end
101
102
  end
102
- @env = Message.populate_from_env(env)
103
+ self.env = Message.populate_from_env(env)
103
104
  end
104
105
 
105
106
  def self.default_env
@@ -113,7 +114,8 @@ module Logster
113
114
 
114
115
  # in its own method so it can be overridden
115
116
  def grouping_hash
116
- { message: self.message, severity: self.severity, backtrace: self.backtrace }
117
+ message = self.message.gsub(/[0-9a-f]+/i, "X")
118
+ { message: message, severity: self.severity, backtrace: self.backtrace }
117
119
  end
118
120
 
119
121
  # todo - memoize?
@@ -342,7 +342,7 @@ module Logster
342
342
  def rate_limited?(ip_address, perform: false, limit: 60)
343
343
  key = ip_rate_limit_key(ip_address)
344
344
 
345
- limited = @redis.exists(key)
345
+ limited = @redis.call([:exists, key])
346
346
  if Integer === limited
347
347
  limited = limited != 0
348
348
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Logster
4
- VERSION = "2.9.2"
4
+ VERSION = "2.9.7"
5
5
  end
data/logster.gemspec CHANGED
@@ -15,7 +15,9 @@ Gem::Specification.new do |spec|
15
15
  spec.homepage = "https://github.com/discourse/logster"
16
16
  spec.license = "MIT"
17
17
 
18
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
+ spec.required_ruby_version = ">= 2.5.0"
19
+
20
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
21
  f.start_with?("website") || f.start_with?("bin")
20
22
  end
21
23
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
@@ -33,5 +35,5 @@ Gem::Specification.new do |spec|
33
35
  spec.add_development_dependency "guard-minitest"
34
36
  spec.add_development_dependency "timecop"
35
37
  spec.add_development_dependency "byebug", "~> 11.1.0"
36
- spec.add_development_dependency "rubocop-discourse", "~> 2.1.2"
38
+ spec.add_development_dependency "rubocop-discourse", "~> 2.4.1"
37
39
  end
@@ -28,19 +28,19 @@ class TestReporter < Minitest::Test
28
28
 
29
29
  reporter = Logster::Middleware::Reporter.new(nil)
30
30
  env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello")
31
- status, = reporter.call(env)
31
+ reporter.call(env)
32
32
 
33
33
  assert_equal(Logger::Severity::WARN, Logster.store.latest[-1].severity)
34
34
 
35
35
  reporter = Logster::Middleware::Reporter.new(nil)
36
36
  env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello&severity=invalid")
37
- status, = reporter.call(env)
37
+ reporter.call(env)
38
38
 
39
39
  assert_equal(Logger::Severity::WARN, Logster.store.latest[-1].severity)
40
40
 
41
41
  reporter = Logster::Middleware::Reporter.new(nil)
42
42
  env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello&severity=error")
43
- status, = reporter.call(env)
43
+ reporter.call(env)
44
44
 
45
45
  assert_equal(Logger::Severity::ERROR, Logster.store.latest[-1].severity)
46
46
  end
@@ -188,4 +188,16 @@ class TestBaseStore < Minitest::Test
188
188
  refute_includes(store.reported.first.env.keys.map(&:to_sym), :backtrace)
189
189
  end
190
190
  end
191
+
192
+ def test_envs_with_invalid_encoding_dont_raise_errors
193
+ msg = @store.report(
194
+ Logger::WARN,
195
+ '',
196
+ 'me have invalid encoding',
197
+ env: {
198
+ axe: "a\xF1xasa"
199
+ }
200
+ )
201
+ assert_equal("a�xasa", msg.env[:axe])
202
+ end
191
203
  end
@@ -78,6 +78,18 @@ class TestMessage < MiniTest::Test
78
78
  Logster.config.application_version = nil
79
79
  end
80
80
 
81
+ def test_use_full_hostname
82
+ Logster::Message.instance_variable_set(:@hostname, nil)
83
+ Logster.config.use_full_hostname = true
84
+ msg = Logster::Message.new(0, '', 'test', 10)
85
+ msg.populate_from_env({})
86
+
87
+ assert_equal(`hostname -f`.strip!, msg.env["hostname"])
88
+ ensure
89
+ Logster.config.use_full_hostname = nil
90
+ Logster::Message.instance_variable_set(:@hostname, nil)
91
+ end
92
+
81
93
  def test_merging_sums_count_for_both_messages
82
94
  msg1 = Logster::Message.new(0, '', 'test', 10, count: 15)
83
95
  msg2 = Logster::Message.new(0, '', 'test', 20, count: 13)
@@ -1044,6 +1044,24 @@ class TestRedisStore < Minitest::Test
1044
1044
  end
1045
1045
  end
1046
1046
 
1047
+ def test_messages_that_differ_only_by_numbers_or_hashes_are_merged
1048
+ config_reset(allow_grouping: true) do
1049
+ first_message = <<~TEXT
1050
+ DistributedMutex("download_20450e291e8f1e5ba03ca7f20fb7d9da570c94a6"):
1051
+ held for too long, expected max: 60 secs, took an extra 73 secs
1052
+ TEXT
1053
+ msg = @store.report(Logger::WARN, '', first_message, backtrace: caller)
1054
+
1055
+ second_message = <<~TEXT
1056
+ DistributedMutex("download_e09ae082c60a351dedec67ed869652862b232a0b"):
1057
+ held for too long, expected max: 60 secs, took an extra 287 secs
1058
+ TEXT
1059
+ msg2 = @store.report(Logger::WARN, '', second_message, backtrace: caller)
1060
+
1061
+ assert_equal(msg.key, msg2.key)
1062
+ end
1063
+ end
1064
+
1047
1065
  private
1048
1066
 
1049
1067
  def config_reset(configs)
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.9.2
4
+ version: 2.9.7
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-08-11 00:00:00.000000000 Z
11
+ date: 2021-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -128,14 +128,14 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 2.1.2
131
+ version: 2.4.1
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: 2.1.2
138
+ version: 2.4.1
139
139
  description: UI for viewing logs in Rack
140
140
  email:
141
141
  - sam.saffron@gmail.com
@@ -143,9 +143,9 @@ executables: []
143
143
  extensions: []
144
144
  extra_rdoc_files: []
145
145
  files:
146
+ - ".github/workflows/ci.yml"
146
147
  - ".gitignore"
147
148
  - ".rubocop.yml"
148
- - ".travis.yml"
149
149
  - CHANGELOG.md
150
150
  - Gemfile
151
151
  - Guardfile
@@ -288,14 +288,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
288
288
  requirements:
289
289
  - - ">="
290
290
  - !ruby/object:Gem::Version
291
- version: '0'
291
+ version: 2.5.0
292
292
  required_rubygems_version: !ruby/object:Gem::Requirement
293
293
  requirements:
294
294
  - - ">="
295
295
  - !ruby/object:Gem::Version
296
296
  version: '0'
297
297
  requirements: []
298
- rubygems_version: 3.1.2
298
+ rubygems_version: 3.1.4
299
299
  signing_key:
300
300
  specification_version: 4
301
301
  summary: UI for viewing logs in Rack
data/.travis.yml DELETED
@@ -1,17 +0,0 @@
1
- language: ruby
2
-
3
- matrix:
4
- fast_finish: true
5
-
6
- rvm:
7
- - 2.5.3
8
- - 2.6.5
9
- - 2.7.0
10
-
11
- services:
12
- - redis-server
13
-
14
- before_install:
15
- - gem install bundler -v 1.17.2
16
-
17
- sudo: false