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'。 –