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:
parent
fa15b9fb8a
commit
a3f16b42cd
@ -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
|
||||
|
||||
|
||||
@ -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))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user