mirror of
https://github.com/meineerde/rackstash.git
synced 2026-01-31 17:27:13 +00:00
Refactor truncate_message filter
We extract some internal emthods to make the truncation flow clearer, i.e. first we run the selectors, then we truncate the message, then we insert the ellipsis message (if required).
This commit is contained in:
parent
1671b04dfb
commit
3fabe95013
@ -97,36 +97,54 @@ module Rackstash
|
||||
end
|
||||
return event if messages.size <= 1
|
||||
|
||||
truncate(messages)
|
||||
|
||||
event
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def truncate(messages)
|
||||
overall_size = overall_size_of(messages)
|
||||
ellipsis = nil
|
||||
|
||||
until overall_size <= @max_size || messages.size <= 1
|
||||
case @cut
|
||||
when :top
|
||||
msg = messages.shift
|
||||
when :middle
|
||||
msg = messages.delete_at(messages.size / 2)
|
||||
when :bottom
|
||||
msg = messages.pop
|
||||
end
|
||||
msg =
|
||||
case @cut
|
||||
when :top
|
||||
messages.shift
|
||||
when :middle
|
||||
messages.delete_at(messages.size / 2)
|
||||
when :bottom
|
||||
messages.pop
|
||||
end
|
||||
|
||||
overall_size -= msg.size
|
||||
|
||||
unless ellipsis || @ellipsis.nil?
|
||||
ellipsis = Rackstash::Message.new(@ellipsis)
|
||||
overall_size += ellipsis.size
|
||||
end
|
||||
end
|
||||
|
||||
if ellipsis
|
||||
case @cut
|
||||
when :top then messages.unshift(ellipsis)
|
||||
when :middle then messages.insert((messages.size + 1) / 2, ellipsis)
|
||||
when :bottom then messages.push(ellipsis)
|
||||
end
|
||||
end
|
||||
# Insert the ellipsis message if we have truncated any messages
|
||||
insert_into(messages, ellipsis) if ellipsis
|
||||
|
||||
event
|
||||
messages
|
||||
end
|
||||
|
||||
private
|
||||
def insert_into(messages, msg)
|
||||
case @cut
|
||||
when :top
|
||||
messages.unshift(msg)
|
||||
when :middle
|
||||
messages.insert((messages.size + 1) / 2, msg)
|
||||
when :bottom
|
||||
messages.push(msg)
|
||||
end
|
||||
|
||||
messages
|
||||
end
|
||||
|
||||
def overall_size_of(messages)
|
||||
messages.inject(0) { |sum, msg| sum + msg.size }
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user