Skip to content

InProcessResolver does not use provided Logger #522

Open
@appleton

Description

@appleton

Given configuration like this:

logger := logr.FromSlogHandler(slog.Default().Handler())
provider = flagd.NewProvider(
	flagd.WithLogger(logger),
	flagd.WithInProcessResolver(),
	flagd.WithOfflineFilePath(path),
)

I would expect the provided logger instance to be used but I actually see log output implying that it is not and when I dug into the provider initialization I see that the configured logger is ignored and that a new instance is created:

func NewInProcessService(cfg Configuration) *InProcess {
log := logger.NewLogger(zap.NewRaw(), false)
iSync, uri := makeSyncProvider(cfg, log)
// service specific metadata
var svcMetadata map[string]interface{}
if cfg.Selector != "" {
svcMetadata = make(map[string]interface{}, 1)
svcMetadata["scope"] = cfg.Selector
}
flagStore := store.NewFlags()
flagStore.FlagSources = append(flagStore.FlagSources, uri)
return &InProcess{
evaluator: evaluator.NewJSON(log, flagStore),
events: make(chan of.Event, 5),
logger: log,
listenerShutdown: make(chan interface{}),
serviceMetadata: svcMetadata,
sync: iSync,
}
}

This is tricky in my app because we don't use JSON as our log format so we end up with weird looking logs like this:

time=2024-06-06T10:02:58.161598000+01:00 level=INFO msg="Starting up server"
time=2024-06-06T10:02:58.258284000+01:00 level=INFO msg="Tracing is enabled" endpoint=localhost:4318 service=core-api
{"level":"info","ts":"2024-06-06T10:02:58+01:00","msg":"operating in in-process mode with offline flags sourced from /<redacted>/cmd/api/features.json"}
{"level":"info","ts":"2024-06-06T10:02:58+01:00","msg":"Starting filepath sync notifier"}
{"level":"info","ts":"2024-06-06T10:02:58+01:00","msg":"watching filepath: /Users/andy/poolside/forge/cmd/api/features.json"}
time=2024-06-06T10:02:58.276403000+01:00 level=INFO msg="Database is ready to serve"

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions