class Fluent::DockerFormatOutput
Public Instance Methods
configure(conf)
click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_docker_format.rb, line 10 def configure(conf) super @id_to_name = {} end
emit(tag, es, chain)
click to toggle source
# File lib/fluent/plugin/out_docker_format.rb, line 15 def emit(tag, es, chain) es.each do |time,record| Engine.emit(interpolate_tag(tag), time, format_record(tag, record)) end chain.next end
Private Instance Methods
format_record(tag, record)
click to toggle source
# File lib/fluent/plugin/out_docker_format.rb, line 54 def format_record(tag, record) id = interpolate(tag, @container_id) record['container_id'] = id record['container_name'] = get_name(id) || "<unknown>" record end
get_name(id)
click to toggle source
# File lib/fluent/plugin/out_docker_format.rb, line 49 def get_name(id) @id_to_name[id] = get_name_from_cfg(id) unless @id_to_name.has_key? id @id_to_name[id] end
get_name_from_cfg(id)
click to toggle source
# File lib/fluent/plugin/out_docker_format.rb, line 39 def get_name_from_cfg(id) begin docker_cfg = JSON.parse(File.read("#{@docker_containers_path}/#{id}/config.json")) container_name = docker_cfg['Name'] rescue container_name = nil end container_name end
interpolate(tag, str)
click to toggle source
# File lib/fluent/plugin/out_docker_format.rb, line 25 def interpolate(tag, str) tag_parts = tag.split('.') str.gsub(/\$\{tag_parts\[(\d+)\]\}/) { |m| tag_parts[$1.to_i] } end
interpolate_tag(tag)
click to toggle source
# File lib/fluent/plugin/out_docker_format.rb, line 31 def interpolate_tag(tag) id = interpolate(tag, @container_id) name = get_name(id) name = name[1..-1] if name @tag.gsub(/\$\{name\}/, name || id) end