
Michael Lacher wrote:
The way I see it there are two different things you need to consider when talking about pleasing everyone:
1) What can the logging library actually do. This includes the filtering possibilities, amount/types of sinks already included, extensibility, ...
I think its pretty straightforward how to actually implement channels, sinks, ... and therefore most logging libraries supporting these features will have a very similar design.
2) How to use the logging library. This includes the setting up of the logging, and the actual logging itself. The setup is only done once, so if it requires many API calls and can get somewhat complicated (if you use any special features) it doesn't really matter. But log calls themselves will actually number in the thousands. This is what i look for first when looking at a logging library:
Can I write a log message that logs what i want, when i want it and in the format i want it in a way thats easy and still looks sane ?
If this criteria is not fulfilled I would not use the library under any circumstance and I guess many users will think similar. As an example that was used earlier in this list:
logger << lazy(lambda::var(x) + ":" + y, _level = mpl::int_<2>());
Imho it is neither immediately apparent what this actually does (maybe to boost and C++ gurus it is) nor would i want to write something like this every time i log something.
Michael Lacher
I agree completely. I have no idea what that does either. I could speculate but theres no point. My needs would be both stream and macro logging. I need macro's for turning it off for release builds for example. Stream for general logging purposes. As far as configuration goes I believe some minimal support should be included such as reading in a specified text file but nothing more extravagant. If people want XML/Registry etc support it should be easy to add though. I am completely against automatic configuration. It should definitely be code initialized. Simple examples. DBG_LOG( "Null pointer we are now dying a hard death" ); vs logger << CLASS_WARNING << "File not found : " << filename << endl; With two completely different in many respects requirements satisfying everyones needs is the issue. Richard Day