Class: Lumberjack::TagFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/lumberjack/tag_formatter.rb

Overview

Class for formatting tags. You can register a default formatter and tag name specific formatters. Formatters can be either ‘Lumberjack::Formatter` objects or any object that responds to `call`.

tag_formatter = Lumberjack::TagFormatter.new.default(Lumberjack::Formatter.new) tag_formatter.add([“password”, “email”]) { |value| “***” } tag_formatter.add(“finished_at”, Lumberjack::Formatter::DateTimeFormatter.new(“%Y-%m-%dT%H:%m:%S%z”))

Instance Method Summary collapse

Constructor Details

#initializeTagFormatter

Returns a new instance of TagFormatter.



12
13
14
15
# File 'lib/lumberjack/tag_formatter.rb', line 12

def initialize
  @formatters = {}
  @default_formatter = nil
end

Instance Method Details

#add(names, formatter = nil, &block) ⇒ Lumberjack::TagFormatter

Add a formatter for specific tag names. This can either be a Lumberjack::Formatter or an object that responds to ‘call` or a block. The default formatter will not be applied.

Parameters:

  • names (String, Array<String>)

    The tag names to apply the formatter to.

  • formatter (Lumberjack::Formatter, #call, nil) (defaults to: nil)

    The formatter to use. If this is nil, then the block will be used as the formatter.

Returns:



46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/lumberjack/tag_formatter.rb', line 46

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

#clearLumberjack::TagFormatter

Remove all formatters.

Returns:



73
74
75
76
77
# File 'lib/lumberjack/tag_formatter.rb', line 73

def clear
  @default_formatter = nil
  @formatters.clear
  self
end

#default(formatter = nil, &block) ⇒ Lumberjack::TagFormatter

Add a default formatter applied to all tag values. This can either be a Lumberjack::Formatter or an object that responds to ‘call` or a block.

Parameters:

  • formatter (Lumberjack::Formatter, #call, nil) (defaults to: nil)

    The formatter to use. If this is nil, then the block will be used as the formatter.

Returns:



23
24
25
26
27
28
# File 'lib/lumberjack/tag_formatter.rb', line 23

def default(formatter = nil, &block)
  formatter ||= block
  formatter = dereference_formatter(formatter)
  @default_formatter = formatter
  self
end

#format(tags) ⇒ Hash

Format a hash of tags using the formatters

Parameters:

  • tags (Hash)

    The tags to format.

Returns:

  • (Hash)

    The formatted tags.



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/lumberjack/tag_formatter.rb', line 83

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

#remove(names) ⇒ Lumberjack::TagFormatter

Remove formatters for specific tag names. The default formatter will still be applied.

Parameters:

  • names (String, Array<String>)

    The tag names to remove the formatter from.

Returns:



63
64
65
66
67
68
# File 'lib/lumberjack/tag_formatter.rb', line 63

def remove(names)
  Array(names).each do |name|
    @formatters.delete(name.to_s)
  end
  self
end

#remove_defaultLumberjack::TagFormatter

Remove the default formatter.

Returns:



33
34
35
36
# File 'lib/lumberjack/tag_formatter.rb', line 33

def remove_default
  @default_formatter = nil
  self
end