class Fluent::Plugin::NaisLogformatFilter

Public Instance Methods

configure(conf) click to toggle source
Calls superclass method
# File lib/fluent/plugin/filter_nais_logformat.rb, line 11
def configure(conf)
  super
end
filter(tag, time, record) click to toggle source
# File lib/fluent/plugin/filter_nais_logformat.rb, line 15
def filter(tag, time, record)
  r = nil
  formats = @logformat
  if record['kubernetes'].is_a?(Hash) && record['kubernetes']['annotations'].is_a?(Hash)
    formats = record['kubernetes']['annotations']['nais_io/logformat']
  end
  unless formats.nil? || formats == ""
    formats.split(',').each {|fmt|
      if fmt == 'accesslog'
        r = ::Nais::Log::Parser.parse_accesslog(record[@field])
        unless r.nil?
          r = r[0]
          r[@field] = r.delete('request')
          level = ::Nais::Log::Parser.loglevel_from_http_response(r['response_code'])
          r['level'] = level unless level.nil?
        end
      elsif fmt == 'accesslog_with_processing_time'
        r = ::Nais::Log::Parser.parse_accesslog_with_processing_time(record[@field])
        unless r.nil?
          r[@field] = r.delete('request')
          level = ::Nais::Log::Parser.loglevel_from_http_response(r['response_code'])
          r['level'] = level unless level.nil?
        end
      elsif fmt == 'accesslog_with_referer_useragent'
        r = ::Nais::Log::Parser.parse_accesslog_with_referer_useragent(record[@field])
        unless r.nil?
          r[@field] = r.delete('request')
          level = ::Nais::Log::Parser.loglevel_from_http_response(r['response_code'])
          r['level'] = level unless level.nil?
        end
      elsif fmt == 'capnslog'
        r = ::Nais::Log::Parser.parse_capnslog(record[@field])
        unless r.nil?
          r[@field] = r.delete('message')
        end
      elsif fmt == 'logrus'
        r = ::Nais::Log::Parser.parse_logrus(record[@field])
        unless r.nil?
          r[@field] = r.delete('msg')
        end
      elsif fmt == 'gokit'
        r = ::Nais::Log::Parser.parse_gokit(record[@field])
        unless r.nil?
          r['msg'] = r['err'] if r.has_key?('err') && !r.has_key?('msg')
          r[@field] = r.delete('msg')
        end
      elsif fmt == 'rook'
        r = ::Nais::Log::Parser.parse_rook(record[@field])
        unless r.nil?
          r[@field] = r.delete('message')
        end
      elsif fmt == 'redis'
        r = ::Nais::Log::Parser.parse_redis(record[@field])
        unless r.nil?
          r[@field] = r.delete('message')
        end
      elsif fmt == 'coredns'
        r = ::Nais::Log::Parser.parse_coredns(record[@field])
        unless r.nil?
          r[@field] = r.delete('message')
        end
      elsif fmt == 'simple'
        r = ::Nais::Log::Parser.parse_simple(record[@field])
        unless r.nil?
          r[@field] = r.delete('message')
        end
      elsif fmt == 'glog'
        r = ::Nais::Log::Parser.parse_glog(record[@field])
        unless r.nil?
          r['source'] = r['file']+':'+r.delete('line')
          r['component'] = r.delete('file')
          r[@field] = r.delete('message')
        end
      elsif fmt == 'influxdb'
        r = ::Nais::Log::Parser.parse_influxdb(record[@field])
        unless r.nil?
          r[@field] = r.delete('message')
          if r['component'] == 'httpd'
            level = ::Nais::Log::Parser.loglevel_from_http_response(r['response_code'])
            r['level'] = level unless level.nil?
          end
        end
      elsif fmt == 'log15'
        ::Nais::Log::Parser.remap_log15(record)
      end
      break unless r.nil?
    }
  end
  if r.nil?
    record
  else
    record.merge(r)
  end
end