Sha256: d8b3adfff38ec80dbfd2fd6cebcaa3cc25523d53be5b9ac60dadb5eeacd8d215

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

require 'fluent_plugin_filter_parse_postfix/version'
require 'postfix_status_line'
require 'time'

module Fluent
  class ParsePostfixFilter < Filter
    Plugin.register_filter('parse_postfix', self)

    config_param :key,          :string, :default => 'message'
    config_param :mask,         :bool,   :default => true
    config_param :use_log_time, :bool,   :default => false

    def filter_stream(tag, es)
      result_es = Fluent::MultiEventStream.new

      es.each do |time, record|
        parse_postfix(time, record, result_es)
      end

      result_es
    rescue => e
      log.warn e.message
      log.warn e.backtrace.join(', ')
    end

    private

    def parse_postfix(time, record, result_es)
      line = record[@key]
      return unless line

      parsed = PostfixStatusLine.parse(line, @mask)

      unless parsed
        log.warn "Could not parse a postfix log: #{line}"
        return
      end

      if @use_log_time and parsed['time']
        time = Time.parse(parsed['time']).to_i
      end

      result_es.add(time, parsed)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fluent-plugin-filter-parse-postfix-0.1.5 lib/fluent/plugin/filter_parse_postfix.rb