diff --git a/src/Viewer/fg_os_osgviewer.cxx b/src/Viewer/fg_os_osgviewer.cxx
index e54521a49..ae9409e68 100644
--- a/src/Viewer/fg_os_osgviewer.cxx
+++ b/src/Viewer/fg_os_osgviewer.cxx
@@ -34,6 +34,7 @@
 #include <simgear/compiler.h>
 #include <simgear/structure/exception.hxx>
 #include <simgear/debug/logstream.hxx>
+#include <simgear/debug/OsgIoCapture.hxx>
 #include <simgear/props/props_io.hxx>
 
 #include <osg/Camera>
@@ -183,48 +184,6 @@ static const char * getStereoMode()
     return "OFF";
 }
 
-/**
- * merge OSG output into our logging system, so it gets recorded to file,
- * and so we can display a GUI console with renderer issues, especially
- * shader compilation warnings and errors.
- */
-class NotifyLogger : public osg::NotifyHandler
-{
-public:
-  // note this callback will be invoked by OSG from multiple threads.
-  // fortunately our Simgear logging implementation already handles
-  // that internally, so we simply pass the message on.
-  virtual void notify(osg::NotifySeverity severity, const char *message)
-  {
-    // Detect whether a osg::Reference derived object is deleted with a non-zero
-    // reference count. In this case trigger a segfault to get a stack trace.
-    if( strstr(message, "the final reference count was") )
-    {
-      // as this is going to segfault ignore the translation of severity and always output the message.
-      SG_LOG(SG_GL, SG_ALERT, message);
-      int* trigger_segfault = 0;
-      *trigger_segfault = 0;
-      return;
-    }
-    SG_LOG(SG_GL, translateSeverity(severity), message);
-  }
-
-private:
-  sgDebugPriority translateSeverity(osg::NotifySeverity severity)
-  {
-    switch (severity) {
-      case osg::ALWAYS:
-      case osg::FATAL:  return SG_ALERT;
-      case osg::WARN:   return SG_WARN;
-      case osg::NOTICE:
-      case osg::INFO:   return SG_INFO;
-      case osg::DEBUG_FP:
-      case osg::DEBUG_INFO: return SG_DEBUG;
-      default: return SG_ALERT;
-    }
-  }
-};
-
 class NotifyLevelListener : public SGPropertyChangeListener
 {
 public:
diff --git a/test_suite/logging.cxx b/test_suite/logging.cxx
index 7fdb49fd1..809fc298f 100644
--- a/test_suite/logging.cxx
+++ b/test_suite/logging.cxx
@@ -20,6 +20,8 @@
 
 #include "logging.hxx"
 
+#include <simgear/debug/OsgIoCapture.hxx>
+
 
 // The global stream capture data structure.
 static capturedIO *_iostreams = NULL;
@@ -70,6 +72,9 @@ void setupLogging()
     // Set up the logstream testing mode.
     log.setTestingMode(true);
 
+    // OSG IO capture.
+    osg::setNotifyHandler(new NotifyLogger);
+
     // IO capture.
     capturedIO &obj = getIOstreams();
     log.addCallback(obj.callback_bulk);