输出用户定义的结构使用boost ::日志
Outputting user defined structure with boost::log
我正在尝试输出 boost :: asio :: streambuf 对象的内容 boost :: log 库。我定义了运算符<< 以下方式:
ostream& operator<<(ostream& ostr, const boost::asio::streambuf& buffer)
{
for (size_t i = 0; i < buffer.size(); ++i)
{
ostr << hex << (int) buffer_cast<const char*>(buffer.data())[i] << " ";
}
return ostr;
}
但是在尝试输出缓冲区的内容后:
BOOST_LOG_TRIVIAL(trace) << buffer;
我有以下错误:
在包含的文件中 /home/bobeff/work/asio_netcomm_poc/third_party/lib/boost/boost/boost/log/sources/record_ostream.hpp:31:0, 来自/home/bobeff/work/asio_netcomm_poc/third_party/lib/boost/boost/log/log/trivial.hpp:23, 来自/home/bobeff/work/asio_netcomm_poc/server/src/server.cpp:14: /home/bobeff/work/asio_netcomm_poc/third_party/lib/boost/boost/boost/log/log/utility/formatting_ostream.hpp: 在实例化'TypeName boost :: log :: v2_mt_posix :: aux :: enable_if_formatting_ostream :: type boost :: log :: v2_mt_posix :: operator&lt;&lt;&lt; [with streamt = boost :: log :: v2_mt_posix :: basic_formatting_ostream;t = boost :: asio :: basic_streambuf&lt;>;打字 boost :: log :: v2_mt_posix :: aux :: enable_if_formatting_ostream :: type = = boost :: log :: v2_mt_posix :: basic_formatting_ostream&amp;]': /home/bobeff/work/asio_netcomm_poc/third_party/lib/lib/boost/boost/boost/log/sources/record_ostream.hpp:212:51: 需要'typeName boost :: log :: v2_mt_posix :: aux :: enable_if_record_ostream :: type boost :: log :: v2_mt_posix :: operator&lt;&lt;&lt; [带有streamt = boost :: log :: v2_mt_posix :: basic_record_ostream;t = boost :: asio :: basic_streambuf&lt;>;typename boost :: log :: v2_mt_posix :: aux :: enable_if_record_ostream :: type = = boost :: log :: v2_mt_posix :: basic_record_ostream&amp;]' /home/bobeff/work/asio_netcomm_poc/server/src/server.cpp:88:47:
从这里需要 /home/bobeff/work/asio_netcomm_poc/third_party/lib/boost/boost/boost/log/log/utility/formatting_ostream.hpp:840:19: 错误:无法绑定 'boost :: log :: v2_mt_posix :: basic_formatting_ostream :: ostream_type {aka std :: basic_ostream}'lvalue to'std :: basic_ostream&amp;&amp;'' strm.stream()&lt;&lt;价值; ^ in from/usr/include/c /4.8/iostream:39:0, 来自/home/bobeff/work/asio_netcomm_poc/server/src/server.cpp:1: /USR/include/c /4.8/ostream:602:5:错误:初始化参数1 'std :: basic_ostream&lt; _chart,_traits>&amp; std ::操作员&lt;&lt;(std :: basic_ostream&lt; _chart,_traits>&amp;&amp;&amp;,const _tp&amp;) [with _chart = char;_traits = std :: char_traits;_tp = BOOST :: ASIO :: BASIC_STREAMBUF&lt;>]' 运算符&lt;&lt;(basic_ostream&lt; _chart,_traits>&amp;&amp; ___,const _tp&amp&amp&amp; __x) ^
输出缓冲区内容的正确方法是什么?
ADL找不到您的operator<<
。请参阅此答案的第一部分。
- boost日志文件无法创建sample.log文件
- 可视化如何在我的C++程序中最好地使用相同的Boost日志
- 使用cmake错误链接boost日志
- 磁盘已满时,Boost日志崩溃
- BOOST ::日志是每次运行应用程序时都可能旋转文件
- boost ::日志 - 使用库/插件内的独立严重性级别
- 使用boost ::日志配置文件变量
- 输出用户定义的结构使用boost ::日志
- Boost日志在链接到共享库时无法正常工作
- Boost日志链接器错误
- Boost日志:如何使用Boost_Log_GLOBAL_LOGGER_INIT指定同步接收器
- 为什么Boost日志记录器操作不是常量
- boost日志格式单一属性,带有logging::init_from_stream
- 避免Boost日志中的泄漏—琐碎的使用
- 使用boost日志,Valgrind检查内存泄漏
- 与Boost日志进行交叉编译链接期间未解决的符号
- Boost日志-为什么不编译
- 在项目中使用boost日志时出错
- 在OSX 10.7.2上使用boost 1.48的boost日志
- Boost日志不显示自定义时间戳