1
我已经成功构建了一个boost示例rotate_file(boost 1.63)使用我自己的cmake文件而不是jamfile。然后,我必须补充以下修改:boost log - 使用全局记录器时未定义的参考
#include <boost/log/sources/global_logger_storage.hpp>
...
//before main
BOOST_LOG_GLOBAL_LOGGER(my_logger, src::logger)
...
//src::logger lg;
src::logger& lg = my_logger::get();
的程序也包含此行:
#define BOOST_ALL_DYN_LINK
这里有cmake的库:
target_link_libraries(test "libboost_log.so"
"libboost_log_setup.so"
"libboost_date_time.so"
"libboost_filesystem.so"
"libboost_system.so"
"libboost_thread.so")
这条线:
src::logger& lg = my_logger::get();
生成:
global_logger_storage.hpp:154: error: undefined reference to `my_logger::construct_logger()'
有什么问题?
编辑
我添加水槽和其他属性是这样的:
logging::core::get()->add_sink(sink);
logging::core::get()->add_global_attribute("TimeStamp", attrs::local_clock());
logging::core::get()->add_global_attribute("RecordID", attrs::counter< unsigned int >());
因此在BOOST_LOG_GLOBAL_LOGGER_INIT结束时,我只需要添加:
src::logger logger;
return logger;
它的工作原理。
作品,请参阅编辑 – Irbis
正如您在文档中看到的(http://www.boost.org/doc/libs/1_63_0/libs/log/doc/html/log/detailed/sources.html#log .detailed.sources.global_storage),还有一些其他的宏来定义记录器的初始化。通过编辑判断,您可以使用'BOOST_LOG_GLOBAL_LOGGER_DEFAULT'。 –