lib/semantic_logger/formatters/fluentd.rb



require "json"

module SemanticLogger
  module Formatters
    # Fluentd is similar to SemanticLogger::Formatters::Json but with log levels that are recognized
    # by kubernetes fluentd.
    class Fluentd < Json
      attr_reader :need_process_info

      def initialize(time_format: :rfc_3339, time_key: :time, need_process_info: false, **args)
        @need_process_info = need_process_info
        super(time_format: time_format, time_key: time_key, **args)
      end

      def level
        hash["severity"]       = log.level
        hash["severity_index"] = log.level_index
      end

      def process_info
        # Ignore fields: pid, thread, file and line by default
        super if need_process_info
      end
    end
  end
end