1
0
mirror of https://github.com/go-kratos/kratos.git synced 2025-01-10 00:29:01 +02:00
kratos/pkg/log/stdout.go

54 lines
1.3 KiB
Go
Raw Normal View History

2019-03-06 13:11:45 +02:00
package log
import (
"context"
"os"
"time"
)
2019-06-09 14:57:28 +02:00
const defaultPattern = "%L %d-%T %f %M"
2019-03-06 13:11:45 +02:00
var _defaultStdout = NewStdout()
// StdoutHandler stdout log handler
type StdoutHandler struct {
render Render
}
// NewStdout create a stdout log handler
func NewStdout() *StdoutHandler {
2019-06-09 14:57:28 +02:00
return &StdoutHandler{render: newPatternRender(defaultPattern)}
2019-03-06 13:11:45 +02:00
}
// Log stdout loging, only for developing env.
func (h *StdoutHandler) Log(ctx context.Context, lv Level, args ...D) {
2019-04-11 13:55:27 +02:00
d := toMap(args...)
2019-03-06 13:11:45 +02:00
// add extra fields
addExtraField(ctx, d)
d[_time] = time.Now().Format(_timeFormat)
2019-06-09 14:57:28 +02:00
h.render.Render(os.Stderr, d)
os.Stderr.Write([]byte("\n"))
2019-03-06 13:11:45 +02:00
}
// Close stdout loging
func (h *StdoutHandler) Close() error {
return nil
}
// SetFormat set stdout log output format
// %T time format at "15:04:05.999"
// %t time format at "15:04:05"
// %D data format at "2006/01/02"
// %d data format at "01/02"
// %L log level e.g. INFO WARN ERROR
// %f function name and line number e.g. model.Get:121
// %i instance id
// %e deploy env e.g. dev uat fat prod
// %z zone
// %S full file name and line number: /a/b/c/d.go:23
// %s final file name element and line number: d.go:23
// %M log message and additional fields: key=value this is log message
func (h *StdoutHandler) SetFormat(format string) {
h.render = newPatternRender(format)
}