diff --git a/indra/cmake/FMODSTUDIO.cmake b/indra/cmake/FMODSTUDIO.cmake
index c5b21ac4e5acd23d951bb31379b2a18675fce063..9a1cdff6cb461d2bfd55701b8c9b08e8983c0ccf 100644
--- a/indra/cmake/FMODSTUDIO.cmake
+++ b/indra/cmake/FMODSTUDIO.cmake
@@ -2,7 +2,7 @@
 
 include_guard()
 
-# FMODSTUDIO can be set when launching the make using the argument -DFMODSTUDIO:BOOL=ON
+# FMODSTUDIO can be set when launching the make using the argument -DUSE_FMODSTUDIO:BOOL=ON
 # When building using proprietary binaries though (i.e. having access to LL private servers),
 # we always build with FMODSTUDIO.
 if (INSTALL_PROPRIETARY)
diff --git a/indra/llcommon/llcallstack.h b/indra/llcommon/llcallstack.h
index 5acf04a49fa16c4355f112fc1e0047f5d5222009..d5a2b7b1572be966dbd02d4056f597007984ed47 100644
--- a/indra/llcommon/llcallstack.h
+++ b/indra/llcommon/llcallstack.h
@@ -79,9 +79,9 @@ struct LLContextStatus
 
 LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLContextStatus& context_status);
 
-#define dumpStack(tag) \
-    if (debugLoggingEnabled(tag)) \
-    { \
-        LLCallStack cs; \
-        LL_DEBUGS(tag) << "STACK:\n" << "====================\n" << cs << "====================" << LL_ENDL; \
-    }
+#define dumpStack(tag)                          \
+    LL_DEBUGS(tag) << "STACK:\n"                \
+                   << "====================\n"  \
+                   << LLCallStack()             \
+                   << "===================="    \
+                   << LL_ENDL;
diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp
index 56fb7c21ca46c51a2e7bc1e562186aff1de049ed..5aa8558878ee93bcd0d785566ee806622f8978f3 100644
--- a/indra/llcommon/llerror.cpp
+++ b/indra/llcommon/llerror.cpp
@@ -1609,19 +1609,5 @@ namespace LLError
     }
 }
 
-bool debugLoggingEnabled(const std::string& tag)
-{
-    LLMutexTrylock lock(getMutex<LOG_MUTEX>(), 5);
-    if (!lock.isLocked())
-    {
-        return false;
-    }
-
-    SettingsConfigPtr s = Globals::getInstance()->getSettingsConfig();
-    LLError::ELevel level = LLError::LEVEL_DEBUG;
-    bool res = checkLevelMap(s->mTagLevelMap, tag, level);
-    return res;
-}
-
 
 
diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h
index b7dec3cb7fb08469b03f327c7e619fdd18a66b5d..08eb323c4a7042704e09ed983469c31155d0521c 100644
--- a/indra/llcommon/llerror.h
+++ b/indra/llcommon/llerror.h
@@ -467,7 +467,29 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG;
 		LLError::CallSite& _site(_sites[which]);                        \
 		lllog_test_()
 
-// Check at run-time whether logging is enabled, without generating output
+/*
+// Check at run-time whether logging is enabled, without generating output.
+Resist the temptation to add a function like this because it incurs the
+expense of locking and map-searching every time control reaches it.
 bool debugLoggingEnabled(const std::string& tag);
 
+Instead of:
+
+if debugLoggingEnabled("SomeTag")
+{
+    // ... presumably expensive operation ...
+    LL_DEBUGS("SomeTag") << ... << LL_ENDL;
+}
+
+Use this:
+
+LL_DEBUGS("SomeTag");
+// ... presumably expensive operation ...
+LL_CONT << ...;
+LL_ENDL;
+
+LL_DEBUGS("SomeTag") performs the locking and map-searching ONCE, then caches
+the result in a static variable.
+*/ 
+
 #endif // LL_LLERROR_H
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 651c04f32c33cadb586671943d4fe793770cecbe..e50da8e8363f43663cacf6121abf35a264671ae7 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -2308,8 +2308,6 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
 
     LLWindowWin32* window_imp = (LLWindowWin32*)GetWindowLongPtr(h_wnd, GWLP_USERDATA);
 
-    bool debug_window_proc = false; // gDebugWindowProc || debugLoggingEnabled("Window");
-
     if (NULL != window_imp)
     {
         // Juggle to make sure we can get negative positions for when
@@ -2336,11 +2334,8 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
         case WM_DEVICECHANGE:
         {
             LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_DEVICECHANGE");
-            if (debug_window_proc)
-            {
-                LL_INFOS("Window") << "  WM_DEVICECHANGE: wParam=" << w_param
-                    << "; lParam=" << l_param << LL_ENDL;
-            }
+            LL_INFOS("Window") << "  WM_DEVICECHANGE: wParam=" << w_param
+                << "; lParam=" << l_param << LL_ENDL;
             if (w_param == DBT_DEVNODES_CHANGED || w_param == DBT_DEVICEARRIVAL)
             {
                 WINDOW_IMP_POST(window_imp->mCallbacks->handleDeviceChange(window_imp));
@@ -2404,14 +2399,11 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
                     BOOL activating = (BOOL)w_param;
                     BOOL minimized = window_imp->getMinimized();
 
-                    if (debug_window_proc)
-                    {
-                        LL_INFOS("Window") << "WINDOWPROC ActivateApp "
-                            << " activating " << S32(activating)
-                            << " minimized " << S32(minimized)
-                            << " fullscreen " << S32(window_imp->mFullscreen)
-                            << LL_ENDL;
-                    }
+                    LL_INFOS("Window") << "WINDOWPROC ActivateApp "
+                        << " activating " << S32(activating)
+                        << " minimized " << S32(minimized)
+                        << " fullscreen " << S32(window_imp->mFullscreen)
+                        << LL_ENDL;
 
                     if (window_imp->mFullscreen)
                     {
@@ -2456,13 +2448,10 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
                     // JC - I'm not sure why, but if we don't report that we handled the 
                     // WM_ACTIVATE message, the WM_ACTIVATEAPP messages don't work 
                     // properly when we run fullscreen.
-                    if (debug_window_proc)
-                    {
-                        LL_INFOS("Window") << "WINDOWPROC Activate "
-                            << " activating " << S32(activating)
-                            << " minimized " << S32(minimized)
-                            << LL_ENDL;
-                    }
+                    LL_INFOS("Window") << "WINDOWPROC Activate "
+                        << " activating " << S32(activating)
+                        << " minimized " << S32(minimized)
+                        << LL_ENDL;
                 });
             
             break;
@@ -2541,12 +2530,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
                     window_imp->mRawLParam = l_param;
 
                     {
-                        if (debug_window_proc)
-                        {
-                            LL_INFOS("Window") << "Debug WindowProc WM_KEYDOWN "
-                                << " key " << S32(w_param)
-                                << LL_ENDL;
-                        }
+                        LL_INFOS("Window") << "Debug WindowProc WM_KEYDOWN "
+                            << " key " << S32(w_param)
+                            << LL_ENDL;
                         
                         gKeyboard->handleKeyDown(w_param, mask);
                     }
@@ -2571,12 +2557,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
                 {
                     LL_RECORD_BLOCK_TIME(FTM_KEYHANDLER);
 
-                    if (debug_window_proc)
-                    {
-                        LL_INFOS("Window") << "Debug WindowProc WM_KEYUP "
-                            << " key " << S32(w_param)
-                            << LL_ENDL;
-                    }
+                    LL_INFOS("Window") << "Debug WindowProc WM_KEYUP "
+                        << " key " << S32(w_param)
+                        << LL_ENDL;
                     gKeyboard->handleKeyUp(w_param, mask);
                 }
             });
@@ -2586,10 +2569,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
         case WM_IME_SETCONTEXT:
         {
             LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_IME_SETCONTEXT");
-            if (debug_window_proc)
-            {
-                LL_INFOS("Window") << "WM_IME_SETCONTEXT" << LL_ENDL;
-            }
+            LL_INFOS("Window") << "WM_IME_SETCONTEXT" << LL_ENDL;
             if (LLWinImm::isAvailable() && window_imp->mPreeditor)
             {
                 l_param &= ~ISC_SHOWUICOMPOSITIONWINDOW;
@@ -2600,10 +2580,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
         case WM_IME_STARTCOMPOSITION:
         {
             LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_IME_STARTCOMPOSITION");
-            if (debug_window_proc)
-            {
-                LL_INFOS() << "WM_IME_STARTCOMPOSITION" << LL_ENDL;
-            }
+            LL_INFOS("Window") << "WM_IME_STARTCOMPOSITION" << LL_ENDL;
             if (LLWinImm::isAvailable() && window_imp->mPreeditor)
             {
                 WINDOW_IMP_POST(window_imp->handleStartCompositionMessage());
@@ -2614,10 +2591,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
         case WM_IME_ENDCOMPOSITION:
         {
             LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_IME_ENDCOMPOSITION");
-            if (debug_window_proc)
-            {
-                LL_INFOS() << "WM_IME_ENDCOMPOSITION" << LL_ENDL;
-            }
+            LL_INFOS("Window") << "WM_IME_ENDCOMPOSITION" << LL_ENDL;
             if (LLWinImm::isAvailable() && window_imp->mPreeditor)
             {
                 return 0;
@@ -2627,10 +2601,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
         case WM_IME_COMPOSITION:
         {
             LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_IME_COMPOSITION");
-            if (debug_window_proc)
-            {
-                LL_INFOS() << "WM_IME_COMPOSITION" << LL_ENDL;
-            }
+            LL_INFOS("Window") << "WM_IME_COMPOSITION" << LL_ENDL;
             if (LLWinImm::isAvailable() && window_imp->mPreeditor)
             {
                 WINDOW_IMP_POST(window_imp->handleCompositionMessage(l_param));
@@ -2641,10 +2612,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
         case WM_IME_REQUEST:
         {
             LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_IME_REQUEST");
-            if (debug_window_proc)
-            {
-                LL_INFOS() << "WM_IME_REQUEST" << LL_ENDL;
-            }
+            LL_INFOS("Window") << "WM_IME_REQUEST" << LL_ENDL;
             if (LLWinImm::isAvailable() && window_imp->mPreeditor)
             {
                 LRESULT result;
@@ -2673,12 +2641,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
                     // it is worth trying.  The good old WM_CHAR works just fine even for supplementary
                     // characters.  We just need to take care of surrogate pairs sent as two WM_CHAR's
                     // by ourselves.  It is not that tough.  -- Alissa Sabre @ SL
-                    if (debug_window_proc)
-                    {
-                        LL_INFOS("Window") << "Debug WindowProc WM_CHAR "
-                            << " key " << S32(w_param)
-                            << LL_ENDL;
-                    }
+                    LL_INFOS("Window") << "Debug WindowProc WM_CHAR "
+                        << " key " << S32(w_param)
+                        << LL_ENDL;
                     // Even if LLWindowCallbacks::handleUnicodeChar(llwchar, BOOL) returned FALSE,
                     // we *did* processed the event, so I believe we should not pass it to DefWindowProc...
                     window_imp->handleUnicodeUTF16((U16)w_param, gKeyboard->currentMask(FALSE));
@@ -3006,19 +2971,17 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
             S32 height = S32(HIWORD(l_param));
 
             
-            if (debug_window_proc)
-            {
-                BOOL maximized = (w_param == SIZE_MAXIMIZED);
-                BOOL restored = (w_param == SIZE_RESTORED);
-                BOOL minimized = (w_param == SIZE_MINIMIZED);
-
-                LL_INFOS("Window") << "WINDOWPROC Size "
-                    << width << "x" << height
-                    << " max " << S32(maximized)
-                    << " min " << S32(minimized)
-                    << " rest " << S32(restored)
-                    << LL_ENDL;
-            }
+            LL_INFOS("Window");
+            BOOL maximized = (w_param == SIZE_MAXIMIZED);
+            BOOL restored = (w_param == SIZE_RESTORED);
+            BOOL minimized = (w_param == SIZE_MINIMIZED);
+
+            LL_CONT << "WINDOWPROC Size "
+                << width << "x" << height
+                << " max " << S32(maximized)
+                << " min " << S32(minimized)
+                << " rest " << S32(restored);
+            LL_ENDL;
 
             // There's an odd behavior with WM_SIZE that I would call a bug. If 
             // the window is maximized, and you call MoveWindow() with a size smaller
@@ -3084,10 +3047,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
         case WM_SETFOCUS:
         {
             LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_SETFOCUS");
-            if (debug_window_proc)
-            {
-                LL_INFOS("Window") << "WINDOWPROC SetFocus" << LL_ENDL;
-            }
+            LL_INFOS("Window") << "WINDOWPROC SetFocus" << LL_ENDL;
             WINDOW_IMP_POST(window_imp->mCallbacks->handleFocus(window_imp));
             return 0;
         }
@@ -3095,10 +3055,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
         case WM_KILLFOCUS:
         {
             LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_KILLFOCUS");
-            if (debug_window_proc)
-            {
-                LL_INFOS("Window") << "WINDOWPROC KillFocus" << LL_ENDL;
-            }
+            LL_INFOS("Window") << "WINDOWPROC KillFocus" << LL_ENDL;
             WINDOW_IMP_POST(window_imp->mCallbacks->handleFocusLost(window_imp));
             return 0;
         }
@@ -3219,10 +3176,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
         default:
         {
             LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - default");
-            if (debug_window_proc)
-            {
-                LL_INFOS("Window") << "Unhandled windows message code: 0x" << std::hex << U32(u_msg) << LL_ENDL;
-            }
+            LL_INFOS("Window") << "Unhandled windows message code: 0x" << std::hex << U32(u_msg) << LL_ENDL;
         }
         break;
         }
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
index 6457c13ef3b6775e57ba76c9840b54d01e7bea28..31c5d2a16f6e9156c90e984ca8443fa0fc270575 100644
--- a/indra/newview/llappviewerwin32.cpp
+++ b/indra/newview/llappviewerwin32.cpp
@@ -656,16 +656,18 @@ bool LLAppViewerWin32::init()
 													   LL_VIEWER_VERSION_PATCH << '.' <<
 													   LL_VIEWER_VERSION_BUILD));
 
-                DWORD dwFlags = MDSF_NONINTERACTIVE | // automatically submit report without prompting
-                                MDSF_PREVENTHIJACKING; // disallow swiping Exception filter
-
-                bool needs_log_file = !isSecondInstance() && debugLoggingEnabled("BUGSPLAT");
-                if (needs_log_file)
-                {
-                    // Startup only!
-                    LL_INFOS("BUGSPLAT") << "Engaged BugSplat logging to bugsplat.log" << LL_ENDL;
-                    dwFlags |= MDSF_LOGFILE | MDSF_LOG_VERBOSE;
-                }
+				DWORD dwFlags = MDSF_NONINTERACTIVE | // automatically submit report without prompting
+								MDSF_PREVENTHIJACKING; // disallow swiping Exception filter
+
+				bool needs_log_file = !isSecondInstance();
+				LL_DEBUGS("BUGSPLAT");
+				if (needs_log_file)
+				{
+					// Startup only!
+					LL_INFOS("BUGSPLAT") << "Engaged BugSplat logging to bugsplat.log" << LL_ENDL;
+					dwFlags |= MDSF_LOGFILE | MDSF_LOG_VERBOSE;
+				}
+				LL_ENDL;
 
 				// have to convert normal wide strings to strings of __wchar_t
 				sBugSplatSender = new MiniDmpSender(
@@ -676,12 +678,14 @@ bool LLAppViewerWin32::init()
 					dwFlags);
 				sBugSplatSender->setCallback(bugsplatSendLog);
 
-                if (needs_log_file)
-                {
-                    // Log file will be created in %TEMP%, but it will be moved into logs folder in case of crash
-                    std::string log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "bugsplat.log");
-                    sBugSplatSender->setLogFilePath(WCSTR(log_file));
-                }
+				LL_DEBUGS("BUGSPLAT");
+				if (needs_log_file)
+				{
+					// Log file will be created in %TEMP%, but it will be moved into logs folder in case of crash
+					std::string log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "bugsplat.log");
+					sBugSplatSender->setLogFilePath(WCSTR(log_file));
+				}
+				LL_ENDL;
 
 				// engage stringize() overload that converts from wstring
 				LL_INFOS("BUGSPLAT") << "Engaged BugSplat(" << LL_TO_STRING(LL_VIEWER_CHANNEL)
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index 4babf5a7f6f402ad4337176a6dc6d1545e3cc961..609e8290da54dcdf3d878f25c2f94b6f31bbf014 100644
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -829,12 +829,11 @@ void send_viewer_stats(bool include_preferences)
 
 
 	LL_INFOS("LogViewerStatsPacket") << "Sending viewer statistics: " << body << LL_ENDL;
-	if (debugLoggingEnabled("LogViewerStatsPacket"))
-	{
-		std::string filename("viewer_stats_packet.xml");
-		llofstream of(filename.c_str());
-		LLSDSerialize::toPrettyXML(body,of);
-	}
+	LL_DEBUGS("LogViewerStatsPacket");
+	std::string filename("viewer_stats_packet.xml");
+	llofstream of(filename.c_str());
+	LLSDSerialize::toPrettyXML(body,of);
+	LL_ENDL;
 
 	// The session ID token must never appear in logs
 	body["session_id"] = gAgentSessionID;
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index e38a6457f42baf086aa57b6ae855139fa3f95354..34771b6172fba1cdb86ea96a8bcfbdce6b2d6f56 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -11070,8 +11070,9 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
 
 		// Diagnostic output to identify all avatar-related textures.
 		// Does not affect rendering cost calculation.
-		if (isSelf() && debugLoggingEnabled("ARCdetail"))
+		if (isSelf())
 		{
+			LL_DEBUGS("ARCdetail");
 			// print any attachment textures we didn't already know about.
 			for (LLVOVolume::texture_cost_t::iterator it = textures.begin(); it != textures.end(); ++it)
 			{
@@ -11080,17 +11081,17 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
 				   && (all_textures.find(image_id) == all_textures.end()))
 				{
 					// attachment texture not previously seen.
-					LL_DEBUGS("ARCdetail") << "attachment_texture: " << image_id.asString() << LL_ENDL;
+					LL_CONT << "attachment_texture: " << image_id.asString() << '\n';
 					all_textures.insert(image_id);
 				}
 			}
 
 			// print any avatar textures we didn't already know about
-		    for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearance::getDictionary()->getTextures().begin();
+			for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearance::getDictionary()->getTextures().begin();
 			 iter != LLAvatarAppearance::getDictionary()->getTextures().end();
 				 ++iter)
 			{
-			    const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
+				const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
 				// TODO: MULTI-WEARABLE: handle multiple textures for self
 				const LLViewerTexture* te_image = getImage(iter->first,0);
 				if (!te_image)
@@ -11100,10 +11101,11 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
 					continue;
 				if (all_textures.find(image_id) == all_textures.end())
 				{
-					LL_DEBUGS("ARCdetail") << "local_texture: " << texture_dict->mName << ": " << image_id << LL_ENDL;
+					LL_CONT << "local_texture: " << texture_dict->mName << ": " << image_id << '\n';
 					all_textures.insert(image_id);
 				}
 			}
+			LL_ENDL;
 		}
 
         if ( cost != mVisualComplexity )
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index da5a505d3bc44f82419257cafd28e3b3a25db5a0..e45d5d4b5fb97979c33b79fa8e1d4b46f6e2ca22 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -1617,15 +1617,14 @@ BOOL LLVOVolume::updateLOD()
 
 	if (lod_changed)
 	{
-        if (debugLoggingEnabled("AnimatedObjectsLinkset"))
-        {
-            if (isAnimatedObject() && isRiggedMesh())
-            {
-                std::string vobj_name = llformat("Vol%p", this);
-                F32 est_tris = getEstTrianglesMax();
-                LL_DEBUGS("AnimatedObjectsLinkset") << vobj_name << " updateLOD to " << getLOD() << ", tris " << est_tris << LL_ENDL; 
-            }
-        }
+		LL_DEBUGS("AnimatedObjectsLinkset");
+		if (isAnimatedObject() && isRiggedMesh())
+		{
+			std::string vobj_name = llformat("Vol%p", this);
+			F32 est_tris = getEstTrianglesMax();
+			LL_CONT << vobj_name << " updateLOD to " << getLOD() << ", tris " << est_tris;
+		}
+		LL_ENDL;
 
 		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, FALSE);
 		mLODChanged = TRUE;
@@ -4532,15 +4531,14 @@ const LLMatrix4& LLVOVolume::getWorldMatrix(LLXformMatrix* xform) const
 
 void LLVOVolume::markForUpdate(BOOL priority)
 { 
-    if (debugLoggingEnabled("AnimatedObjectsLinkset"))
+    LL_DEBUGS("AnimatedObjectsLinkset");
+    if (isAnimatedObject() && isRiggedMesh())
     {
-        if (isAnimatedObject() && isRiggedMesh())
-        {
-            std::string vobj_name = llformat("Vol%p", this);
-            F32 est_tris = getEstTrianglesMax();
-            LL_DEBUGS("AnimatedObjectsLinkset") << vobj_name << " markForUpdate, tris " << est_tris << LL_ENDL; 
-        }
+        std::string vobj_name = llformat("Vol%p", this);
+        F32 est_tris = getEstTrianglesMax();
+        LL_CONT << vobj_name << " markForUpdate, tris " << est_tris;
     }
+    LL_ENDL;
 
     if (mDrawable)
     {
@@ -6098,15 +6096,14 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
 					
 					if (!vobj) continue;
 
-					if (debugLoggingEnabled("AnimatedObjectsLinkset"))
+					LL_DEBUGS("AnimatedObjectsLinkset");
+					if (vobj->isAnimatedObject() && vobj->isRiggedMesh())
 					{
-						if (vobj->isAnimatedObject() && vobj->isRiggedMesh())
-						{
-							std::string vobj_name = llformat("Vol%p", vobj);
-							F32 est_tris = vobj->getEstTrianglesMax();
-							LL_DEBUGS("AnimatedObjectsLinkset") << vobj_name << " rebuildMesh, tris " << est_tris << LL_ENDL;
-						}
+						std::string vobj_name = llformat("Vol%p", vobj);
+						F32 est_tris = vobj->getEstTrianglesMax();
+						LL_CONT << vobj_name << " rebuildMesh, tris " << est_tris;
 					}
+					LL_ENDL;
 					if (vobj->isNoLOD()) continue;
 
 					vobj->preRebuild();
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index df8b8a552ac9bd96d08f2cf98b13684457f9cb00..88359d06b96fcc81811a9e3b85599e85106beae1 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -3016,17 +3016,16 @@ void LLPipeline::markRebuild(LLDrawable *drawablep, LLDrawable::EDrawableFlags f
 {
 	if (drawablep && !drawablep->isDead() && assertInitialized())
 	{
-        if (debugLoggingEnabled("AnimatedObjectsLinkset"))
+        LL_DEBUGS("AnimatedObjectsLinkset");
+        LLVOVolume *vol_obj = drawablep->getVOVolume();
+        if (vol_obj && vol_obj->isAnimatedObject() && vol_obj->isRiggedMesh())
         {
-            LLVOVolume *vol_obj = drawablep->getVOVolume();
-            if (vol_obj && vol_obj->isAnimatedObject() && vol_obj->isRiggedMesh())
-            {
-                std::string vobj_name = llformat("Vol%p", vol_obj);
-                F32 est_tris = vol_obj->getEstTrianglesMax();
-                LL_DEBUGS("AnimatedObjectsLinkset") << vobj_name << " markRebuild, tris " << est_tris 
-                                                    << " priority " << (S32) priority << " flag " << std::hex << flag << LL_ENDL; 
-            }
+            std::string vobj_name = llformat("Vol%p", vol_obj);
+            F32 est_tris = vol_obj->getEstTrianglesMax();
+            LL_CONT << vobj_name << " markRebuild, tris " << est_tris 
+                    << " priority " << (S32) priority << " flag " << std::hex << flag;
         }
+        LL_ENDL;
     
 		if (!drawablep->isState(LLDrawable::BUILT))
 		{