What I"ve just done is define a logger with an attribute in each class:
#define DECLARE_LOGGER(name) static ::youtils::Logger::logger_type&
getLogger__() \
{ \
static youtils::SeverityLoggerWithAttribute logger(name); \
return logger.get(); \
}
Where:
class SeverityLoggerWithAttribute
{
public:
SeverityLoggerWithAttribute(const std::string& name,
const std::string& /*subsystem*/ = "no
subsystem")
{
logger_.add_attribute(LOGGER_ATTRIBUTE_ID,
boost::log::attributes::constant
Hi all,
I want to use boost's log library to output messages to the console which feature a per-message severity and a per-file channel.
I already tried two approaches, none of which was satisfying:
=== 1. approach ===
The class boost::log::sources::severity_channel_logger supports both severity and channel and I could define it in each source file like so:
--- 8< ---
BOOST_LOG_INLINE_GLOBAL_LOGGER_DEFAULT( log, boost::log::sources::severity_channel_logger< boost::log::trivial::severity_level, std::string > )
--- >8 ---
Unfortunately, using it like this requires me to redundantly add the channel to each log message, which is very inconvenient because it is the same for all logs in the file.
--- 8< ---
// Message.cpp
BOOST_LOG_CHANNEL_SEV(log, Message, trace) << "Hello, world";
--- >8 ---
=== 2. approach ===
I defined my logger like this:
--- 8< ---
BOOST_LOG_INLINE_GLOBAL_LOGGER_DEFAULT( log, boost::log::sources::severity_logger< boost::log::trivial::severity_level > )
--- >8 ---
Then, in each file, I manually set the "Channel" attribute for the logger, like so:
--- 8< ---
// Message.cpp
log::get().add_attribute( "Channel", boost::log::attributes::make_constant("Message"));
--- >8 ---
This works, but as the "log" object seems to be stored globally, I would have to "invent" new names for the logger object in each file. This is both insecure and prevents the usage of macros (I think).
So here's the question:
What would be the recommended / a convenient way to add a per-file constant channel to log messages?
Thanks in advance!
Timo _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users