Overall, I think this is the functional direction we need to go. I specifically like that this will simplify C++ clients. I also think the tehcnical proposal to use something like spdlog makes sense. More on both below.
The scope of the functional spec needs to be made clearer. I’m pretty sure the intent is to
- replace the existing writer interfaces in the services methods with a static logger type output
That just needs to front and center and the implications spelled out.
These are currently used for output of configuration, output of values (like draws, iterations, etc.), and for messages from the interface (refresh, errors and warnings, etc.) Given that there was previous discussion on making these separate, I think it needs to be made clear this proposal will combine everything into one type of output. Presumably the interrupts will be handled separately from all of this.
The question is then how easy it is to route back out again. The draws need to go into memory, say, and the console messages to the console. This is already implicit in the code in the technical proposal that sets up a console logger and data logger, but an example of a message would help here.
Given what we need to implement, it makes sense to use a third party library. Obviously, we’d like to know how reliable that package is. Are other people using it and is it being actively maintained? Is the source easy enough to follow that we could potentially fix it? Do they have a responsive mailing list?
Is there a way to control precision of floating-point output?
My only concern is how fast it’s going to be. I can imagine dispatch on tags and thread safety and converting to ASCII and time stamping getting expensive, but then I can also totally imagine that’s all dominated by ASCII to floating point.
A final technical design’s going to have to make sure all of our current output messages can be handled. Krzysztof laid down a survey somewhere that should be very useful in this. And it’s not just me. We have to make sure this is usable from the interface point of view, so I’m specifically going to want to hear from: