Class: BrainzLab::Recall::Logger

Inherits:
Logger
  • Object
show all
Defined in:
lib/brainzlab/recall/logger.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(service_name = nil, broadcast_to: nil) ⇒ Logger

Returns a new instance of Logger.



10
11
12
13
14
15
16
# File 'lib/brainzlab/recall/logger.rb', line 10

def initialize(service_name = nil, broadcast_to: nil)
  super(nil)
  @service_name = service_name
  @broadcast_to = broadcast_to
  @level = ::Logger::DEBUG
  @formatter = proc { |_severity, _time, _progname, msg| msg }
end

Instance Attribute Details

#broadcast_toObject

Returns the value of attribute broadcast_to.



8
9
10
# File 'lib/brainzlab/recall/logger.rb', line 8

def broadcast_to
  @broadcast_to
end

Instance Method Details

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



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/brainzlab/recall/logger.rb', line 18

def add(severity, message = nil, progname = nil)
  severity ||= ::Logger::UNKNOWN

  # Handle block-based messages
  message = yield if message.nil? && block_given?

  # Handle progname as message (standard Logger behavior)
  if message.nil?
    message = progname
    progname = nil
  end

  # Broadcast to original logger if configured
  @broadcast_to&.add(severity, message, progname)

  # Skip if below configured level
  return true if severity < @level

  level = severity_to_level(severity)
  return true unless BrainzLab.configuration.level_enabled?(level)

  # Extract structured data if message is a hash
  data = {}
  if message.is_a?(Hash)
    data = message.dup
    message = data.delete(:message) || data.delete(:msg) || data.to_s
  end

  data[:service] = @service_name if @service_name
  data[:progname] = progname if progname

  Recall.log(level, message.to_s, **data)
  true
end

#closeObject



98
99
100
# File 'lib/brainzlab/recall/logger.rb', line 98

def close
  flush
end

#debug(message = nil) ⇒ Object



53
54
55
# File 'lib/brainzlab/recall/logger.rb', line 53

def debug(message = nil, &)
  add(::Logger::DEBUG, message, &)
end

#error(message = nil) ⇒ Object



65
66
67
# File 'lib/brainzlab/recall/logger.rb', line 65

def error(message = nil, &)
  add(::Logger::ERROR, message, &)
end

#fatal(message = nil) ⇒ Object



69
70
71
# File 'lib/brainzlab/recall/logger.rb', line 69

def fatal(message = nil, &)
  add(::Logger::FATAL, message, &)
end

#flushObject



94
95
96
# File 'lib/brainzlab/recall/logger.rb', line 94

def flush
  Recall.flush
end

#info(message = nil) ⇒ Object



57
58
59
# File 'lib/brainzlab/recall/logger.rb', line 57

def info(message = nil, &)
  add(::Logger::INFO, message, &)
end

#silence(severity = ::Logger::ERROR) ⇒ Object

Rails compatibility methods



78
79
80
81
82
83
84
# File 'lib/brainzlab/recall/logger.rb', line 78

def silence(severity = ::Logger::ERROR)
  old_level = @level
  @level = severity
  yield self
ensure
  @level = old_level
end

#tagged(*tags) ⇒ Object



86
87
88
89
90
91
92
# File 'lib/brainzlab/recall/logger.rb', line 86

def tagged(*tags)
  if block_given?
    BrainzLab.with_context(tags: tags) { yield self }
  else
    self
  end
end

#unknown(message = nil) ⇒ Object



73
74
75
# File 'lib/brainzlab/recall/logger.rb', line 73

def unknown(message = nil, &)
  add(::Logger::UNKNOWN, message, &)
end

#warn(message = nil) ⇒ Object



61
62
63
# File 'lib/brainzlab/recall/logger.rb', line 61

def warn(message = nil, &)
  add(::Logger::WARN, message, &)
end