Class: LogStash::Util::Charset
- Inherits:
-
Object
- Object
- LogStash::Util::Charset
- Defined in:
- lib/logstash/util/charset.rb
Instance Attribute Summary collapse
-
#logger ⇒ Object
Returns the value of attribute logger.
Instance Method Summary collapse
- #convert(data) ⇒ Object
-
#initialize(charset) ⇒ Charset
constructor
A new instance of Charset.
Constructor Details
#initialize(charset) ⇒ Charset
Returns a new instance of Charset.
8 9 10 11 |
# File 'lib/logstash/util/charset.rb', line 8 def initialize(charset) @charset = charset @charset_encoding = Encoding.find(charset) end |
Instance Attribute Details
#logger ⇒ Object
Returns the value of attribute logger.
6 7 8 |
# File 'lib/logstash/util/charset.rb', line 6 def logger @logger end |
Instance Method Details
#convert(data) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/logstash/util/charset.rb', line 13 def convert(data) data.force_encoding(@charset_encoding) # NON UTF-8 charset declared. # Let's convert it (as cleanly as possible) into UTF-8 so we can use it with JSON, etc. return data.encode(Encoding::UTF_8, :invalid => :replace, :undef => :replace) unless @charset_encoding == Encoding::UTF_8 # UTF-8 charset declared. # Some users don't know the charset of their logs or just don't know they # can set the charset setting. unless data.valid_encoding? # A silly hack to help convert some of the unknown bytes to # somewhat-readable escape codes. The [1..-2] is to trim the quotes # ruby puts on the value. return data.inspect[1..-2].tap do |escaped| @logger.warn("Received an event that has a different character encoding than you configured.", :text => escaped, :expected_charset => @charset) end end return data end |