module Appydays::Loggable::SpecHelpers
Public Class Methods
included(context)
click to toggle source
Calls superclass method
# File lib/appydays/loggable/spec_helpers.rb, line 6 def self.included(context) # Appydays::Loggable.ensure_stderr_appender context.around(:each) do |example| override_level = (example.metadata[:log] || example.metadata[:logging]) if override_level orig_level = SemanticLogger.default_level SemanticLogger.default_level = override_level end example.run SemanticLogger.default_level = orig_level if override_level end context.before(:all) do Appydays::Loggable.set_default_level(:fatal, warning: false) end context.after(:all) do Appydays::Loggable.set_default_level(:fatal, warning: false) end super end
Public Instance Methods
capture_logs_from(loggers, level: "debug", formatter: nil) { || ... }
click to toggle source
# File lib/appydays/loggable/spec_helpers.rb, line 30 def capture_logs_from(loggers, level: "debug", formatter: nil) (loggers = [loggers]) unless loggers.respond_to?(:to_ary) existing_appenders_and_lvls = SemanticLogger.appenders.map { |app| [app, app.level] } SemanticLogger.appenders.each { |app| app.level = :fatal } original_levels_and_loggers = loggers.map { |log| [log, log.level] } loggers.each { |log| log.level = level } io = StringIO.new appender = SemanticLogger.add_appender(io: io, level: level) appender.formatter = formatter if formatter begin yield ensure SemanticLogger.flush SemanticLogger.remove_appender(appender) original_levels_and_loggers.each { |(log, lvl)| log.level = lvl } existing_appenders_and_lvls.each { |(app, lvl)| app.level = lvl } end return io.string.lines end