You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
994 B
Go
56 lines
994 B
Go
1 year ago
|
package nlog
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"fmt"
|
||
|
"go.opentelemetry.io/otel/trace"
|
||
|
"runtime"
|
||
|
"strings"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
func spanIDFromContext(ctx context.Context) string {
|
||
|
spanCtx := trace.SpanContextFromContext(ctx)
|
||
|
if spanCtx.HasSpanID() {
|
||
|
return spanCtx.SpanID().String()
|
||
|
}
|
||
|
|
||
|
return ""
|
||
|
}
|
||
|
|
||
|
func traceIDFromContext(ctx context.Context) string {
|
||
|
spanCtx := trace.SpanContextFromContext(ctx)
|
||
|
if spanCtx.HasTraceID() {
|
||
|
return spanCtx.TraceID().String()
|
||
|
}
|
||
|
|
||
|
return ""
|
||
|
}
|
||
|
|
||
|
func getCaller(callDepth int) string {
|
||
|
_, file, line, ok := runtime.Caller(callDepth)
|
||
|
if !ok {
|
||
|
return ""
|
||
|
}
|
||
|
|
||
|
return prettyCaller(file, line)
|
||
|
}
|
||
|
|
||
|
func getTimestamp() string {
|
||
|
return time.Now().Format(timeFormat)
|
||
|
}
|
||
|
|
||
|
func prettyCaller(file string, line int) string {
|
||
|
idx := strings.LastIndexByte(file, '/')
|
||
|
if idx < 0 {
|
||
|
return fmt.Sprintf("%s:%d", file, line)
|
||
|
}
|
||
|
|
||
|
idx = strings.LastIndexByte(file[:idx], '/')
|
||
|
if idx < 0 {
|
||
|
return fmt.Sprintf("%s:%d", file, line)
|
||
|
}
|
||
|
|
||
|
return fmt.Sprintf("%s:%d", file[idx+1:], line)
|
||
|
}
|