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