On 10/27/14, 1:49 PM, Dicebot via Digitalmars-d wrote:
On Monday, 27 October 2014 at 20:42:10 UTC, Martin Nowak wrote:
Say I want to add tracing/logging to
[`parseJson`](http://dlang.org/library/std/json/parseJSON.html) or
[`findRoot`](http://dlang.org/phobos/std_numeric.html#.findRoot)

This is exactly what is wrong :) Using std.logger inside Phobos itself is a big 
no. Actually even
finding yourself in position where you may want to do it indicates some Phobos 
design issue.

Why? I agree that large parts of phobos have little need for logging, but I question the general statement. What's so special about phobos that suggests that no part of it should ever log? How is it different from many other third party libraries that might be similar in nature?

Consider the std.net.curl. I find it entirely reasonable to consider that it would have logging added to it. It could be argued that that part of phobos could/should be removed, but ignore that for now and pretend its a full re-implementation of an http client instead if that helps.

Consider the scheduler work that Sean is doing. I'll bet he's got printf's in there at some strategic points for debugging right now. Most of those I can easily see translating into trace level logging.

The same holds for any higher level tasks that have any sort of complexities and need a way for developers to witness how those subsystems are executing after the fact.

My key point, phobos isn't and shouldn't be considered special here. If it shouldn't be doing logging, then why and why doesn't that same logic apply to almost every other library that developers are going to use?

I suspect there's some philosophical differences at play.

My 2 cents,
Brad

Reply via email to