Module: Appydays::Loggable::SpecHelpers
- Defined in:
- lib/appydays/loggable/spec_helpers.rb
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.included(context) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# 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.[:log] || example.[: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 |
Instance Method Details
#capture_logs_from(loggers, level: "debug", formatter: nil) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# 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 |