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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +3 -3
- data/CHANGELOG.md +5 -0
- data/assets/javascript/{chunk.143.86f7820bfe6482b8dcd5.js → chunk.143.2f62415fa9ee8d84fb84.js} +4 -4
- data/assets/javascript/{chunk.178.c5fac0c2a2035839a91e.js → chunk.178.e362160626dc2d3791f7.js} +3 -3
- data/assets/javascript/client-app.js +330 -330
- data/client-app/yarn.lock +48 -42
- data/lib/logster/group.rb +0 -1
- data/lib/logster/logger.rb +60 -18
- data/lib/logster/message.rb +1 -1
- data/lib/logster/rails/railtie.rb +2 -2
- data/lib/logster/redis_rate_limiter.rb +1 -1
- data/lib/logster/redis_store.rb +5 -4
- data/lib/logster/version.rb +1 -1
- data/logster.gemspec +2 -2
- data/test/logster/middleware/test_viewer.rb +1 -1
- data/test/logster/test_logger.rb +40 -0
- data/test/logster/test_redis_store.rb +2 -0
- metadata +8 -8
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.
|
|
2430
|
-
version "1.20.
|
|
2431
|
-
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.
|
|
2432
|
-
integrity sha512-
|
|
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.
|
|
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.
|
|
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.
|
|
3443
|
-
version "0.
|
|
3444
|
-
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.
|
|
3445
|
-
integrity sha512-
|
|
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.
|
|
4360
|
-
version "5.
|
|
4361
|
-
resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.
|
|
4362
|
-
integrity sha512-
|
|
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.
|
|
4365
|
-
version "6.
|
|
4366
|
-
resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.
|
|
4367
|
-
integrity sha512-
|
|
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.
|
|
4378
|
-
ws "~8.
|
|
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.
|
|
4839
|
-
resolved "https://registry.yarnpkg.com/express/-/express-4.
|
|
4840
|
-
integrity sha512-
|
|
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.
|
|
4844
|
+
body-parser "1.20.2"
|
|
4845
4845
|
content-disposition "0.5.4"
|
|
4846
4846
|
content-type "~1.0.4"
|
|
4847
|
-
cookie "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.
|
|
5205
|
-
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.
|
|
5206
|
-
integrity sha512-
|
|
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.
|
|
7922
|
-
version "2.5.
|
|
7923
|
-
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.
|
|
7924
|
-
integrity sha512-
|
|
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.
|
|
8568
|
-
version "4.2.
|
|
8569
|
-
resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.
|
|
8570
|
-
integrity sha512
|
|
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.
|
|
8577
|
-
resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.
|
|
8578
|
-
integrity sha512-
|
|
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.
|
|
8584
|
+
engine.io "~6.5.2"
|
|
8584
8585
|
socket.io-adapter "~2.5.2"
|
|
8585
|
-
socket.io-parser "~4.2.
|
|
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
data/lib/logster/logger.rb
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
|
-
|
|
77
|
-
|
|
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
|
data/lib/logster/message.rb
CHANGED
|
@@ -7,7 +7,7 @@ module Logster::Rails
|
|
|
7
7
|
|
|
8
8
|
class << self
|
|
9
9
|
def set_logger(config)
|
|
10
|
-
return
|
|
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
|
|
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
|
data/lib/logster/redis_store.rb
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "json"
|
|
4
|
-
require
|
|
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
|
-
|
|
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) }
|
data/lib/logster/version.rb
CHANGED
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)
|
|
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"
|
|
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
|
-
|
|
320
|
+
assert %w[text/javascript application/javascript].include?(response.headers["content-type"])
|
|
321
321
|
end
|
|
322
322
|
end
|
|
323
323
|
|
data/test/logster/test_logger.rb
CHANGED
|
@@ -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.
|
|
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-
|
|
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:
|
|
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:
|
|
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.
|
|
190
|
-
- assets/javascript/chunk.178.
|
|
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
|