Hello,
I have a tracer, that should log going in and out of a function:
class Tracer
{
public:
Tracer(Logger logger, std::string function, std::string file)
:
_logger(logger),
_function(function),
_file(file)
{}
~Tracer()
{
using namespace boost::log;
// attribute_cast(core::get()->get_global_attributes()["Line"]).set(1);
attribute_caststd::string>(core::get()->get_global_attributes()["File"]).set(_file);
attribute_caststd::string>(core::get()->get_global_attributes()["Function"]).set(_function);
BOOST_LOG_SEV(_logger, trivial::severity_level::trace) << "Leaving " << _function;
}
private:
Logger _logger;
std::string _function;
std::string _file;
};
This works fine, but as soon as I uncomment the line that sets the Line attribut I don't get any Leaving messages anymore.
The attributes are added beforehand like that:
using namespace boost::log;
add_common_attributes();
core::get()->add_global_attribute("Scope", attributes::named_scope());
core::get()->add_global_attribute("Rank", attributes::constant<int>(5));
core::get()->add_global_attribute("Line", attributes::mutable_constant<int>(5));
core::get()->add_global_attribute("File", attributes::mutable_constantstd::string(""));
core::get()->add_global_attribute("Function", attributes::mutable_constantstd::string(""));
Setting all other attributes, similiar to Line works fine. I'm puzzled because Line does not seem to be a reserved name, it works somewhere else and the boost::log sources reveal no relevant usages of that name.
What could be the problem here? I'm happy to send anyone the complate code (approx. 150 lines in total)
Thanks!
Florian