Class: RrxLogging::Logger
- Inherits:
-
ActiveSupport::Logger
- Object
- ActiveSupport::Logger
- RrxLogging::Logger
- Defined in:
- lib/rrx_logging/logger.rb
Instance Method Summary collapse
-
#add(severity, message = nil, progname = nil) ⇒ Object
This completely overrites the Activesupport::LoggerThreadSafeLevel implementation since the logic we want to change isn’t separated out in any convenient way.
- #exception(message, exception) ⇒ Object
-
#initialize(mode = :json, name: nil, tags: nil, progname: nil) ⇒ Logger
constructor
A new instance of Logger.
- #noise?(message) ⇒ Boolean
- #scoped(name: nil, tags: nil) ⇒ Object
-
#silence(level, &block) ⇒ Object
Temporarily ignore log statements below the specified level for the scope of the block.
-
#silence_debug(&block) ⇒ Object
Silence logs of debug level or below.
-
#silence_info(&block) ⇒ Object
Silence logs of info level or below.
-
#with_tags(**tags) ⇒ Object
classes assume if the logger has a method with that name then call it with an array of text tags.
Constructor Details
permalink #initialize(mode = :json, name: nil, tags: nil, progname: nil) ⇒ Logger
Returns a new instance of Logger.
7 8 9 10 11 12 |
# File 'lib/rrx_logging/logger.rb', line 7 def initialize(mode = :json, name: nil, tags: nil, progname: nil) super($stdout, progname: name || progname) self.formatter = Formatter.new(mode, tags:) @silencers = [] @filters = [] end |
Instance Method Details
permalink #add(severity, message = nil, progname = nil) ⇒ Object
This completely overrites the Activesupport::LoggerThreadSafeLevel implementation since the logic we want to change isn’t separated out in any convenient way
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/rrx_logging/logger.rb', line 18 def add(severity, = nil, progname = nil) severity ||= UNKNOWN progname ||= @progname return true if @logdev.nil? || severity < level if .nil? if block_given? = yield else = progname progname = @progname end end return true if noise?() write (format_severity(severity), Time.zone.now, progname, ) end |
permalink #exception(message, exception) ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/rrx_logging/logger.rb', line 101 def exception(, exception) backtrace = exception.backtrace if backtrace.present? cleaned = Rails.backtrace_cleaner.clean(backtrace) backtrace = cleaned unless cleaned.empty? else backtrace = nil end error("%s: %s\n%s" % [ , exception., backtrace&.join("\n") || 'No backtrace' ]) end |
permalink #noise?(message) ⇒ Boolean
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/rrx_logging/logger.rb', line 71 def noise?() Rails.configuration.log_noise_filters.any? do |filter| case filter when Regexp filter.match?(.to_s) when String .include? filter when Proc filter.call() else # Ignore false end end end |
permalink #scoped(name: nil, tags: nil) ⇒ Object
[View source]
38 39 40 41 42 |
# File 'lib/rrx_logging/logger.rb', line 38 def scoped(name: nil, tags: nil) Logger.new formatter.mode, name: name || progname, tags: formatter..merge( || {}) end |
permalink #silence(level, &block) ⇒ Object
Temporarily ignore log statements below the specified level for the scope of the block
63 64 65 66 67 68 69 |
# File 'lib/rrx_logging/logger.rb', line 63 def silence(level, &block) if level > self.level log_at(level, &block) else block.call end end |
permalink #silence_debug(&block) ⇒ Object
Silence logs of debug level or below
52 53 54 |
# File 'lib/rrx_logging/logger.rb', line 52 def silence_debug(&block) silence(Logger::INFO, &block) end |
permalink #silence_info(&block) ⇒ Object
Silence logs of info level or below
57 58 59 |
# File 'lib/rrx_logging/logger.rb', line 57 def silence_info(&block) silence(Logger::WARN, &block) end |
permalink #with_tags(**tags) ⇒ Object
Deliberately not named “tagged” as multiple Rails
classes assume if the logger has a method with that name then call it with an array of text tags
47 48 49 |
# File 'lib/rrx_logging/logger.rb', line 47 def (**) formatter.(**) { yield self } end |