Module: DebugBundle::Logging
- Defined in:
- lib/debugbundle/logging.rb
Defined Under Namespace
Classes: SemanticLoggerAppender
Constant Summary
collapse
- RECURSION_GUARD_KEY =
:__debugbundle_logger_capture_active__
- LOGGER_LEVEL_NAMES =
{
::Logger::DEBUG => :debug,
::Logger::INFO => :info,
::Logger::WARN => :warning,
::Logger::ERROR => :error,
::Logger::FATAL => :fatal,
::Logger::UNKNOWN => :critical
}.freeze
Class Method Summary
collapse
Class Method Details
.install_semantic_logger(client:) ⇒ Object
44
45
46
47
48
49
50
51
|
# File 'lib/debugbundle/logging.rb', line 44
def self.install_semantic_logger(client:)
return nil unless defined?(::SemanticLogger)
return nil unless ::SemanticLogger.respond_to?(:add_appender)
appender = SemanticLoggerAppender.new(client: client)
::SemanticLogger.add_appender(appender: appender)
appender
end
|
.install_stdlib_logger(logger, client:) ⇒ Object
17
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
|
# File 'lib/debugbundle/logging.rb', line 17
def self.install_stdlib_logger(logger, client:)
interceptor = Module.new do
define_method(:add) do |severity, message = nil, progname = nil, &block|
was_capturing = Thread.current[RECURSION_GUARD_KEY]
unless was_capturing
Thread.current[RECURSION_GUARD_KEY] = true
resolved_message = message
resolved_message = block.call if resolved_message.nil? && block
resolved_message = progname if resolved_message.nil?
client.capture_log(
resolved_message.to_s,
level: LOGGER_LEVEL_NAMES.fetch(severity || ::Logger::UNKNOWN, :warning),
context: { logger_name: logger.progname }
)
end
super(severity, message, progname, &block)
ensure
Thread.current[RECURSION_GUARD_KEY] = was_capturing
end
end
logger.singleton_class.prepend(interceptor)
interceptor
end
|