1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- package logx
- import (
- "context"
- "fmt"
- "io"
- "time"
- "github.com/tal-tech/go-zero/core/timex"
- "github.com/tal-tech/go-zero/core/trace/tracespec"
- )
- type traceLogger struct {
- logEntry
- Trace string `json:"trace,omitempty"`
- Span string `json:"span,omitempty"`
- ctx context.Context
- }
- func (l *traceLogger) Error(v ...interface{}) {
- if shouldLog(ErrorLevel) {
- l.write(errorLog, levelError, formatWithCaller(fmt.Sprint(v...), durationCallerDepth))
- }
- }
- func (l *traceLogger) Errorf(format string, v ...interface{}) {
- if shouldLog(ErrorLevel) {
- l.write(errorLog, levelError, formatWithCaller(fmt.Sprintf(format, v...), durationCallerDepth))
- }
- }
- func (l *traceLogger) Info(v ...interface{}) {
- if shouldLog(InfoLevel) {
- l.write(infoLog, levelInfo, fmt.Sprint(v...))
- }
- }
- func (l *traceLogger) Infof(format string, v ...interface{}) {
- if shouldLog(InfoLevel) {
- l.write(infoLog, levelInfo, fmt.Sprintf(format, v...))
- }
- }
- func (l *traceLogger) Slow(v ...interface{}) {
- if shouldLog(ErrorLevel) {
- l.write(slowLog, levelSlow, fmt.Sprint(v...))
- }
- }
- func (l *traceLogger) Slowf(format string, v ...interface{}) {
- if shouldLog(ErrorLevel) {
- l.write(slowLog, levelSlow, fmt.Sprintf(format, v...))
- }
- }
- func (l *traceLogger) WithDuration(duration time.Duration) Logger {
- l.Duration = timex.ReprOfDuration(duration)
- return l
- }
- func (l *traceLogger) write(writer io.Writer, level, content string) {
- l.Timestamp = getTimestamp()
- l.Level = level
- l.Content = content
- l.Trace = traceIdFromContext(l.ctx)
- l.Span = spanIdFromContext(l.ctx)
- outputJson(writer, l)
- }
- func WithContext(ctx context.Context) Logger {
- return &traceLogger{
- ctx: ctx,
- }
- }
- func spanIdFromContext(ctx context.Context) string {
- t, ok := ctx.Value(tracespec.TracingKey).(tracespec.Trace)
- if !ok {
- return ""
- }
- return t.SpanId()
- }
- func traceIdFromContext(ctx context.Context) string {
- t, ok := ctx.Value(tracespec.TracingKey).(tracespec.Trace)
- if !ok {
- return ""
- }
- return t.TraceId()
- }
|