def write_queue
@queue.each do |service, q|
last_sv = nil
last_m = nil
last_count = 0
next unless log = @logs[service]
lf = log.logfile
cull = log.cull
levels = log.levels
q.each do |m|
next unless levels.has_key?(m[1])
if cull
if m.last == last_m and m[0..1] == last_sv
last_count += 1
next
elsif last_count > 0
lf.write_nonblock "#{@now}|#{last_sv.join(-"|")}|Last message repeated #{last_count} times\n"
last_sv = last_m = nil
last_count = 0
end
lf.write_nonblock "#{@now}|#{m.join(-"|")}\n"
last_m = m.last
last_sv = m[0..1]
else
lf.write_nonblock "#{@now}|#{m.join(-"|")}\n"
end
@wcount += 1
end
lf.write_nonblock "#{@now}|#{last_sv.join(-"|")}|Last message repeated #{last_count} times\n" if cull and last_count > 0
end
@queue.each {|service,q| q.clear}
end