diff --git a/indra/llcorehttp/_httpoprequest.cpp b/indra/llcorehttp/_httpoprequest.cpp
index 0f21401ce21818f4344c7a29d1b5bbc31392accb..46a16968c95f0babac6c057a1f8100c535bb8d3c 100644
--- a/indra/llcorehttp/_httpoprequest.cpp
+++ b/indra/llcorehttp/_httpoprequest.cpp
@@ -46,7 +46,6 @@
 
 #include "llhttpconstants.h"
 #include "llproxy.h"
-#include "llmessagelog.h"
 #include "httpstats.h"
 
 // *DEBUG:  "[curl:bugs] #1420" problem and testing.
@@ -125,6 +124,7 @@ static const char * const LOG_CORE("CoreHttp");
 namespace LLCore
 {
 
+std::function<void(LLCore::HttpResponse* response)> HttpOpRequest::sMessageLogFunc = nullptr;
 
 HttpOpRequest::HttpOpRequest()
 	: HttpOperation(),
@@ -280,7 +280,7 @@ void HttpOpRequest::visitNotifier(HttpRequest * request)
 		response->setTransferStats(stats);
 
 		mUserHandler->onCompleted(this->getHandle(), response);
-		if (LLMessageLog::haveLogger())  LLMessageLog::log(response);
+		if (sMessageLogFunc != nullptr) sMessageLogFunc(response);
 		response->release();
 	}
 }
diff --git a/indra/llcorehttp/_httpoprequest.h b/indra/llcorehttp/_httpoprequest.h
index 5d7205ccfa4267078ba2667870234a1d45546bff..fc35c25b4e25ce2826e950b702500d54345cbc0f 100644
--- a/indra/llcorehttp/_httpoprequest.h
+++ b/indra/llcorehttp/_httpoprequest.h
@@ -236,6 +236,9 @@ class HttpOpRequest final : public HttpOperation
 	HttpTime			mPolicyMinRetryBackoff; // initial delay between retries (mcs)
 	HttpTime			mPolicyMaxRetryBackoff;
 	U64				mRequestId;
+
+	static void setMessageLogFunc(std::function<void(LLCore::HttpResponse* response)> func) { sMessageLogFunc = func;} 
+	static std::function<void(LLCore::HttpResponse* response)> sMessageLogFunc;
 };  // end class HttpOpRequest
 
 
diff --git a/indra/llcorehttp/_httprequestqueue.cpp b/indra/llcorehttp/_httprequestqueue.cpp
index 86670befae6a313e59c2df332f26e0f8be28a95d..71e49ff0e7a9b7c2afcf082da4f71a5c497cc01b 100644
--- a/indra/llcorehttp/_httprequestqueue.cpp
+++ b/indra/llcorehttp/_httprequestqueue.cpp
@@ -28,7 +28,6 @@
 
 #include "_httpoperation.h"
 #include "_mutex.h"
-#include "llmessagelog.h"
 
 
 using namespace LLCoreInt;
@@ -37,6 +36,7 @@ namespace LLCore
 {
 
 HttpRequestQueue * HttpRequestQueue::sInstance(NULL);
+std::function<void(const HttpRequestQueue::opPtr_t &)> HttpRequestQueue::sMessageLogFunc = nullptr;
 
 
 HttpRequestQueue::HttpRequestQueue()
@@ -80,7 +80,7 @@ HttpStatus HttpRequestQueue::addOp(const HttpRequestQueue::opPtr_t &op, bool log
 			// Return op and error to caller
 			return HttpStatus(HttpStatus::LLCORE, HE_SHUTTING_DOWN);
 		}
-        if (loggable && LLMessageLog::haveLogger()) { LLMessageLog::log(op); }
+        if (loggable && sMessageLogFunc != nullptr ) { sMessageLogFunc(op); }
 		wake = mQueue.empty();
 		mQueue.push_back(op);
 	}
diff --git a/indra/llcorehttp/_httprequestqueue.h b/indra/llcorehttp/_httprequestqueue.h
index 99baba9e30f8ba99cb3e58839bb6c1a913606abb..e8e506e4c1725323ada6e5add6480576e06e13fd 100644
--- a/indra/llcorehttp/_httprequestqueue.h
+++ b/indra/llcorehttp/_httprequestqueue.h
@@ -126,8 +126,11 @@ class HttpRequestQueue final : public LLCoreInt::RefCounted
 	/// Threading:  callable by any thread.
 	bool stopQueue();
 	
+	static void setMessageLogFunc(std::function<void(const HttpRequestQueue::opPtr_t &)> func) { sMessageLogFunc = func;} 
+
 protected:
 	static HttpRequestQueue *			sInstance;
+	static std::function<void(const HttpRequestQueue::opPtr_t &)> sMessageLogFunc;
 	
 protected:
 	OpContainer							mQueue;
diff --git a/indra/llmessage/llmessagelog.cpp b/indra/llmessage/llmessagelog.cpp
index 196232c78a6430695d07f557a3fde680308d0a8a..0e155215b83a0104eedf98cf520955c3cec95cbd 100644
--- a/indra/llmessage/llmessagelog.cpp
+++ b/indra/llmessage/llmessagelog.cpp
@@ -25,6 +25,7 @@
 #include <boost/circular_buffer.hpp>
 #include <utility>
 #include "_httpoprequest.h"
+#include "_httprequestqueue.h"
 
 static boost::circular_buffer<LogPayload> sRingBuffer = boost::circular_buffer<LogPayload>(2048);
 
@@ -102,7 +103,15 @@ void LLMessageLog::setCallback(LogCallback callback)
 		{
 			callback(m);
 		}
+		LLCore::HttpRequestQueue::setMessageLogFunc([](const LLCore::HttpRequestQueue::opPtr_t& op) { LLMessageLog::log(op); });
+		LLCore::HttpOpRequest::setMessageLogFunc([](LLCore::HttpResponse* response) { LLMessageLog::log(response); });
 	}
+	else
+	{
+		LLCore::HttpOpRequest::setMessageLogFunc(nullptr);
+		LLCore::HttpRequestQueue::setMessageLogFunc(nullptr);
+	}
+
 	sCallback = callback;
 }