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) }