diff --git a/plugins/oculus/src/OculusBaseDisplayPlugin.cpp b/plugins/oculus/src/OculusBaseDisplayPlugin.cpp
index 29fc014a64..1ed5c9f22a 100644
--- a/plugins/oculus/src/OculusBaseDisplayPlugin.cpp
+++ b/plugins/oculus/src/OculusBaseDisplayPlugin.cpp
@@ -65,7 +65,7 @@ void OculusBaseDisplayPlugin::internalActivate() {
 
     if (!OVR_SUCCESS(ovr_ConfigureTracking(_session,
         ovrTrackingCap_Orientation | ovrTrackingCap_Position | ovrTrackingCap_MagYawCorrection, 0))) {
-        qWarning() << "Could not attach to sensor device";
+        logWarning("Failed to attach to sensor device");
     }
 
     // Parent class relies on our _session intialization, so it must come after that.
diff --git a/plugins/oculus/src/OculusDisplayPlugin.cpp b/plugins/oculus/src/OculusDisplayPlugin.cpp
index 71a858e1e8..8c3a676c61 100644
--- a/plugins/oculus/src/OculusDisplayPlugin.cpp
+++ b/plugins/oculus/src/OculusDisplayPlugin.cpp
@@ -67,7 +67,7 @@ void OculusDisplayPlugin::hmdPresent() {
         ovrLayerHeader* layers = &_sceneLayer.Header;
         ovrResult result = ovr_SubmitFrame(_session, _currentRenderFrameIndex, &_viewScaleDesc, &layers, 1);
         if (!OVR_SUCCESS(result)) {
-            qDebug() << result;
+            logWarning("Failed to present");
         }
     }
     _sceneFbo->Increment();
diff --git a/plugins/oculus/src/OculusHelpers.cpp b/plugins/oculus/src/OculusHelpers.cpp
index db65c72aac..170be05952 100644
--- a/plugins/oculus/src/OculusHelpers.cpp
+++ b/plugins/oculus/src/OculusHelpers.cpp
@@ -10,16 +10,34 @@
 
 #include <atomic>
 #include <QtCore/QLoggingCategory>
+
 using Mutex = std::mutex;
 using Lock = std::unique_lock<Mutex>;
 
-
 Q_DECLARE_LOGGING_CATEGORY(oculus)
 Q_LOGGING_CATEGORY(oculus, "hifi.plugins.oculus")
 
 static std::atomic<uint32_t> refCount { 0 };
 static ovrSession session { nullptr };
 
+inline ovrErrorInfo getError() {
+    ovrErrorInfo error;
+    ovr_GetLastErrorInfo(&error);
+    return error;
+}
+
+void logWarning(const char* what) {
+    qWarning(oculus) << what << ":" << getError().ErrorString;
+}
+
+void logFatal(const char* what) {
+    std::string error("[oculus] ");
+    error += what;
+    error += ": ";
+    error += getError().ErrorString;
+    qFatal(error.c_str());
+}
+
 bool oculusAvailable() {
     ovrDetectResult detect = ovr_Detect(0);
     return (detect.IsOculusServiceRunning && detect.IsOculusHMDConnected);
@@ -37,14 +55,14 @@ ovrSession acquireOculusSession() {
         init.ConnectionTimeoutMS = 0;
         init.LogCallback = nullptr;
         if (!OVR_SUCCESS(ovr_Initialize(nullptr))) {
-            qCWarning(oculus) << "Failed to initialize Oculus SDK";
+            logWarning("Failed to initialize Oculus SDK");
             return session;
         }
 
         Q_ASSERT(0 == refCount);
         ovrGraphicsLuid luid;
         if (!OVR_SUCCESS(ovr_Create(&session, &luid))) {
-            qCWarning(oculus) << "Failed to acquire Oculus session";
+            logWarning("Failed to acquire Oculus session");
             return session;
         }
     }
@@ -105,7 +123,7 @@ void SwapFramebufferWrapper::initColor() {
     destroyColor();
 
     if (!OVR_SUCCESS(ovr_CreateSwapTextureSetGL(_session, GL_SRGB8_ALPHA8, size.x, size.y, &color))) {
-        qFatal("Unable to create swap textures");
+        logFatal("Failed to create swap textures");
     }
 
     for (int i = 0; i < color->TextureCount; ++i) {
diff --git a/plugins/oculus/src/OculusHelpers.h b/plugins/oculus/src/OculusHelpers.h
index cd527b184b..e10e058ad2 100644
--- a/plugins/oculus/src/OculusHelpers.h
+++ b/plugins/oculus/src/OculusHelpers.h
@@ -14,6 +14,8 @@
 
 #include <gl/OglplusHelpers.h>
 
+void logWarning(const char* what);
+void logFatal(const char* what);
 bool oculusAvailable();
 ovrSession acquireOculusSession();
 void releaseOculusSession();