1
0
mirror of https://github.com/meineerde/rackstash.git synced 2026-02-01 01:37:12 +00:00

Add attribute reader for tagged fields to Encoder::Message

This commit is contained in:
Holger Just 2018-07-18 12:33:10 +02:00
parent fa15b9fb8a
commit a3f16b42cd
2 changed files with 14 additions and 3 deletions

View File

@ -10,6 +10,7 @@ require 'time'
require 'rackstash/encoder'
require 'rackstash/encoder/helper/message'
require 'rackstash/helpers/utf8'
module Rackstash
module Encoder
@ -33,13 +34,16 @@ module Rackstash
# encoder.encode(event)
# # Logs "[foo,123] [127.0.0.1] Hello\n[foo,123] [127.0.0.1] World\n"
class Message
include Rackstash::Helpers::UTF8
include Rackstash::Encoder::Helper::Message
include Rackstash::Encoder::Helper::Timestamp
attr_reader :tagged
# @param tagged [Array<#to_s>] An array of field names whose values are
# added in front of each message line on {#encode}
def initialize(tagged: [])
@tagged_fields = Array(tagged).map(&:to_s)
@tagged = Array(tagged).map { |tag| utf8_encode(tag) }.freeze
end
# Return the formatted message of the given event.
@ -52,7 +56,7 @@ module Rackstash
message = normalized_message(message)
unless message.empty?
tags = @tagged_fields.map { |key| format_tag event[key] }.join
tags = @tagged.map { |key| format_tag event[key] }.join
message = message.gsub(/^/) { tags } unless tags.empty?
end

View File

@ -30,9 +30,16 @@ RSpec.describe Rackstash::Encoder::Message do
expect(encoder.encode(event)).to eql ''
end
context 'with prefix_fields' do
context 'with tagged fields' do
let(:tagged) { [:sym, 'field', 'tags'] }
it 'returns field names' do
expect(encoder.tagged)
.to be_frozen
.and all(be_instance_of String)
.and all(be_frozen)
end
it 'adds fields to all lines' do
event = { 'message' => ["line1\t\n", "line2\nline3\n\t\n"], 'field' => 'BXC' }
expect(encoder.encode(event))