class Lumberjack::TagFormatter
tag_formatter.add(“finished_at”, Lumberjack::Formatter::DateTimeFormatter.new(“%Y-%m-%dT%H:%m:%S%z”))
tag_formatter.add([“password”, “email”]) { |value| “***” }
tag_formatter = Lumberjack::TagFormatter.new.default(Lumberjack::Formatter.new)
objects or any object that responds to ‘call`.
name specific formatters. Formatters can be either `Lumberjack::Formatter`
Class for formatting tags. You can register a default formatter and tag
def add(names, formatter = nil, &block)
-
(Lumberjack::TagFormatter)
- self
Parameters:
-
formatter
(Lumberjack::Formatter, #call, nil
) -- The formatter to use. -
names
(String, Array
) -- The tag names to apply the formatter to.
def add(names, formatter = nil, &block) formatter ||= block formatter = dereference_formatter(formatter) if formatter.nil? remove(key) else Array(names).each do |name| @formatters[name.to_s] = formatter end end self end
def clear
-
(Lumberjack::TagFormatter)
- self
def clear @default_formatter = nil @formatters.clear self end
def default(formatter = nil, &block)
-
(Lumberjack::TagFormatter)
- self
Parameters:
-
formatter
(Lumberjack::Formatter, #call, nil
) -- The formatter to use.
def default(formatter = nil, &block) formatter ||= block formatter = dereference_formatter(formatter) @default_formatter = formatter self end
def dereference_formatter(formatter)
def dereference_formatter(formatter) if formatter.is_a?(TaggedLoggerSupport::Formatter) formatter.__formatter elsif formatter.is_a?(Symbol) formatter_class_name = "#{formatter.to_s.gsub(/(^|_)([a-z])/) { |m| $~[2].upcase }}Formatter" Formatter.const_get(formatter_class_name).new else formatter end end
def format(tags)
-
(Hash)
- The formatted tags.
Parameters:
-
tags
(Hash
) -- The tags to format.
def format(tags) return nil if tags.nil? if @default_formatter.nil? && (@formatters.empty? || (@formatters.keys & tags.keys).empty?) tags else formatted = {} tags.each do |name, value| formatter = (@formatters[name.to_s] || @default_formatter) if formatter.is_a?(Lumberjack::Formatter) value = formatter.format(value) elsif formatter.respond_to?(:call) value = formatter.call(value) end formatted[name.to_s] = value end formatted end end
def initialize
def initialize @formatters = {} @default_formatter = nil end
def remove(names)
-
(Lumberjack::TagFormatter)
- self
Parameters:
-
names
(String, Array
) -- The tag names to remove the formatter from.
def remove(names) Array(names).each do |name| @formatters.delete(name.to_s) end self end
def remove_default
-
(Lumberjack::TagFormatter)
- self
def remove_default @default_formatter = nil self end