Class: Appsignal::Logger
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 Attribute Summary collapse
-
#level ⇒ Object
readonly
Returns the value of attribute level.
Instance Method Summary collapse
-
#add(severity, message = nil, group = nil) ⇒ Object
(also: #log)
private
We support the various methods in the Ruby logger class by supplying this method.
-
#debug(message = nil, attributes = {}) ⇒ void
Log a debug level message.
-
#error(message = nil, attributes = {}) ⇒ void
Log an error level message.
-
#fatal(message = nil, attributes = {}) ⇒ void
Log a fatal level message.
-
#info(message = nil, attributes = {}) ⇒ void
Log an info level message.
-
#initialize(group, level: INFO, format: PLAINTEXT) ⇒ void
constructor
Create a new logger instance.
-
#silence(_severity = ERROR, &block) ⇒ Object
When using ActiveSupport::TaggedLogging without the broadcast feature, the passed logger is required to respond to the
silence
method. -
#warn(message = nil, attributes = {}) ⇒ void
Log a warn level message.
Constructor Details
#initialize(group, level: INFO, format: PLAINTEXT) ⇒ void
Create a new logger instance
27 28 29 30 31 32 33 34 |
# File 'lib/appsignal/logger.rb', line 27 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 Attribute Details
#level ⇒ Object (readonly)
Returns the value of attribute level.
20 21 22 |
# File 'lib/appsignal/logger.rb', line 20 def level @level 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.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/appsignal/logger.rb', line 39 def add(severity, = nil, group = nil) severity ||= UNKNOWN return true if severity < level group = @group if group.nil? if .nil? if block_given? = yield else = group group = @group end end return if .nil? = formatter.call(severity, Time.now, group, ) if formatter Appsignal::Extension.log( group, SEVERITY_MAP.fetch(severity, 0), @format, , Appsignal::Utils::Data.generate(appsignal_attributes) ) end |
#debug(message = nil, attributes = {}) ⇒ void
This method returns an undefined value.
Log a debug level message
70 71 72 73 74 75 76 77 |
# File 'lib/appsignal/logger.rb', line 70 def debug( = nil, attributes = {}) return if level > DEBUG = yield if .nil? && block_given? return if .nil? add_with_attributes(DEBUG, , @group, attributes) end |
#error(message = nil, attributes = {}) ⇒ void
This method returns an undefined value.
Log an error level message
109 110 111 112 113 114 115 116 |
# File 'lib/appsignal/logger.rb', line 109 def error( = nil, attributes = {}) return if level > ERROR = yield if .nil? && block_given? return if .nil? add_with_attributes(ERROR, , @group, attributes) end |
#fatal(message = nil, attributes = {}) ⇒ void
This method returns an undefined value.
Log a fatal level message
122 123 124 125 126 127 128 129 |
# File 'lib/appsignal/logger.rb', line 122 def fatal( = nil, attributes = {}) return if level > FATAL = yield if .nil? && block_given? return if .nil? add_with_attributes(FATAL, , @group, attributes) end |
#info(message = nil, attributes = {}) ⇒ void
This method returns an undefined value.
Log an info level message
83 84 85 86 87 88 89 90 |
# File 'lib/appsignal/logger.rb', line 83 def info( = nil, attributes = {}) return if level > INFO = yield if .nil? && block_given? return if .nil? add_with_attributes(INFO, , @group, attributes) end |
#silence(_severity = ERROR, &block) ⇒ Object
When using ActiveSupport::TaggedLogging without the broadcast feature,
the passed logger is required to respond to the silence
method.
In our case it behaves as the broadcast feature of the Rails logger, but
we don't have to check if the parent logger has the silence
method defined
as our logger directly inherits from Ruby base logger.
Links: https://github.com/rails/rails/blob/e11ebc04cfbe41c06cdfb70ee5a9fdbbd98bb263/activesupport/lib/active_support/logger.rb#L60-L76 https://github.com/rails/rails/blob/main/activesupport/e11ebc04cfbe41c06cdfb70ee5a9fdbbd98bb263/active_support/logger_silence.rb
140 141 142 |
# File 'lib/appsignal/logger.rb', line 140 def silence(_severity = ERROR, &block) block.call end |
#warn(message = nil, attributes = {}) ⇒ void
This method returns an undefined value.
Log a warn level message
96 97 98 99 100 101 102 103 |
# File 'lib/appsignal/logger.rb', line 96 def warn( = nil, attributes = {}) return if level > WARN = yield if .nil? && block_given? return if .nil? add_with_attributes(WARN, , @group, attributes) end |