通过使用boost::asio::ip::tcp::iostream
和boost::log
,我尝试将日志记录发送到logstash等远程服务器。但我需要处理网络断开/重新连接。不幸的是,我找不到tcp::iostream
的任何方法。
ip::tcp::socket
中使用tcp::iostream
代替boost::log
吗?
谢谢。我的代码如下:
typedef boost::log::sinks::asynchronous_sink< boost::log::sinks::text_ostream_backend > tcp_sink;
boost::shared_ptr< tcp_sink > networkSink;
// init tcp stream
boost::shared_ptr< sinks::text_ostream_backend > backend =
boost::make_shared< sinks::text_ostream_backend >();
boost::shared_ptr< boost::asio::ip::tcp::iostream > stream = boost::make_shared< boost::asio::ip::tcp::iostream >();
stream->connect("logstash", "1111");
backend->add_stream(stream);
networkSink = boost::make_shared< tcp_sink >();
networkSink->set_formatter(fmt);
networkSink->set_filter(severity <= severityThreshold);
networkSink = boost::make_shared<tcp_sink>(backend );
logging::core::get()->add_sink(networkSink);