diff --git a/proxygen/httpserver/samples/hq/HQServer.cpp b/proxygen/httpserver/samples/hq/HQServer.cpp index e328b03488..1dd9b94aa4 100644 --- a/proxygen/httpserver/samples/hq/HQServer.cpp +++ b/proxygen/httpserver/samples/hq/HQServer.cpp @@ -175,7 +175,11 @@ QuicServerTransport::Ptr HQServerTransportFactory::make( std::shared_ptr ctx) noexcept { auto transport = quic::QuicHandshakeSocketHolder::makeServerTransport( evb, std::move(socket), std::move(ctx), this); - if (!params_.qLoggerPath.empty()) { + if (qloggerFactory_) { + if (auto logger = qloggerFactory_(quic::VantagePoint::Server)) { + transport->setQLogger(std::move(logger)); + } + } else if (!params_.qLoggerPath.empty()) { transport->setQLogger(std::make_shared( params_.qLoggerPath, params_.prettyJson, quic::VantagePoint::Server)); } diff --git a/proxygen/httpserver/samples/hq/HQServer.h b/proxygen/httpserver/samples/hq/HQServer.h index 500017558b..f2dad7d2a8 100644 --- a/proxygen/httpserver/samples/hq/HQServer.h +++ b/proxygen/httpserver/samples/hq/HQServer.h @@ -148,12 +148,19 @@ class HQServerTransportFactory , public quic::EarlyDataAppParamsHandler , private quic::QuicHandshakeSocketHolder::Callback { public: + using QLoggerFactory = + std::function(quic::VantagePoint)>; + explicit HQServerTransportFactory( const HQServerParams& params, HTTPTransactionHandlerProvider httpTransactionHandlerProvider, std::function onTransportReadyFn_); ~HQServerTransportFactory() override = default; + void setQLoggerFactory(QLoggerFactory fn) { + qloggerFactory_ = std::move(fn); + } + // Creates new quic server transport quic::QuicServerTransport::Ptr make( folly::EventBase* evb, @@ -206,6 +213,7 @@ class HQServerTransportFactory std::map alpnHandlers_; proxygen::H3EarlyDataHandler h3EarlyDataHandler_; quic::EarlyDataAppParamsHandler* defaultEarlyDataHandler_{nullptr}; + QLoggerFactory qloggerFactory_; }; } // namespace quic::samples