You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

50 lines
842 B

package main
import (
"bytes"
"fmt"
"io"
"os"
)
type BufferedLog struct {
buffer *bytes.Buffer
w io.WriteCloser
}
func NewLog() *BufferedLog {
return &BufferedLog{
buffer: &bytes.Buffer{},
w: os.Stdout,
}
}
func NewFileLog(file *os.File) *BufferedLog {
return &BufferedLog{
buffer: &bytes.Buffer{},
w: file,
}
}
func (log *BufferedLog) Log(a ...interface{}) (int, error) {
return fmt.Fprint(log.buffer, a...)
}
func (log *BufferedLog) Logln(a ...interface{}) (int, error) {
return fmt.Fprintln(log.buffer, a...)
}
func (log *BufferedLog) Logf(format string, a ...interface{}) (int, error) {
return fmt.Fprintf(log.buffer, format, a...)
}
func (log *BufferedLog) Flush() error {
defer func() {
if log.w != os.Stdout {
log.w.Close()
}
}()
_, err := log.buffer.WriteTo(log.w)
return err
}