Hi Andrey,
Those are just examples in the docs. These particular examples don't
exist as standalone files. You can find global loggers used in a number
of other examples in the libs/log/example directory.
The global loggers is working well, but I could not compile the local
log severity, here is the code:
BOOST_LOG_INLINE_GLOBAL_LOGGER_CTOR_ARGS(my_logger,
boost::log::sources::channel_logger_mt< >,
(boost::log::keywords::channel = "general"))
typedef enum {
INFO,
DEBUG,
WARNING,
ERROR,
CRITICAL
} ServerityLevel_t;
template std::basic_ostream< CharT,
TraitsT >& operator << (std::basic_ostream< CharT, TraitsT >& strm,
ServerityLevel_t lvl) {
static const char* const str[] = {
"INFO",
"DEBUG",
"WARNING",
"ERROR",
"CRITICAL"
};
if (static_cast< std::size_t >(lvl) < (sizeof(str) / sizeof(*str))) {
strm << str[lvl];
} else {
strm << static_cast< int >(lvl);
}
return strm;
}
#define LOG(severity) BOOST_LOG_STREAM_WITH_PARAMS((my_logger::get()),
(SetGetAttrib("FileName",
PathToFilename(__FILE__)))(SetGetAttrib("LineNumber", (unsigned
int)__LINE__))(ServerityLevel_t::severity))
/usr/include/boost/log/sources/channel_feature.hpp:171:60: error: no
match for ‘operator[]’ (operand types are ‘const ServerityLevel_t’ and
‘boost::parameter::aux::default_’)
return open_record_with_channel_unlocked(args,
args[keywords::channel | parameter::void_()]);
Obviously, you used BOOST_LOG_SEV where I was using
BOOST_LOG_STREAM_WITH_PARAMS, the compiler seems to complain missing
operator[], but I have no clue how to define it.
Thank you.