class Sqreen::DeferredLogger
Constants
- Entry
- MAX_ENTRIES
Public Class Methods
new()
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 16 def initialize @buffer = StringIO.new @logger = ::Logger.new(@buffer) @entries = [] @mutex = Mutex.new end
Public Instance Methods
add(severity, msg = nil, &block)
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 67 def add(severity, msg = nil, &block) @mutex.synchronize do @entries.shift if @entries.count >= MAX_ENTRIES mark = @buffer.pos @logger.add(severity, msg, &block) @buffer.seek(mark) @entries << Entry.new(severity, @buffer.read) @buffer.truncate(0) end end
debug(msg = nil, &block)
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 43 def debug(msg = nil, &block) add(::Logger::DEBUG, msg, &block) end
debug?()
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 23 def debug? true end
error(msg = nil, &block)
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 55 def error(msg = nil, &block) add(::Logger::ERROR, msg, &block) end
error?()
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 35 def error? true end
fatal(msg = nil, &block)
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 59 def fatal(msg = nil, &block) add(::Logger::FATAL, msg, &block) end
fatal?()
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 39 def fatal? true end
flush_to(logger)
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 82 def flush_to(logger) @mutex.synchronize do @entries.each do |entry| next if entry.severity < logger.level logger.instance_eval { @logdev }.write(entry.message) end reset end end
formatter=(value)
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 78 def formatter=(value) @logger.formatter = value end
info(msg = nil, &block)
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 47 def info(msg = nil, &block) add(::Logger::INFO, msg, &block) end
info?()
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 27 def info? true end
unknown(msg = nil, &block)
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 63 def unknown(msg = nil, &block) add(::Logger::UNKNOWN, msg, &block) end
warn(msg = nil, &block)
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 51 def warn(msg = nil, &block) add(::Logger::WARN, msg, &block) end
warn?()
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 31 def warn? true end
Private Instance Methods
reset()
click to toggle source
# File lib/sqreen/deferred_logger.rb, line 94 def reset buffer = StringIO.new logger = ::Logger.new(buffer) logger.formatter = @logger.formatter @buffer, @logger, @entries = buffer, logger, [] end