Class: Logfoo::IoAppender

Inherits:
Object
  • Object
show all
Defined in:
lib/logfoo/appenders/io_appender.rb

Instance Method Summary collapse

Constructor Details

#initialize(out: nil, err: nil, formatter: nil) ⇒ IoAppender

Returns a new instance of IoAppender.



3
4
5
6
7
8
9
# File 'lib/logfoo/appenders/io_appender.rb', line 3

def initialize(out: nil, err: nil, formatter: nil)
  @stdout    = out || STDOUT
  @stderr    = err || STDERR
  @formatter = formatter || (tty? ? SimpleFormatter.new : LogfmtFormatter.new)

  sync!
end

Instance Method Details

#call(entry) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/logfoo/appenders/io_appender.rb', line 11

def call(entry)
  io =
    case entry
    when ErrLine
      @stderr
    else
      @stdout
    end

  io.write @formatter.call(entry)
  io.flush
end

#sync!Object



33
34
35
36
37
38
39
# File 'lib/logfoo/appenders/io_appender.rb', line 33

def sync!
  [@stdout, @stderr].each do |io|
    if io.respond_to?(:sync=)
      io.sync = true
    end
  end
end

#tty?Boolean

Returns:

  • (Boolean)


24
25
26
27
28
29
30
31
# File 'lib/logfoo/appenders/io_appender.rb', line 24

def tty?
  [@stdout, @stderr].inject(true) do |memo, io|
    if memo
      memo = io.respond_to?(:tty?) && io.tty?
    end
    memo
  end
end