Sha256: 8f4ad4f9d3a7b8a393e71658eefb78f74d1346d33198736b5e28f44f5bafa9a1

Contents?: true

Size: 1.25 KB

Versions: 4

Compression:

Stored size: 1.25 KB

Contents

# encoding: utf-8
require "i18n"
require "logstash/filters/base"
require "logstash/namespace"


# The i18n filter allows you to remove special characters
# from a field
class LogStash::Filters::I18n < LogStash::Filters::Base
  config_name "i18n"
  milestone 0

  # Replaces non-ASCII characters with an ASCII approximation, or
  # if none exists, a replacement character which defaults to `?`
  #
  # Example:
  # [source,ruby]
  #     filter {
  #       i18n {
  #          transliterate => ["field1", "field2"]
  #       }
  #     }
  config :transliterate, :validate => :array

  public
  def register
  end # def register

  public
  def filter(event)

    transliterate(event) if @transliterate

    filter_matched(event)
  end # def filter

  private
  def transliterate(event)
    @transliterate.each do |field|
      value = event.get(field)
      if value.is_a?(Array)
        event.set(field, value.map { |v| I18n.transliterate(v).encode('UTF-8') })
      elsif value.is_a?(String)
        event.set(field, I18n.transliterate(value.encode('UTF-8')))
      else
        @logger.debug("Can't transliterate something that isn't a string",
                      :field => field, :value => value)
      end
    end
  end # def transliterate

end # class LogStash::Filters::I18n

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
logstash-filter-i18n-3.0.3-java lib/logstash/filters/i18n.rb
logstash-filter-i18n-3.0.2-java lib/logstash/filters/i18n.rb
logstash-filter-i18n-3.0.1-java lib/logstash/filters/i18n.rb
logstash-filter-i18n-3.0.0-java lib/logstash/filters/i18n.rb