1
0
mirror of https://github.com/go-kratos/kratos.git synced 2025-02-01 13:07:48 +02:00
kratos/log/helper_writer.go
Elric Li eb2dcae83d
feat(log): Helper implemented io.Writer (#1927)
* feat(log): Add writerWrapper implementing io.Writer

* fix(kratos): fix format has wrong type

* fix(log): rename writerOption to WriterOptionFn.
2022-05-06 15:59:50 +08:00

44 lines
896 B
Go

package log
import "io"
type writerWrapper struct {
helper *Helper
level Level
}
type WriterOptionFn func(w *writerWrapper)
// WithWriteLevel set writerWrapper level.
func WithWriterLevel(level Level) WriterOptionFn {
return func(w *writerWrapper) {
w.level = level
}
}
// WithWriteMessageKey set writerWrapper helper message key.
func WithWriteMessageKey(key string) WriterOptionFn {
return func(w *writerWrapper) {
if key != "" {
w.helper.msgKey = key
}
}
}
// NewWriter return a writer wrapper.
func NewWriter(logger Logger, opts ...WriterOptionFn) io.Writer {
ww := &writerWrapper{
helper: NewHelper(logger, WithMessageKey(DefaultMessageKey)),
level: LevelInfo, // default level
}
for _, opt := range opts {
opt(ww)
}
return ww
}
func (ww *writerWrapper) Write(p []byte) (int, error) {
ww.helper.Log(ww.level, ww.helper.msgKey, string(p))
return 0, nil
}