Class: Sqreen::DeferredLogger

Inherits:
Object
  • Object
show all
Defined in:
lib/sqreen/deferred_logger.rb

Defined Under Namespace

Classes: Entry

Constant Summary collapse

MAX_ENTRIES =
1000

Instance Method Summary collapse

Constructor Details

#initializeDeferredLogger

Returns a new instance of DeferredLogger.



16
17
18
19
20
21
# File 'lib/sqreen/deferred_logger.rb', line 16

def initialize
  @buffer = StringIO.new
  @logger = ::Logger.new(@buffer)
  @entries = []
  @mutex = Mutex.new
end

Instance Method Details

#add(severity, msg = nil, &block) ⇒ Object



67
68
69
70
71
72
73
74
75
76
# 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) ⇒ Object



43
44
45
# File 'lib/sqreen/deferred_logger.rb', line 43

def debug(msg = nil, &block)
  add(::Logger::DEBUG, msg, &block)
end

#debug?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/sqreen/deferred_logger.rb', line 23

def debug?
  true
end

#error(msg = nil, &block) ⇒ Object



55
56
57
# File 'lib/sqreen/deferred_logger.rb', line 55

def error(msg = nil, &block)
  add(::Logger::ERROR, msg, &block)
end

#error?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/sqreen/deferred_logger.rb', line 35

def error?
  true
end

#fatal(msg = nil, &block) ⇒ Object



59
60
61
# File 'lib/sqreen/deferred_logger.rb', line 59

def fatal(msg = nil, &block)
  add(::Logger::FATAL, msg, &block)
end

#fatal?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/sqreen/deferred_logger.rb', line 39

def fatal?
  true
end

#flush_to(logger) ⇒ Object



82
83
84
85
86
87
88
89
90
# 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) ⇒ Object



78
79
80
# File 'lib/sqreen/deferred_logger.rb', line 78

def formatter=(value)
  @logger.formatter = value
end

#info(msg = nil, &block) ⇒ Object



47
48
49
# File 'lib/sqreen/deferred_logger.rb', line 47

def info(msg = nil, &block)
  add(::Logger::INFO, msg, &block)
end

#info?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/sqreen/deferred_logger.rb', line 27

def info?
  true
end

#unknown(msg = nil, &block) ⇒ Object



63
64
65
# File 'lib/sqreen/deferred_logger.rb', line 63

def unknown(msg = nil, &block)
  add(::Logger::UNKNOWN, msg, &block)
end

#warn(msg = nil, &block) ⇒ Object



51
52
53
# File 'lib/sqreen/deferred_logger.rb', line 51

def warn(msg = nil, &block)
  add(::Logger::WARN, msg, &block)
end

#warn?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/sqreen/deferred_logger.rb', line 31

def warn?
  true
end