class LogStash::Codecs::JsonGz

This codec will read gzip encoded json content.

Example usage:

input {

tcp { 
  port=>5004
  codec => json_gz { json_type => "auto" }
}

}

Public Instance Methods

decode(data) { |event("message" => data, "tags" => ["_jsongzparsefailure"])| ... } click to toggle source
# File lib/logstash/codecs/json_gz.rb, line 47
def decode(data, &block)
  data = decompress(StringIO.new(data), &block) 
  data = @converter.convert(data)

  if @json_type == "json" || (@json_type == "auto" && data[0] == '[')
    from_json_parse(data, &block)
  else 
    data.each_line { |l| from_json_parse(l, &block) } 
  end
  
rescue => e
  @logger.error("err: #{e}")
  yield LogStash::Event.new("message" => data, "tags" => ["_jsongzparsefailure"])
end
encode(data) click to toggle source
# File lib/logstash/codecs/json_gz.rb, line 62
def encode(data)
  raise RuntimeError.new("This codec is only used to decode gzip encoded json.")
end
register() click to toggle source
# File lib/logstash/codecs/json_gz.rb, line 42
def register
  @converter = LogStash::Util::Charset.new(@charset)
  @converter.logger = @logger
end

Private Instance Methods

decompress(data) click to toggle source
# File lib/logstash/codecs/json_gz.rb, line 75
def decompress(data)
  gz = Zlib::GzipReader.new(data)
  gz.read
rescue Zlib::Error, Zlib::GzipFile::Error => e
  @logger.error("Error decompressing gzip data: #{e}")
  raise
end
from_json_parse(json) { |event| ... } click to toggle source
# File lib/logstash/codecs/json_gz.rb, line 68
def from_json_parse(json, &block)
  LogStash::Event.from_json(json).each { |event| yield event }
rescue LogStash::Json::ParserError => e
  @logger.error("JSON parse error, original data now in message field", :error => e, :data => json)
  yield LogStash::Event.new("message" => json, "tags" => ["_jsonparsefailure"])
end