logster 2.19.1 → 2.20.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.
data/client-app/yarn.lock CHANGED
@@ -2426,13 +2426,13 @@ bluebird@^3.4.6, bluebird@^3.7.2:
2426
2426
  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
2427
2427
  integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
2428
2428
 
2429
- body-parser@1.20.1:
2430
- version "1.20.1"
2431
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
2432
- integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
2429
+ body-parser@1.20.2:
2430
+ version "1.20.2"
2431
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd"
2432
+ integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==
2433
2433
  dependencies:
2434
2434
  bytes "3.1.2"
2435
- content-type "~1.0.4"
2435
+ content-type "~1.0.5"
2436
2436
  debug "2.6.9"
2437
2437
  depd "2.0.0"
2438
2438
  destroy "1.2.0"
@@ -2440,7 +2440,7 @@ body-parser@1.20.1:
2440
2440
  iconv-lite "0.4.24"
2441
2441
  on-finished "2.4.1"
2442
2442
  qs "6.11.0"
2443
- raw-body "2.5.1"
2443
+ raw-body "2.5.2"
2444
2444
  type-is "~1.6.18"
2445
2445
  unpipe "1.0.0"
2446
2446
 
@@ -3419,7 +3419,7 @@ content-disposition@0.5.4:
3419
3419
  dependencies:
3420
3420
  safe-buffer "5.2.1"
3421
3421
 
3422
- content-type@~1.0.4:
3422
+ content-type@~1.0.4, content-type@~1.0.5:
3423
3423
  version "1.0.5"
3424
3424
  resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
3425
3425
  integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
@@ -3439,10 +3439,10 @@ cookie-signature@1.0.6:
3439
3439
  resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
3440
3440
  integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
3441
3441
 
3442
- cookie@0.5.0:
3443
- version "0.5.0"
3444
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
3445
- integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
3442
+ cookie@0.6.0:
3443
+ version "0.6.0"
3444
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051"
3445
+ integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==
3446
3446
 
3447
3447
  cookie@~0.4.1:
3448
3448
  version "0.4.2"
@@ -4356,15 +4356,15 @@ end-of-stream@^1.1.0:
4356
4356
  dependencies:
4357
4357
  once "^1.4.0"
4358
4358
 
4359
- engine.io-parser@~5.0.3:
4360
- version "5.0.6"
4361
- resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.6.tgz#7811244af173e157295dec9b2718dfe42a64ef45"
4362
- integrity sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==
4359
+ engine.io-parser@~5.2.1:
4360
+ version "5.2.2"
4361
+ resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49"
4362
+ integrity sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==
4363
4363
 
4364
- engine.io@~6.4.1:
4365
- version "6.4.2"
4366
- resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.4.2.tgz#ffeaf68f69b1364b0286badddf15ff633476473f"
4367
- integrity sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==
4364
+ engine.io@~6.5.2:
4365
+ version "6.5.5"
4366
+ resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.5.5.tgz#430b80d8840caab91a50e9e23cb551455195fc93"
4367
+ integrity sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==
4368
4368
  dependencies:
4369
4369
  "@types/cookie" "^0.4.1"
4370
4370
  "@types/cors" "^2.8.12"
@@ -4374,8 +4374,8 @@ engine.io@~6.4.1:
4374
4374
  cookie "~0.4.1"
4375
4375
  cors "~2.8.5"
4376
4376
  debug "~4.3.1"
4377
- engine.io-parser "~5.0.3"
4378
- ws "~8.11.0"
4377
+ engine.io-parser "~5.2.1"
4378
+ ws "~8.17.1"
4379
4379
 
4380
4380
  enhanced-resolve@^5.10.0:
4381
4381
  version "5.12.0"
@@ -4835,16 +4835,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2:
4835
4835
  homedir-polyfill "^1.0.1"
4836
4836
 
4837
4837
  express@^4.10.7, express@^4.17.1:
4838
- version "4.18.2"
4839
- resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
4840
- integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
4838
+ version "4.19.2"
4839
+ resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465"
4840
+ integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==
4841
4841
  dependencies:
4842
4842
  accepts "~1.3.8"
4843
4843
  array-flatten "1.1.1"
4844
- body-parser "1.20.1"
4844
+ body-parser "1.20.2"
4845
4845
  content-disposition "0.5.4"
4846
4846
  content-type "~1.0.4"
4847
- cookie "0.5.0"
4847
+ cookie "0.6.0"
4848
4848
  cookie-signature "1.0.6"
4849
4849
  debug "2.6.9"
4850
4850
  depd "2.0.0"
@@ -5201,9 +5201,9 @@ flatted@^3.1.0:
5201
5201
  integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
5202
5202
 
5203
5203
  follow-redirects@^1.0.0:
5204
- version "1.15.4"
5205
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.4.tgz#cdc7d308bf6493126b17ea2191ea0ccf3e535adf"
5206
- integrity sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==
5204
+ version "1.15.6"
5205
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b"
5206
+ integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
5207
5207
 
5208
5208
  for-each@^0.3.3:
5209
5209
  version "0.3.3"
@@ -7918,10 +7918,10 @@ range-parser@~1.2.1:
7918
7918
  resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
7919
7919
  integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
7920
7920
 
7921
- raw-body@2.5.1:
7922
- version "2.5.1"
7923
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
7924
- integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
7921
+ raw-body@2.5.2:
7922
+ version "2.5.2"
7923
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a"
7924
+ integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==
7925
7925
  dependencies:
7926
7926
  bytes "3.1.2"
7927
7927
  http-errors "2.0.0"
@@ -8564,25 +8564,26 @@ socket.io-adapter@~2.5.2:
8564
8564
  dependencies:
8565
8565
  ws "~8.11.0"
8566
8566
 
8567
- socket.io-parser@~4.2.1:
8568
- version "4.2.3"
8569
- resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.3.tgz#926bcc6658e2ae0883dc9dee69acbdc76e4e3667"
8570
- integrity sha512-JMafRntWVO2DCJimKsRTh/wnqVvO4hrfwOqtO7f+uzwsQMuxO6VwImtYxaQ+ieoyshWOTJyV0fA21lccEXRPpQ==
8567
+ socket.io-parser@~4.2.4:
8568
+ version "4.2.4"
8569
+ resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83"
8570
+ integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==
8571
8571
  dependencies:
8572
8572
  "@socket.io/component-emitter" "~3.1.0"
8573
8573
  debug "~4.3.1"
8574
8574
 
8575
8575
  socket.io@^4.1.2:
8576
- version "4.6.1"
8577
- resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.6.1.tgz#62ec117e5fce0692fa50498da9347cfb52c3bc70"
8578
- integrity sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==
8576
+ version "4.7.5"
8577
+ resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.7.5.tgz#56eb2d976aef9d1445f373a62d781a41c7add8f8"
8578
+ integrity sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==
8579
8579
  dependencies:
8580
8580
  accepts "~1.3.4"
8581
8581
  base64id "~2.0.0"
8582
+ cors "~2.8.5"
8582
8583
  debug "~4.3.2"
8583
- engine.io "~6.4.1"
8584
+ engine.io "~6.5.2"
8584
8585
  socket.io-adapter "~2.5.2"
8585
- socket.io-parser "~4.2.1"
8586
+ socket.io-parser "~4.2.4"
8586
8587
 
8587
8588
  sort-object-keys@^1.1.3:
8588
8589
  version "1.1.3"
@@ -9698,6 +9699,11 @@ ws@~8.11.0:
9698
9699
  resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143"
9699
9700
  integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==
9700
9701
 
9702
+ ws@~8.17.1:
9703
+ version "8.17.1"
9704
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b"
9705
+ integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==
9706
+
9701
9707
  xdg-basedir@^4.0.0:
9702
9708
  version "4.0.0"
9703
9709
  resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
data/lib/logster/group.rb CHANGED
@@ -94,7 +94,6 @@ module Logster
94
94
  @timestamp = 0
95
95
  @changed = true
96
96
  end
97
- @messages
98
97
  end
99
98
 
100
99
  def changed?
@@ -13,6 +13,7 @@ module Logster
13
13
  super(nil)
14
14
  @store = store
15
15
  @chained = []
16
+ @subscribers = []
16
17
  @skip_store = false
17
18
  @logster_override_level_key = "logster_override_level_#{object_id}"
18
19
  end
@@ -29,6 +30,17 @@ module Logster
29
30
  @chained << logger
30
31
  end
31
32
 
33
+ ##
34
+ # Subscribe to log events.
35
+ #
36
+ # Example:
37
+ # logger.subscribe do |severity, message, progname, opts, &block|
38
+ # YourCustomLogger.log(severity, message, progname, opts, &block)
39
+ # end
40
+ def subscribe(&block)
41
+ @subscribers << block
42
+ end
43
+
32
44
  def add_to_chained(logger, severity, message, progname, opts = nil, &block)
33
45
  if logger.respond_to? :skip_store
34
46
  old = logger.skip_store
@@ -73,24 +85,8 @@ module Logster
73
85
  opts[:backtrace] = backtrace
74
86
  end
75
87
 
76
- if @chained
77
- i = 0
78
- # micro optimise for logging
79
- while i < @chained.length
80
- # TODO double yielding blocks
81
- begin
82
- add_to_chained(@chained[i], severity, message, progname, opts, &block)
83
- rescue => e
84
- # don't blow up if STDERR is somehow closed
85
- begin
86
- STDERR.puts "Failed to report message to chained logger #{e}"
87
- rescue StandardError
88
- nil
89
- end
90
- end
91
- i += 1
92
- end
93
- end
88
+ notify_subscribers(severity, message, progname, opts, &block)
89
+ add_to_chained_loggers(severity, message, progname, opts, &block)
94
90
 
95
91
  return if @skip_store
96
92
 
@@ -121,6 +117,52 @@ module Logster
121
117
 
122
118
  private
123
119
 
120
+ def add_to_chained_loggers(severity, message, progname, opts, &block)
121
+ chained_length = @chained.length
122
+
123
+ if chained_length > 0
124
+ i = 0
125
+ # micro optimise for logging since while loop is almost twice as fast
126
+ while i < chained_length
127
+ begin
128
+ add_to_chained(@chained[i], severity, message, progname, opts, &block)
129
+ rescue => e
130
+ # don't blow up if STDERR is somehow closed
131
+ begin
132
+ STDERR.puts "Failed to report message to chained logger: #{e.class} (#{e.message})\n#{e.backtrace.join("\n")}"
133
+ rescue StandardError
134
+ nil
135
+ end
136
+ end
137
+ i += 1
138
+ end
139
+ end
140
+ end
141
+
142
+ def notify_subscribers(severity, message, progname, opts, &block)
143
+ subscribers_length = @subscribers.length
144
+
145
+ if subscribers_length > 0
146
+ i = 0
147
+
148
+ # micro optimise for logging since while loop is almost twice as fast
149
+ while i < subscribers_length
150
+ begin
151
+ @subscribers[i].call(severity, message, progname, opts, &block)
152
+ rescue => e
153
+ # don't blow up if STDERR is somehow closed
154
+ begin
155
+ STDERR.puts "Failed to report message to subscriber: #{e.class} (#{e.message})\n#{e.backtrace.join("\n")}"
156
+ rescue StandardError
157
+ nil
158
+ end
159
+ end
160
+
161
+ i += 1
162
+ end
163
+ end
164
+ end
165
+
124
166
  def report_to_store(severity, progname, message, opts = {})
125
167
  @store.report(severity, progname, message, opts)
126
168
  end
@@ -182,7 +182,7 @@ module Logster
182
182
 
183
183
  def self.populate_env_helper(env)
184
184
  env[LOGSTER_ENV] ||= begin
185
- unless env.include? "rack.input"
185
+ if !env.include? "rack.input"
186
186
  # Not a web request
187
187
  return env
188
188
  end
@@ -7,7 +7,7 @@ module Logster::Rails
7
7
 
8
8
  class << self
9
9
  def set_logger(config)
10
- return unless Logster.config.environments.include?(Rails.env.to_sym)
10
+ return if !Logster.config.environments.include?(Rails.env.to_sym)
11
11
 
12
12
  require "logster/middleware/debug_exceptions"
13
13
  require "logster/middleware/reporter"
@@ -35,7 +35,7 @@ module Logster::Rails
35
35
  end
36
36
 
37
37
  def initialize!(app)
38
- return unless Logster.config.environments.include?(Rails.env.to_sym)
38
+ return if !Logster.config.environments.include?(Rails.env.to_sym)
39
39
  return unless logster_enabled?
40
40
 
41
41
  if Logster.config.enable_js_error_reporting
@@ -34,7 +34,7 @@ module Logster
34
34
  end
35
35
 
36
36
  def check(severity)
37
- return unless @severities.include?(severity)
37
+ return if !@severities.include?(severity)
38
38
  time = Time.now.to_i
39
39
  num = bucket_number(time)
40
40
  redis_key = "#{key}:#{num}"
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "json"
4
- require "set"
4
+ # Disable rubocop because the require is only redundant for Ruby 3.2+ but we still support Ruby 3.1
5
+ require "set" # rubocop:disable Lint/RedundantRequireStatement
5
6
  require "logster/base_store"
6
7
  require "logster/redis_rate_limiter"
7
8
 
@@ -409,12 +410,12 @@ module Logster
409
410
  if @redis.llen(list_key) > max_backlog
410
411
  removed_keys = []
411
412
  while removed_key = @redis.lpop(list_key)
412
- unless @redis.sismember(protected_key, removed_key)
413
+ if @redis.sismember(protected_key, removed_key)
414
+ removed_keys << removed_key
415
+ else
413
416
  rmsg = get(removed_key, load_env: false)
414
417
  delete(rmsg)
415
418
  break
416
- else
417
- removed_keys << removed_key
418
419
  end
419
420
  end
420
421
  removed_keys.reverse.each { |key| @redis.lpush(list_key, key) }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Logster
4
- VERSION = "2.19.1"
4
+ VERSION = "2.20.0"
5
5
  end
data/logster.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  lib = File.expand_path("../lib", __FILE__)
5
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ $LOAD_PATH.unshift(lib) if !$LOAD_PATH.include?(lib)
6
6
  require "logster/version"
7
7
 
8
8
  Gem::Specification.new do |spec|
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
37
37
  spec.add_development_dependency "guard-minitest"
38
38
  spec.add_development_dependency "timecop"
39
39
  spec.add_development_dependency "byebug", "~> 11.1.0"
40
- spec.add_development_dependency "rubocop-discourse", "~> 2.4.1"
40
+ spec.add_development_dependency "rubocop-discourse"
41
41
  spec.add_development_dependency "syntax_tree"
42
42
  spec.add_development_dependency "sqlite3"
43
43
  end
@@ -317,7 +317,7 @@ class TestViewer < Minitest::Test
317
317
  %w[/logsie/javascript/client-app.js /logsie/javascript/vendor.js].each do |path|
318
318
  response = request.get(path)
319
319
  assert_equal(200, response.status)
320
- assert_equal("application/javascript", response.headers["content-type"])
320
+ assert %w[text/javascript application/javascript].include?(response.headers["content-type"])
321
321
  end
322
322
  end
323
323
 
@@ -71,6 +71,46 @@ class TestLogger < Minitest::Test
71
71
  assert_equal "test", @store.calls.first[2]
72
72
  end
73
73
 
74
+ def test_subscribing_to_logger_events
75
+ custom_logger_klass =
76
+ Class.new do
77
+ attr_reader :events
78
+
79
+ def initialize
80
+ @events = []
81
+ end
82
+
83
+ def log(severity, message, progname, opts, &block)
84
+ @events.push({ severity:, message:, progname:, opts:, block: })
85
+ end
86
+ end
87
+
88
+ custom_logger = custom_logger_klass.new
89
+
90
+ @logger.subscribe do |severity, message, progname, opts, &block|
91
+ custom_logger.log(severity, message, progname, opts, &block)
92
+ end
93
+
94
+ @logger.add(0, "test", "prog", backtrace: "backtrace", env: { a: "x" })
95
+ @logger.add(1, nil, nil, backtrace: "backtrace") { "yielded message" }
96
+
97
+ first_event = custom_logger.events[0]
98
+
99
+ assert_equal(0, first_event[:severity])
100
+ assert_equal("test", first_event[:message])
101
+ assert_equal("prog", first_event[:progname])
102
+ assert_equal({ backtrace: "backtrace", env: { a: "x" } }, first_event[:opts])
103
+ assert_nil first_event[:block]
104
+
105
+ second_event = custom_logger.events[1]
106
+
107
+ assert_equal(1, second_event[:severity])
108
+ assert_nil second_event[:message]
109
+ assert_nil second_event[:progname]
110
+ assert_equal({ backtrace: "backtrace", env: nil }, second_event[:opts])
111
+ assert_equal("yielded message", second_event[:block].call)
112
+ end
113
+
74
114
  class NewLogger < Logster::Logger
75
115
  end
76
116
 
@@ -749,7 +749,9 @@ class TestRedisStore < Minitest::Test
749
749
  Rack::MockRequest.env_for("/test").merge(
750
750
  "HTTP_HOST" => "www.site.com",
751
751
  "HTTP_USER_AGENT" => "SOME WHERE",
752
+ "rack.input" => StringIO.new("test"),
752
753
  )
754
+
753
755
  orig = env.dup
754
756
  orig["test"] = "tests"
755
757
  orig["test1"] = "tests1"
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.19.1
4
+ version: 2.20.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: 2024-03-12 00:00:00.000000000 Z
11
+ date: 2024-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -126,16 +126,16 @@ dependencies:
126
126
  name: rubocop-discourse
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: 2.4.1
131
+ version: '0'
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.4.1
138
+ version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: syntax_tree
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -186,8 +186,8 @@ files:
186
186
  - assets/images/icon_144x144.png
187
187
  - assets/images/icon_64x64.png
188
188
  - assets/javascript/.gitkeep
189
- - assets/javascript/chunk.143.86f7820bfe6482b8dcd5.js
190
- - assets/javascript/chunk.178.c5fac0c2a2035839a91e.js
189
+ - assets/javascript/chunk.143.2f62415fa9ee8d84fb84.js
190
+ - assets/javascript/chunk.178.e362160626dc2d3791f7.js
191
191
  - assets/javascript/chunk.468.95dd450003497c781cb3.js
192
192
  - assets/javascript/chunk.916.85a3fc9d873df80f5ea5.js
193
193
  - assets/javascript/client-app.js