add io.Writer interface compatability

This commit is contained in:
Patrick Hemmer 2015-01-08 01:04:07 -05:00
parent d2f9ffa1d9
commit 299ee95277
2 changed files with 34 additions and 0 deletions

View File

@ -9,6 +9,10 @@ var (
std = New()
)
func StandardLogger() *Logger {
return std
}
// SetOutput sets the standard logger output.
func SetOutput(out io.Writer) {
std.mu.Lock()

30
input_writer.go Normal file
View File

@ -0,0 +1,30 @@
package logrus
import (
"bufio"
"io"
"runtime"
)
func (logger *Logger) InputWriter() (*io.PipeWriter) {
inputReader, inputWriter := io.Pipe()
go logger.inputWriterScanner(inputReader)
runtime.SetFinalizer(inputWriter, inputWriterFinalizer)
return inputWriter
}
func (logger *Logger) inputWriterScanner(inputReader *io.PipeReader) {
scanner := bufio.NewScanner(inputReader)
for scanner.Scan() {
logger.Print(scanner.Text())
}
if err := scanner.Err(); err != nil {
logger.Fatal(err)
}
}
func inputWriterFinalizer(inputWriter *io.PipeWriter) {
inputWriter.Close()
}