dhtproxy: pipe restinio logs to opendht logger

This commit is contained in:
Seva committed 2019-05-29 16:02:25 -04:00
1 parent 3252e6daa3
commit 330ad8ed12
3 files changed
+38 -6

No files matched your search

+33 -2
View File
@@ -38,10 +38,41 @@
#include <json/json.h>
#endif
class opendht_logger_t
{
public:
opendht_logger_t(const dht::Logger &logger):
m_logger(logger)
{}
template <typename Builder>
void trace(Builder && msg_builder){
m_logger.d("[restinio] %s", msg_builder().c_str());
}
template <typename Builder>
void info(Builder && msg_builder){
m_logger.d("[restinio] %s", msg_builder().c_str());
}
template <typename Builder>
void warn(Builder && msg_builder){
m_logger.w("[restinio] %s", msg_builder().c_str());
}
template <typename Builder>
void error(Builder && msg_builder){
m_logger.e("[restinio] %s", msg_builder().c_str());
}
private:
dht::Logger m_logger;
};
using RestRouter = restinio::router::express_router_t<>;
using RestRouterTraits = restinio::traits_t<
restinio::asio_timer_manager_t,
restinio::single_threaded_ostream_logger_t,
opendht_logger_t, //restinio::single_threaded_ostream_logger_t,
RestRouter>;
using RequestStatus = restinio::request_handling_status_t;
using ResponseByParts = restinio::chunked_output_t;
@@ -70,7 +101,7 @@ public:
* @note if the server fails to start (if port is already used or reserved),
* it will fails silently
*/
DhtProxyServer(std::shared_ptr<DhtRunner> dht, in_port_t port = 8000, const std::string& pushServer = "");
DhtProxyServer(std::shared_ptr<DhtRunner> dht, in_port_t port = 8000, const std::string& pushServer = "", const Logger& logger = {});
virtual ~DhtProxyServer();
DhtProxyServer(const DhtProxyServer& other) = delete;
+4 -3
View File
@@ -51,8 +51,8 @@ constexpr const std::chrono::minutes PRINT_STATS_PERIOD {2};
constexpr const size_t IO_THREADS_MAX {64};
DhtProxyServer::DhtProxyServer(std::shared_ptr<DhtRunner> dht, in_port_t port , const std::string& pushServer)
: dht_(dht), threadPool_(new ThreadPool(IO_THREADS_MAX)), pushServer_(pushServer)
DhtProxyServer::DhtProxyServer(std::shared_ptr<DhtRunner> dht, in_port_t port , const std::string& pushServer, const Logger &logger)
: dht_(dht), threadPool_(new ThreadPool(IO_THREADS_MAX)), pushServer_(pushServer)
{
if (not dht_)
throw std::invalid_argument("A DHT instance must be provided");
@@ -69,11 +69,12 @@ DhtProxyServer::DhtProxyServer(std::shared_ptr<DhtRunner> dht, in_port_t port ,
jsonBuilder_["commentStyle"] = "None";
jsonBuilder_["indentation"] = "";
server_thread = std::thread([this, port](){
server_thread = std::thread([this, port, &logger](){
using namespace std::chrono;
auto maxThreads = std::thread::hardware_concurrency() - 1;
auto restThreads = maxThreads > 1 ? maxThreads : 1;
auto settings = restinio::on_thread_pool<RestRouterTraits>(restThreads);
settings.logger(logger);
settings.port(port);
settings.protocol(restinio::asio_ns::ip::tcp::v6());
settings.request_handler(this->createRestRouter());
+1 -1
View File
@@ -551,7 +551,7 @@ main(int argc, char **argv)
#endif
if (params.proxyserver != 0) {
#ifdef OPENDHT_PROXY_SERVER
proxies.emplace(params.proxyserver, std::unique_ptr<DhtProxyServer>(new DhtProxyServer(node, params.proxyserver, params.pushserver)));
proxies.emplace(params.proxyserver, std::unique_ptr<DhtProxyServer>(new DhtProxyServer(node, params.proxyserver, params.pushserver, *context.logger)));
#else
std::cerr << "DHT proxy server requested but OpenDHT built without proxy server support." << std::endl;
exit(EXIT_FAILURE);