
On 15 March 2010 14:31, Vladimir Prus <ghost@cs.msu.su> wrote:
On Monday 15 March 2010 22:50:59 Steven Watanabe wrote:
// myproject.hpp #ifndef COMPONENT #define COMPONENT "unspecified" #endif
#define DEBUG BOOST_LOG_XXX(mygloballogger, COMPONENT, debug)
I guess that what I'd like is a way to specify arbitrary attributes when logging, so BOOST_LOG_XXX would be defined like
#define BOOST_LOG_XXX(lg, component, severity) BOOST_LOG_WITH_ATTRS(lg, ("Severity", severity)("Channel", component))
Yes, I think this would be nice.
There's another thing about component/severity logging that I have apparently forgot about -- filtering. It is surely necessary to change filtered components dynamically -- either while the application is running, or between runs, therefore lambda expression that compares to a fixed string will not be enough -- we need a lookup in a map. It's not obvious to me how to form a lambda expression to do a lookup in a map using the library, e.g. something like:
enabled_components.count(attr<string>("Component"))
This was part of my questions too ( http://comments.gmane.org/gmane.comp.lib.boost.devel/200785). I found it quite difficult to setup the system so could enable/disable logs to std::cout dynamically, based on component (although I called it System) and severity. That's why the lambda style filters didn't help me, since they were designed for statically defining filters, while I need to be able to modify them at runtime. / christian