logster 2.5.0 → 2.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/assets/javascript/client-app.js +3 -3
- data/client-app/app/controllers/index.js +0 -1
- data/client-app/app/templates/index.hbs +1 -1
- data/lib/logster/group.rb +9 -9
- data/lib/logster/grouping_pattern.rb +1 -0
- data/lib/logster/message.rb +1 -0
- data/lib/logster/redis_store.rb +4 -2
- data/lib/logster/version.rb +1 -1
- data/test/logster/test_group.rb +7 -3
- data/test/logster/test_redis_store.rb +25 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fe7e01b692cb4454d249da6f9c9c1c03d5c765056e6ae6ee1a5571ddb38691c
|
4
|
+
data.tar.gz: 13ac426322e9993fb067144cf6a95fa3950602cd0d8e41c3521d8115751207e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c695dfd4d37c625fa8a51026f26cc5d1120aa370eba416828cac9bca3ea03e9412fbb8475af4b30684383ec7713f251a096e88ed9dbdfb830e80863dbef692cf
|
7
|
+
data.tar.gz: 3aa441c84018af760b9b2a7ca607a123cd27fd636cc6e29b4e8855518437f5c46417cc9513a51cd3d97dd213cfaf2c9ccbd7613931b5b80a03a60c3389b1e238
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
- 2019-12-13: 2.5.1
|
4
|
+
|
5
|
+
- DEV: Bump puma from 4.2.1 to 4.3.1 in /website (#100)
|
6
|
+
- FIX: Don't include messages that were removed from groups due to max size limit
|
7
|
+
- FIX: loadingEnv is an attribute of model
|
8
|
+
- FIX: Prevent crashing when reporting a non-string message to Logster
|
9
|
+
- UX: Group count attribute should be a long-running number of errors, not just the number of errors the group currently contains
|
10
|
+
|
3
11
|
- 2019-12-12: 2.5.0
|
4
12
|
|
5
13
|
- DEV: Update to latest version of gems
|
@@ -57,7 +57,7 @@ this.model.selectRow(e,t)},tabChangedAction:function(e){this.model.tabChanged(e)
|
|
57
57
|
confirm("Clear the logs?\n\nCancel = No, OK = Clear")&&(0,t.ajax)("/clear",{type:"POST"}).then(function(){e.model.reload()})},removeMessage:function(e){var t=this.model.currentRow.group?this.model.currentRow:null,n=this.model.rows,a=t?n.indexOf(t):n.indexOf(e)
|
58
58
|
e.destroy(),e.set("selected",!1),this.model.set("total",this.model.total-1)
|
59
59
|
var s=!1,i=0
|
60
|
-
t?(i=t.messages.indexOf(e),t.messages.removeObject(e),i=Math.min(i,t.messages.length-1),
|
60
|
+
t?(i=t.messages.indexOf(e),t.messages.removeObject(e),i=Math.min(i,t.messages.length-1),0===t.messages.length&&(n.removeObject(t),s=!0)):(n.removeObject(e),s=!0),s?a>0?this.model.selectRow(n[a-1]):this.model.total>0?this.model.selectRow(n[0]):this.model.reload():t&&this.model.selectRow(n[a],{messageIndex:i})},solveMessage:function(e){this.model.solve(e)},groupedMessageChangedAction:function(e){this.model.groupedMessageChanged(e)},envChangedAction:function(e){this.model.envChanged(e)},updateFilter:function(e){var t=this
|
61
61
|
this.toggleProperty(e)
|
62
62
|
var n=[];["Debug","Info","Warn","Err","Fatal"].forEach(function(e,a){t.get("show".concat(e))&&n.push(a)}),n.push(5),this.model.set("filter",n),this.model.reload().then(function(){return t.model.updateSelectedRow()})},updateSearch:function(e){e&&1===e.length||Ember.run.debounce(this,this.doSearch,e,250)}},doSearch:function(e){var t=this
|
63
63
|
this.model.set("search",e),this.model.reload().then(function(){return t.model.updateSelectedRow()})}})
|
@@ -207,10 +207,10 @@ var t=Ember.HTMLBars.template({id:"zCP0V00P",block:'{"symbols":["tab","&default"
|
|
207
207
|
e.default=t}),define("client-app/templates/components/time-formatter",["exports"],function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
208
208
|
var t=Ember.HTMLBars.template({id:"sp53cTcH",block:'{"symbols":[],"statements":[[1,[21,"time"],false],[0,"\\n"]],"hasEval":false}',meta:{moduleName:"client-app/templates/components/time-formatter.hbs"}})
|
209
209
|
e.default=t}),define("client-app/templates/index",["exports"],function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
210
|
-
var t=Ember.HTMLBars.template({id:"
|
210
|
+
var t=Ember.HTMLBars.template({id:"ZfZsvZU6",block:'{"symbols":["row"],"statements":[[7,"div"],[11,"id","top-panel"],[9],[0,"\\n "],[7,"div"],[11,"id","log-table"],[9],[0,"\\n"],[4,"if",[[23,["model","moreBefore"]]],null,{"statements":[[0," "],[7,"div"],[11,"class","show-more"],[9],[0,"\\n"],[4,"if",[[23,["model","hideCountInLoadMore"]]],null,{"statements":[[0," Load more\\n"]],"parameters":[]},{"statements":[[0," Select to see "],[1,[23,["model","totalBefore"]],false],[0," more\\n"]],"parameters":[]}],[0," "],[3,"action",[[22,0,[]],"showMoreBefore"]],[10],[0,"\\n"]],"parameters":[]},null],[4,"each",[[23,["model","rows"]]],null,{"statements":[[0," "],[1,[27,"message-row",null,[["model","selectRow"],[[22,1,[]],[27,"action",[[22,0,[]],"selectRowAction",[22,1,[]]],null]]]],false],[0,"\\n"]],"parameters":[1]},null],[0," "],[10],[0,"\\n"],[10],[0,"\\n"],[7,"div"],[11,"id","bottom-panel"],[12,"class",[28,[[27,"if",[[23,["model","currentRow","group"]],"group-view"],null]]]],[9],[0,"\\n"],[4,"if",[[23,["model","currentRow","group"]]],null,{"statements":[[0," "],[1,[27,"page-nav",null,[["list","position","extraClasses","navigate"],[[23,["model","currentRow","messages"]],[23,["model","currentGroupedMessagesPosition"]],"group-nav",[27,"action",[[22,0,[]],"groupedMessageChangedAction"],null]]]],false],[0,"\\n"]],"parameters":[]},null],[0," "],[1,[27,"message-info",null,[["currentMessage","loadingEnv","removeMessage","solveMessage","onTabChange","envChangedAction","currentEnvPosition","actionsInMenu"],[[23,["model","currentMessage"]],[23,["model","loadingEnv"]],[27,"action",[[22,0,[]],"removeMessage"],null],[27,"action",[[22,0,[]],"solveMessage"],null],[27,"action",[[22,0,[]],"tabChangedAction"],null],[27,"action",[[22,0,[]],"envChangedAction"],null],[23,["model","currentEnvPosition"]],[23,["actionsInMenu"]]]]],false],[0,"\\n\\n "],[7,"div"],[11,"class","action-panel"],[9],[0,"\\n "],[7,"div"],[11,"class","severity-filters"],[9],[0,"\\n "],[7,"div"],[11,"class","more-wrapping"],[9],[0,"\\n "],[7,"label"],[11,"class","debug"],[9],[0,"\\n "],[7,"input"],[12,"checked",[21,"showDebug"]],[12,"onchange",[27,"action",[[22,0,[]],[27,"action",[[22,0,[]],"updateFilter","showDebug"],null]],null]],[11,"type","checkbox"],[9],[10],[0,"\\n "],[7,"span"],[9],[0,"Debug"],[10],[0,"\\n "],[10],[0,"\\n "],[7,"label"],[11,"class","info"],[9],[0,"\\n "],[7,"input"],[12,"checked",[21,"showInfo"]],[12,"onchange",[27,"action",[[22,0,[]],[27,"action",[[22,0,[]],"updateFilter","showInfo"],null]],null]],[11,"type","checkbox"],[9],[10],[0,"\\n "],[7,"span"],[9],[0,"Info"],[10],[0,"\\n "],[10],[0,"\\n "],[7,"label"],[11,"class","warn"],[9],[0,"\\n "],[7,"input"],[12,"checked",[21,"showWarn"]],[12,"onchange",[27,"action",[[22,0,[]],[27,"action",[[22,0,[]],"updateFilter","showWarn"],null]],null]],[11,"type","checkbox"],[9],[10],[0,"\\n "],[7,"i"],[11,"class","fa fa-exclamation-circle warning"],[9],[10],[0,"\\n "],[7,"span"],[9],[0,"Warning"],[10],[0,"\\n "],[10],[0,"\\n "],[7,"label"],[11,"class","error"],[9],[0,"\\n "],[7,"input"],[12,"checked",[21,"showErr"]],[12,"onchange",[27,"action",[[22,0,[]],[27,"action",[[22,0,[]],"updateFilter","showErr"],null]],null]],[11,"type","checkbox"],[9],[10],[0,"\\n "],[7,"i"],[11,"class","fa fa-times-circle error"],[9],[10],[0,"\\n "],[7,"span"],[9],[0,"Error"],[10],[0,"\\n "],[10],[0,"\\n "],[7,"label"],[11,"class","fatal"],[9],[0,"\\n "],[7,"input"],[12,"checked",[21,"showFatal"]],[12,"onchange",[27,"action",[[22,0,[]],[27,"action",[[22,0,[]],"updateFilter","showFatal"],null]],null]],[11,"type","checkbox"],[9],[10],[0,"\\n "],[7,"i"],[11,"class","fa fa-times-circle fatal"],[9],[10],[0,"\\n "],[7,"span"],[9],[0,"Fatal"],[10],[0,"\\n "],[10],[0,"\\n "],[10],[0,"\\n "],[10],[0,"\\n "],[7,"div"],[11,"class","search-clear-all"],[9],[0,"\\n "],[7,"input"],[11,"class","search"],[11,"placeholder","Search"],[12,"onkeyup",[27,"action",[[22,0,[]],"updateSearch"],[["value"],["target.value"]]]],[11,"type","text"],[9],[10],[0,"\\n "],[7,"div"],[11,"class","footer-btns"],[9],[0,"\\n"],[4,"if",[[23,["showSettings"]]],null,{"statements":[[4,"link-to",["settings"],[["class"],["settings btn no-text"]],{"statements":[[0," "],[7,"i"],[11,"class","fa fa-cog"],[9],[10],[0,"\\n"]],"parameters":[]},null]],"parameters":[]},null],[0," "],[7,"button"],[11,"class","clear btn danger"],[9],[7,"i"],[11,"class","fa fa-trash-o"],[9],[10],[7,"span"],[9],[0,"Clear logs"],[10],[3,"action",[[22,0,[]],"clear"]],[10],[0,"\\n "],[10],[0,"\\n "],[10],[0,"\\n "],[10],[0,"\\n"],[10],[0,"\\n"],[1,[21,"panel-resizer"],false],[0,"\\n"]],"hasEval":false}',meta:{moduleName:"client-app/templates/index.hbs"}})
|
211
211
|
e.default=t}),define("client-app/templates/settings",["exports"],function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
212
212
|
var t=Ember.HTMLBars.template({id:"VCEsnuWV",block:'{"symbols":[],"statements":[[7,"div"],[11,"class","settings-page"],[9],[0,"\\n "],[4,"link-to",["index"],null,{"statements":[[0,"Home"]],"parameters":[]},null],[0,"\\n "],[7,"div"],[11,"class","settings-header"],[9],[0,"\\n "],[7,"h1"],[11,"class","header-title"],[9],[0,"Settings"],[10],[0,"\\n "],[7,"img"],[11,"class","header-logo"],[12,"src",[27,"logster-url",["images/icon_144x144.png"],null]],[9],[10],[0,"\\n "],[10],[0,"\\n\\n "],[7,"div"],[11,"class","settings-section suppression-patterns"],[9],[0,"\\n "],[7,"h2"],[11,"class","section-title"],[9],[0,"Suppression Patterns"],[10],[0,"\\n "],[7,"div"],[9],[0,"New messages that match these Regular Expression patterns will be suppressed. Checking Apply retroactively will remove all existing messages that match the patterns."],[10],[0,"\\n\\n"],[4,"if",[[23,["showCodedSuppression"]]],null,{"statements":[[0," "],[7,"h3"],[11,"class","subsection-title"],[9],[0,"Hard-coded patterns:"],[10],[0,"\\n "],[7,"div"],[11,"class","tip"],[9],[0,"These patterns can\'t be removed via the UI because they are commited to the source code of your app."],[10],[0,"\\n "],[1,[27,"patterns-list",null,[["patterns","mutable"],[[23,["codedSuppression"]],false]]],false],[0,"\\n"]],"parameters":[]},null],[0,"\\n "],[7,"h3"],[11,"class","subsection-title"],[9],[0,"Custom patterns:"],[10],[0,"\\n "],[1,[27,"patterns-list",null,[["patterns","key","applyRetroactivelyCheckbox","mutable"],[[23,["customSuppression"]],"suppression",true,true]]],false],[0,"\\n "],[10],[0,"\\n "],[7,"div"],[11,"class","settings-section grouping-patterns"],[9],[0,"\\n "],[7,"h2"],[11,"class","section-title"],[9],[0,"Grouping Patterns"],[10],[0,"\\n "],[7,"div"],[9],[0,"Add a Regular Expression pattern to group all new and existing messages into a single row when viewing the logs."],[10],[0,"\\n\\n "],[1,[27,"patterns-list",null,[["patterns","key","mutable"],[[23,["grouping"]],"grouping",true]]],false],[0,"\\n "],[10],[0,"\\n"],[10],[0,"\\n"]],"hasEval":false}',meta:{moduleName:"client-app/templates/settings.hbs"}})
|
213
213
|
e.default=t}),define("client-app/templates/show",["exports"],function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
214
214
|
var t=Ember.HTMLBars.template({id:"Z9BtSx7U",block:'{"symbols":[],"statements":[[4,"link-to",["index"],null,{"statements":[[0,"Recent"]],"parameters":[]},null],[0,"\\n"],[7,"div"],[11,"id","bottom-panel"],[11,"class","full"],[9],[0,"\\n "],[1,[27,"message-info",null,[["currentMessage","showTitle","envChangedAction","currentEnvPosition","actionsInMenu"],[[23,["model"]],"true",[27,"action",[[22,0,[]],"envChanged"],null],[23,["envPosition"]],false]]],false],[0,"\\n"],[10],[0,"\\n"]],"hasEval":false}',meta:{moduleName:"client-app/templates/show.hbs"}})
|
215
215
|
e.default=t}),define("client-app/config/environment",[],function(){try{var e="client-app/config/environment",t=document.querySelector('meta[name="'+e+'"]').getAttribute("content"),n={default:JSON.parse(decodeURIComponent(t))}
|
216
|
-
return Object.defineProperty(n,"__esModule",{value:!0}),n}catch(a){throw new Error('Could not read config from meta tag with name "'+e+'".')}}),runningTests||require("client-app/app").default.create({name:"client-app",version:"0.0.0+
|
216
|
+
return Object.defineProperty(n,"__esModule",{value:!0}),n}catch(a){throw new Error('Could not read config from meta tag with name "'+e+'".')}}),runningTests||require("client-app/app").default.create({name:"client-app",version:"0.0.0+43e54768"})
|
@@ -70,7 +70,6 @@ export default Controller.extend({
|
|
70
70
|
messageIndex = group.messages.indexOf(msg);
|
71
71
|
group.messages.removeObject(msg);
|
72
72
|
messageIndex = Math.min(messageIndex, group.messages.length - 1);
|
73
|
-
group.decrementProperty("count");
|
74
73
|
if (group.messages.length === 0) {
|
75
74
|
rows.removeObject(group);
|
76
75
|
removedRow = true;
|
data/lib/logster/group.rb
CHANGED
@@ -5,12 +5,13 @@ module Logster
|
|
5
5
|
MAX_SIZE = 100
|
6
6
|
|
7
7
|
attr_reader :key, :messages_keys, :timestamp, :messages
|
8
|
-
attr_accessor :changed
|
8
|
+
attr_accessor :changed, :pattern, :count
|
9
9
|
|
10
|
-
def initialize(key, messages_keys = [], timestamp: 0)
|
10
|
+
def initialize(key, messages_keys = [], timestamp: 0, count: 0)
|
11
11
|
@key = key
|
12
12
|
@messages_keys = messages_keys || []
|
13
13
|
@timestamp = timestamp
|
14
|
+
@count = count
|
14
15
|
@changed = true
|
15
16
|
end
|
16
17
|
|
@@ -19,7 +20,8 @@ module Logster
|
|
19
20
|
group = new(
|
20
21
|
hash["key"],
|
21
22
|
hash["messages_keys"],
|
22
|
-
timestamp: hash["timestamp"] || 0
|
23
|
+
timestamp: hash["timestamp"] || 0,
|
24
|
+
count: hash["count"] || 0
|
23
25
|
)
|
24
26
|
group.changed = false
|
25
27
|
group
|
@@ -33,14 +35,15 @@ module Logster
|
|
33
35
|
{
|
34
36
|
key: @key,
|
35
37
|
messages_keys: @messages_keys,
|
36
|
-
timestamp: @timestamp
|
38
|
+
timestamp: @timestamp,
|
39
|
+
count: @count
|
37
40
|
}
|
38
41
|
end
|
39
42
|
|
40
43
|
def to_h_web
|
41
44
|
{
|
42
45
|
regex: @key,
|
43
|
-
count:
|
46
|
+
count: @count,
|
44
47
|
timestamp: @timestamp,
|
45
48
|
messages: @messages,
|
46
49
|
severity: -1,
|
@@ -55,6 +58,7 @@ module Logster
|
|
55
58
|
def add_message(message)
|
56
59
|
if !@messages_keys.include?(message.key)
|
57
60
|
@messages_keys.unshift(message.key)
|
61
|
+
@count += 1
|
58
62
|
@changed = true
|
59
63
|
end
|
60
64
|
if @timestamp < message.timestamp
|
@@ -101,10 +105,6 @@ module Logster
|
|
101
105
|
@changed
|
102
106
|
end
|
103
107
|
|
104
|
-
def count
|
105
|
-
@messages_keys.size
|
106
|
-
end
|
107
|
-
|
108
108
|
private
|
109
109
|
|
110
110
|
def max_size
|
@@ -16,6 +16,7 @@ module Logster
|
|
16
16
|
m.message =~ self.pattern && existing_groups.none? { |g| g.messages_keys.include?(m.key) }
|
17
17
|
end
|
18
18
|
group.messages = messages
|
19
|
+
group.count = messages.size
|
19
20
|
@store.save_pattern_group(group) if group.changed?
|
20
21
|
@store.clear_patterns_cache(CACHE_KEY)
|
21
22
|
end
|
data/lib/logster/message.rb
CHANGED
data/lib/logster/redis_store.rb
CHANGED
@@ -134,11 +134,12 @@ module Logster
|
|
134
134
|
|
135
135
|
row = filter_search(row, search)
|
136
136
|
if row
|
137
|
+
matches_pattern = pattern_groups.any? { |g| row.message =~ g.pattern }
|
137
138
|
group = pattern_groups.find { |g| g.messages_keys.include?(row.key) }
|
138
139
|
if group && !known_groups.include?(group.key)
|
139
140
|
known_groups << group.key
|
140
141
|
temp << serialize_group(group, row.key)
|
141
|
-
elsif !
|
142
|
+
elsif !matches_pattern
|
142
143
|
temp << row
|
143
144
|
end
|
144
145
|
end
|
@@ -350,6 +351,7 @@ module Logster
|
|
350
351
|
jsons.map! do |json|
|
351
352
|
if json && json.size > 0
|
352
353
|
group = Logster::Group.from_json(json)
|
354
|
+
group.pattern = patterns[mapped.index(group.key)]
|
353
355
|
if load_messages
|
354
356
|
group.messages = bulk_get(group.messages_keys, with_env: false)
|
355
357
|
end
|
@@ -361,7 +363,7 @@ module Logster
|
|
361
363
|
end
|
362
364
|
|
363
365
|
def save_pattern_group(group)
|
364
|
-
if group.
|
366
|
+
if group.messages_keys.size == 0
|
365
367
|
@redis.hdel(pattern_groups_key, group.key)
|
366
368
|
else
|
367
369
|
@redis.hset(pattern_groups_key, group.key, group.to_json)
|
data/lib/logster/version.rb
CHANGED
data/test/logster/test_group.rb
CHANGED
@@ -14,7 +14,8 @@ class TestGroup < MiniTest::Test
|
|
14
14
|
json = JSON.generate(
|
15
15
|
key: '/somekey/',
|
16
16
|
messages_keys: [111, 222, 333].map(&:to_s),
|
17
|
-
timestamp: time
|
17
|
+
timestamp: time,
|
18
|
+
count: 3
|
18
19
|
)
|
19
20
|
group = Logster::Group.from_json(json)
|
20
21
|
refute group.changed?
|
@@ -49,6 +50,7 @@ class TestGroup < MiniTest::Test
|
|
49
50
|
]
|
50
51
|
messages << messages[0]
|
51
52
|
group.messages = messages
|
53
|
+
group.count = 4
|
52
54
|
assert_equal 4, group.count
|
53
55
|
assert_equal 74, group.timestamp
|
54
56
|
expected = messages.uniq(&:key).sort_by(&:timestamp).map(&:key).reverse
|
@@ -67,13 +69,15 @@ class TestGroup < MiniTest::Test
|
|
67
69
|
get_message(390)
|
68
70
|
]
|
69
71
|
messages.each { |m| group.add_message(m) }
|
70
|
-
|
72
|
+
# the count attr keeps track of the number of messages
|
73
|
+
# that has ever been added to the group.
|
74
|
+
# It should never decrease
|
75
|
+
assert_equal 6, group.count
|
71
76
|
assert_equal 390, group.timestamp
|
72
77
|
refute_includes group.messages_keys, messages.find { |m| m.timestamp == 10 }.key
|
73
78
|
|
74
79
|
group = get_group
|
75
80
|
group.messages = messages
|
76
|
-
assert_equal 5, group.count
|
77
81
|
assert_equal 390, group.timestamp
|
78
82
|
refute_includes group.messages.map(&:timestamp), 5
|
79
83
|
ensure
|
@@ -938,7 +938,8 @@ class TestRedisStore < Minitest::Test
|
|
938
938
|
end
|
939
939
|
groups = @store.find_pattern_groups
|
940
940
|
assert_equal 1, groups.size
|
941
|
-
assert_equal 4, groups[0].
|
941
|
+
assert_equal 4, groups[0].messages_keys.size
|
942
|
+
assert_equal 5, groups[0].count
|
942
943
|
assert_equal keys[1..-1].reverse, groups[0].messages_keys
|
943
944
|
ensure
|
944
945
|
@store.max_backlog = prev_max_backlog
|
@@ -965,12 +966,35 @@ class TestRedisStore < Minitest::Test
|
|
965
966
|
def test_adding_grouping_pattern_doesnt_add_a_message_to_more_than_one_group
|
966
967
|
Logster.config.enable_custom_patterns_via_ui = true
|
967
968
|
@store.report(Logger::WARN, '', 'trim this plz')
|
969
|
+
@store.report(Logger::WARN, '', 'trim this plz 2')
|
968
970
|
Logster::GroupingPattern.new(/trim/, store: @store).save
|
969
971
|
Logster::GroupingPattern.new(/this/, store: @store).save
|
970
972
|
groups = @store.find_pattern_groups
|
971
973
|
assert_equal 1, groups.size
|
974
|
+
assert_equal 2, groups[0].count
|
975
|
+
ensure
|
976
|
+
Logster.config.enable_custom_patterns_via_ui = false
|
977
|
+
end
|
978
|
+
|
979
|
+
def test_latest_doesnt_include_rows_that_are_removed_from_grouping_patterns_due_to_max_size
|
980
|
+
Logster.config.enable_custom_patterns_via_ui = true
|
981
|
+
Logster::Group.instance_variable_set(:@max_size, 5)
|
982
|
+
msg1 = @store.report(Logger::WARN, '', 'first message')
|
983
|
+
msg2 = @store.report(Logger::WARN, '', 'second message')
|
984
|
+
Logster::GroupingPattern.new(/noisy/, store: @store).save
|
985
|
+
|
986
|
+
grouped = []
|
987
|
+
7.times do |n|
|
988
|
+
grouped << @store.report(Logger::WARN, '', "noisy message #{n}", timestamp: n).key
|
989
|
+
end
|
990
|
+
msg3 = @store.report(Logger::WARN, '', 'third message')
|
991
|
+
results = @store.latest
|
992
|
+
|
993
|
+
assert_equal [msg1.key, msg2.key, '/noisy/', msg3.key], results.map(&:key)
|
994
|
+
assert_equal grouped.reverse.first(5), results[2].messages.map(&:key)
|
972
995
|
ensure
|
973
996
|
Logster.config.enable_custom_patterns_via_ui = false
|
997
|
+
Logster::Group.remove_instance_variable(:@max_size)
|
974
998
|
end
|
975
999
|
|
976
1000
|
private
|
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.5.
|
4
|
+
version: 2.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- UI for viewing logs in Rack
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-12-
|
11
|
+
date: 2019-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|