(t *testing.T)
| 113 | } |
| 114 | |
| 115 | func TestOTelSpanLogger_CustomLogger(t *testing.T) { |
| 116 | t.Cleanup(spanExporter.Reset) |
| 117 | |
| 118 | var expectedTraceID string |
| 119 | var logged []map[string]string |
| 120 | // logger will store all non-"trace_id" keys in `logged` |
| 121 | // it will check that "trace_id" is equal to expectedTraceID. |
| 122 | var logger funcLogger = func(keyvals ...interface{}) error { |
| 123 | values := map[string]string{} |
| 124 | var loggedTraceID string |
| 125 | for i := 0; i < len(keyvals); i += 2 { |
| 126 | k := keyvals[i].(string) |
| 127 | v := keyvals[i+1].(string) // we only log strings. |
| 128 | if k == "trace_id" { |
| 129 | loggedTraceID = v |
| 130 | } else { |
| 131 | values[k] = v |
| 132 | } |
| 133 | } |
| 134 | require.Equal(t, expectedTraceID, loggedTraceID) |
| 135 | logged = append(logged, values) |
| 136 | return nil |
| 137 | } |
| 138 | resolver := tenant.NewMultiResolver() |
| 139 | |
| 140 | span, ctx := NewOTel(context.Background(), logger, tracer, "test", resolver) |
| 141 | expectedTraceID = trace.SpanFromContext(ctx).SpanContext().TraceID().String() |
| 142 | _ = span.Log("msg", "original spanlogger") |
| 143 | |
| 144 | span = FromContext(ctx, log.NewNopLogger(), resolver) |
| 145 | _ = span.Log("msg", "restored spanlogger") |
| 146 | |
| 147 | // No trace_id expected for the next one. |
| 148 | expectedTraceID = "" |
| 149 | span = FromContext(context.Background(), logger, resolver) |
| 150 | _ = span.Log("msg", "fallback spanlogger") |
| 151 | |
| 152 | expect := []map[string]string{ |
| 153 | {"method": "test", "msg": "original spanlogger"}, |
| 154 | {"msg": "restored spanlogger"}, |
| 155 | {"msg": "fallback spanlogger"}, |
| 156 | } |
| 157 | require.Equal(t, expect, logged) |
| 158 | } |
| 159 | |
| 160 | func TestOTelSpanLogger_SetSpanAndLogTag(t *testing.T) { |
| 161 | t.Cleanup(spanExporter.Reset) |
nothing calls this directly
no test coverage detected