Module: Logplexer
- Extended by:
- Logplexer
- Included in:
- Logplexer
- Defined in:
- lib/logplexer.rb,
lib/logplexer/railtie.rb,
lib/logplexer/version.rb,
lib/logplexer/configuration.rb
Defined Under Namespace
Classes: Configuration, Railtie
Constant Summary collapse
- VERSION =
"1.0.0"
Instance Attribute Summary collapse
Instance Method Summary collapse
- #above_min_log_level?(p) ⇒ Boolean
- #configure {|config| ... } ⇒ Object
- #is_logger?(logger) ⇒ Boolean
- #log(exception, log_level, **opts) ⇒ Object
- #priority(level) ⇒ Object
Instance Attribute Details
#config ⇒ Object
12 13 14 |
# File 'lib/logplexer.rb', line 12 def config @config ||= Configuration.new end |
Instance Method Details
#above_min_log_level?(p) ⇒ Boolean
81 82 83 84 |
# File 'lib/logplexer.rb', line 81 def above_min_log_level?( p ) min = Logplexer.config.min_log_level || :error return priority( p ) >= priority( min ) end |
#configure {|config| ... } ⇒ Object
16 17 18 |
# File 'lib/logplexer.rb', line 16 def configure(&blk) yield( config ) end |
#is_logger?(logger) ⇒ Boolean
76 77 78 79 80 |
# File 'lib/logplexer.rb', line 76 def is_logger?(logger) eval( %w(debug info warn error fatal).map do |meth| "logger.respond_to?(:#{meth})" end.join( ' && ' ) ) end |
#log(exception, log_level, **opts) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 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 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/logplexer.rb', line 28 def log( exception, log_level, **opts) # We wrap the Honeybadger notify call so that in development, # we actually see the errors. Then we can unwrap the REST errors # if need be return if exception.nil? return if Logplexer.config.quiet? # If the user specifies a logfile AND a logger in the call, the logger will win out logfile = opts.delete( :logfile ) || Logplexer.config.logfile logger = opts.delete( :logger ) || Logplexer.config.logger unless is_logger?(logger) raise LogplexerError, "If specified, logger must be able to respond to :debug, :info, :warn, :error, and :fatal" end # Override the verbosity if config.verbose is unset verbose = opts.delete( :verbose ) verbose = verbose.nil? ? Logplexer.config.verbose? : verbose if Logplexer.config.honeybadger? && above_min_log_level?( log_level ) if exception.is_a? String exception = { error_class: "Exception", error_message: exception } end Honeybadger.notify( exception, opts ) else # Make sure that the exception is an actual exception and # not just a hash since Honeybadger accepts both if exception.is_a? Exception logger.send( log_level, exception. ) if verbose exception.backtrace.each do |entry| logger.send( log_level, "> #{entry}" ) end end elsif exception.is_a? String # Log just the string if thats what the user wants logger.send( log_level, exception ) else # Default kind of log for an object or whatevs logger.send( log_level, exception.inspect ) end end end |
#priority(level) ⇒ Object
86 87 88 89 |
# File 'lib/logplexer.rb', line 86 def priority( level ) @priorities ||= { debug: 0, info: 1, warn: 2, error: 3, fatal: 4 } @priorities[ level.to_sym ] end |