27 lines
508 B
Go
27 lines
508 B
Go
package utils
|
|
|
|
import (
|
|
"bufio"
|
|
"io"
|
|
)
|
|
|
|
// NewLogBuffer creates a buffer that can be used to capture output stream
|
|
// and write to a logger in real time
|
|
func NewLogBuffer(output func(string)) io.Writer {
|
|
reader, writer := io.Pipe()
|
|
|
|
go func() {
|
|
scanner := bufio.NewScanner(reader)
|
|
for scanner.Scan() {
|
|
output(scanner.Text())
|
|
}
|
|
}()
|
|
|
|
return writer
|
|
}
|
|
|
|
// NewCombinedBuffer combines multiple io.Writers
|
|
func NewCombinedBuffer(writers ...io.Writer) io.Writer {
|
|
return io.MultiWriter(writers...)
|
|
}
|