func NewStringAppender(buffer *bytes.Buffer) send.Sender {
	s, _ := send.NewStreamLogger("", stringAppender{buffer}, send.LevelInfo{Default: level.Debug, Threshold: level.Debug})
	return s
}
NewStringAppender wraps a bytes.Buffer and provides an
send.Sender/Appender interface that writes log messages to that
buffer.
package slogger
import (
	"bytes"
	"os"
	"strings"
	"github.com/mongodb/grip/level"
	"github.com/mongodb/grip/send"
)
type Appender interface {
	Append(log *Log) error
}
func StdOutAppender() send.Sender {
	s, _ := send.NewStreamLogger("", os.Stdout, send.LevelInfo{Default: level.Debug, Threshold: level.Debug})
	return s
}
func StdErrAppender() send.Sender {
	s, _ := send.NewStreamLogger("", os.Stderr, send.LevelInfo{Default: level.Debug, Threshold: level.Debug})
	return s
}
func DevNullAppender() (send.Sender, error) {
	devNull, err := os.OpenFile(os.DevNull, os.O_WRONLY, 0644)
	if err != nil {
		return nil, err
	}
	return send.NewStreamLogger("", devNull, send.LevelInfo{Default: level.Debug, Threshold: level.Debug})
}
type stringAppender struct {
	buf *bytes.Buffer
}
func (s stringAppender) WriteString(str string) (int, error) {
	if !strings.HasSuffix(str, "\n") {
		str += "\n"
	}
	return s.buf.WriteString(str)
}