Class: Appsignal::Logger

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

Overview

Logger that flushes logs to the AppSignal logging service

Constant Summary collapse

PLAINTEXT =
0
LOGFMT =
1
JSON =
2
SEVERITY_MAP =
{
  DEBUG => 2,
  INFO => 3,
  WARN => 5,
  ERROR => 6,
  FATAL => 7
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(group, level: INFO, format: PLAINTEXT) ⇒ void

Create a new logger instance

Parameters:

  • group

    Name of the group for this logger.

  • level (defaults to: INFO)

    Log level to filter with

Raises:

  • (TypeError)


26
27
28
29
30
31
32
# File 'lib/appsignal/logger.rb', line 26

def initialize(group, level: INFO, format: PLAINTEXT)
  raise TypeError, "group must be a string" unless group.is_a? String
  @group = group
  @level = level
  @format = format
  @mutex = Mutex.new
end

Instance Method Details

#add(severity, message = nil, group = nil) ⇒ Object Also known as: log

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

We support the various methods in the Ruby logger class by supplying this method.



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/appsignal/logger.rb', line 37

def add(severity, message = nil, group = nil)
  severity ||= UNKNOWN
  return true if severity < level
  group = @group if group.nil?
  if message.nil?
    if block_given?
      message = yield
    else
      message = progname
      group = @group
    end
  end
  return if message.nil?
  message = formatter.call(severity, Time.now, group, message) if formatter

  Appsignal::Extension.log(
    group,
    SEVERITY_MAP.fetch(severity, 0),
    @format,
    message,
    Appsignal::Utils::Data.generate(appsignal_attributes)
  )
end

#debug(message = nil, attributes = {}) ⇒ void

This method returns an undefined value.

Log a debug level message

Parameters:

  • message (defaults to: nil)

    Mesage to log

  • attributes (defaults to: {})

    Attributes to tag the log with



66
67
68
69
70
71
# File 'lib/appsignal/logger.rb', line 66

def debug(message = nil, attributes = {})
  return if DEBUG < level
  message = yield if message.nil? && block_given?
  return if message.nil?
  add_with_attributes(DEBUG, message, @group, attributes)
end

#error(message = nil, attributes = {}) ⇒ void

This method returns an undefined value.

Log an error level message

Parameters:

  • message (defaults to: nil)

    Mesage to log

  • attributes (defaults to: {})

    Attributes to tag the log with



99
100
101
102
103
104
# File 'lib/appsignal/logger.rb', line 99

def error(message = nil, attributes = {})
  return if ERROR < level
  message = yield if message.nil? && block_given?
  return if message.nil?
  add_with_attributes(ERROR, message, @group, attributes)
end

#fatal(message = nil, attributes = {}) ⇒ void

This method returns an undefined value.

Log a fatal level message

Parameters:

  • message (defaults to: nil)

    Mesage to log

  • attributes (defaults to: {})

    Attributes to tag the log with



110
111
112
113
114
115
# File 'lib/appsignal/logger.rb', line 110

def fatal(message = nil, attributes = {})
  return if FATAL < level
  message = yield if message.nil? && block_given?
  return if message.nil?
  add_with_attributes(FATAL, message, @group, attributes)
end

#info(message = nil, attributes = {}) ⇒ void

This method returns an undefined value.

Log an info level message

Parameters:

  • message (defaults to: nil)

    Mesage to log

  • attributes (defaults to: {})

    Attributes to tag the log with



77
78
79
80
81
82
# File 'lib/appsignal/logger.rb', line 77

def info(message = nil, attributes = {})
  return if INFO < level
  message = yield if message.nil? && block_given?
  return if message.nil?
  add_with_attributes(INFO, message, @group, attributes)
end

#warn(message = nil, attributes = {}) ⇒ void

This method returns an undefined value.

Log a warn level message

Parameters:

  • message (defaults to: nil)

    Mesage to log

  • attributes (defaults to: {})

    Attributes to tag the log with



88
89
90
91
92
93
# File 'lib/appsignal/logger.rb', line 88

def warn(message = nil, attributes = {})
  return if WARN < level
  message = yield if message.nil? && block_given?
  return if message.nil?
  add_with_attributes(WARN, message, @group, attributes)
end