From 8d6873ecbadd57e8dafd0f53c5a676a527dce5e2 Mon Sep 17 00:00:00 2001 From: Jon Philpott Date: Tue, 8 Nov 2022 15:24:56 -0700 Subject: [PATCH] add ability to prefix log lines with a.. prefix. --- lib/logstasher.rb | 3 ++- lib/logstasher/railtie.rb | 2 ++ spec/lib/logstasher/logstasher_spec.rb | 13 +++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/logstasher.rb b/lib/logstasher.rb index 26da3a5..15522a9 100644 --- a/lib/logstasher.rb +++ b/lib/logstasher.rb @@ -9,6 +9,7 @@ class << self attr_writer :serialize_parameters attr_writer :silence_standard_logging attr_accessor :metadata + attr_accessor :prefix def append_fields(&block) @append_fields_callback = block @@ -57,7 +58,7 @@ def log_as_json(payload, as_logstash_event: false) payload.to_json end - logger << json_payload + $INPUT_RECORD_SEPARATOR + logger << (prefix.nil? ? "" : prefix) + json_payload + $INPUT_RECORD_SEPARATOR end def logger diff --git a/lib/logstasher/railtie.rb b/lib/logstasher/railtie.rb index de48d86..1489018 100644 --- a/lib/logstasher/railtie.rb +++ b/lib/logstasher/railtie.rb @@ -10,6 +10,7 @@ class Railtie < ::Rails::Railtie config.logstasher.log_level = ::Logger::INFO config.logstasher.metadata = {} + config.logstasher.prefix = "" config.before_initialize do options = config.logstasher @@ -20,6 +21,7 @@ class Railtie < ::Rails::Railtie ::LogStasher.logger = options.logger || default_logger ::LogStasher.logger.level = options.log_level ::LogStasher.metadata = options.metadata + ::LogStasher.prefix = options.prefix end initializer 'logstasher.load' do diff --git a/spec/lib/logstasher/logstasher_spec.rb b/spec/lib/logstasher/logstasher_spec.rb index fb6dfff..1dbdb7e 100644 --- a/spec/lib/logstasher/logstasher_spec.rb +++ b/spec/lib/logstasher/logstasher_spec.rb @@ -24,6 +24,19 @@ end end + context "with prefix" do + before { ::LogStasher.prefix = "LOGSTASHER " } + after { ::LogStasher.prefix = nil } + + it "appends a prefix to log lines." do + expect(::LogStasher.logger).to receive(:<<) do |line| + expect(line).to match(/^LOGSTASHER /) + end + + ::LogStasher.log_as_json(:yolo => :brolo) + end + end + context "with metadata" do before { ::LogStasher.metadata = { :namespace => :cooldude } } after { ::LogStasher.metadata = {} }