Class: ActFluentLoggerRails::FluentLogger

Inherits:
ActiveSupport::Logger
  • Object
show all
Defined in:
lib/act-fluent-logger-rails/logger.rb

Instance Method Summary collapse

Constructor Details

#initialize(options, level, log_tags) ⇒ FluentLogger

Returns a new instance of FluentLogger.



54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/act-fluent-logger-rails/logger.rb', line 54

def initialize(options, level, log_tags)
  self.level = level
  port    = options[:port]
  host    = options[:host]
  @messages_type = (options[:messages_type] || :array).to_sym
  @tag = options[:tag]
  @fluent_logger = ::Fluent::Logger::FluentLogger.new(nil, host: host, port: port)
  @severity = 0
  @messages = []
  @log_tags = log_tags
  @map = {}
end

Instance Method Details

#[](key) ⇒ Object



85
86
87
# File 'lib/act-fluent-logger-rails/logger.rb', line 85

def [](key)
  @map[key]
end

#[]=(key, value) ⇒ Object



89
90
91
# File 'lib/act-fluent-logger-rails/logger.rb', line 89

def []=(key, value)
  @map[key] = value
end

#add(severity, message = nil, progname = nil, &block) ⇒ Object



67
68
69
70
71
72
73
# File 'lib/act-fluent-logger-rails/logger.rb', line 67

def add(severity, message = nil, progname = nil, &block)
  return true if severity < level
  message = (block_given? ? block.call : progname) if message.blank?
  return true if message.blank?
  add_message(severity, message)
  true
end

#add_message(severity, message) ⇒ Object



75
76
77
78
79
80
81
82
83
# File 'lib/act-fluent-logger-rails/logger.rb', line 75

def add_message(severity, message)
  @severity = severity if @severity < severity

  if message.encoding == Encoding::UTF_8
    @messages << message
  else
    @messages << message.dup.force_encoding(Encoding::UTF_8)
  end
end

#closeObject



118
119
120
# File 'lib/act-fluent-logger-rails/logger.rb', line 118

def close
  @fluent_logger.close
end

#flushObject



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/act-fluent-logger-rails/logger.rb', line 93

def flush
  return if @messages.empty?
  messages = if @messages_type == :string
               @messages.join("\n")
             else
               @messages
             end
  @map[:messages] = messages
  @map[:level] = format_severity(@severity)
  @log_tags.each do |k, v|
    @map[k] = case v
              when Proc
                v.call(@request)
              when Symbol
                @request.send(v)
              else
                v
              end rescue :error
  end
  @fluent_logger.post(@tag, @map)
  @severity = 0
  @messages.clear
  @map.clear
end

#format_severity(severity) ⇒ Object



130
131
132
# File 'lib/act-fluent-logger-rails/logger.rb', line 130

def format_severity(severity)
  ActFluentLoggerRails::Logger::SEV_LABEL[severity] || 'ANY'
end

#levelObject



122
123
124
# File 'lib/act-fluent-logger-rails/logger.rb', line 122

def level
  @level
end

#level=(l) ⇒ Object



126
127
128
# File 'lib/act-fluent-logger-rails/logger.rb', line 126

def level=(l)
  @level = l
end