You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2026-06-03 18:35:08 +02:00
Identify logger with schemaURL in global logger provider (#5375)
Fix #5366
This commit is contained in:
@@ -15,7 +15,7 @@ import (
|
||||
// instLib defines the instrumentation library a logger is created for.
|
||||
//
|
||||
// Do not use sdk/instrumentation (API cannot depend on the SDK).
|
||||
type instLib struct{ name, version string }
|
||||
type instLib struct{ name, version, schemaURL string }
|
||||
|
||||
type loggerProvider struct {
|
||||
embedded.LoggerProvider
|
||||
@@ -37,7 +37,11 @@ func (p *loggerProvider) Logger(name string, options ...log.LoggerOption) log.Lo
|
||||
}
|
||||
|
||||
cfg := log.NewLoggerConfig(options...)
|
||||
key := instLib{name, cfg.InstrumentationVersion()}
|
||||
key := instLib{
|
||||
name: name,
|
||||
version: cfg.InstrumentationVersion(),
|
||||
schemaURL: cfg.SchemaURL(),
|
||||
}
|
||||
|
||||
if p.loggers == nil {
|
||||
l := &logger{name: name, options: options}
|
||||
|
||||
@@ -158,3 +158,39 @@ func TestDelegation(t *testing.T) {
|
||||
assert.Equal(t, 1, post.(*testLogger).enabledN, "Enabled not delegated")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoggerIdentity(t *testing.T) {
|
||||
type id struct{ name, ver, url string }
|
||||
|
||||
ids := []id{
|
||||
{"name-a", "version-a", "url-a"},
|
||||
{"name-a", "version-a", "url-b"},
|
||||
{"name-a", "version-b", "url-a"},
|
||||
{"name-a", "version-b", "url-b"},
|
||||
{"name-b", "version-a", "url-a"},
|
||||
{"name-b", "version-a", "url-b"},
|
||||
{"name-b", "version-b", "url-a"},
|
||||
{"name-b", "version-b", "url-b"},
|
||||
}
|
||||
|
||||
provider := &loggerProvider{}
|
||||
newLogger := func(i id) log.Logger {
|
||||
return provider.Logger(
|
||||
i.name,
|
||||
log.WithInstrumentationVersion(i.ver),
|
||||
log.WithSchemaURL(i.url),
|
||||
)
|
||||
}
|
||||
|
||||
for i, id0 := range ids {
|
||||
for j, id1 := range ids {
|
||||
l0, l1 := newLogger(id0), newLogger(id1)
|
||||
|
||||
if i == j {
|
||||
assert.Samef(t, l0, l1, "logger(%v) != logger(%v)", id0, id1)
|
||||
} else {
|
||||
assert.NotSamef(t, l0, l1, "logger(%v) == logger(%v)", id0, id1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user