
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")) So I wonder: 1. What is the actual syntax to do this inside lambda expression. 2. Can we implement a more convenient out-of-box mechanism. For example: logging::core()->enabled_components().add("c1") where this automatically affects the "Component" attribute. - Volodya