logster 2.5.0 → 2.5.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.
- 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
|