diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 9682c3bc1077fbc5289ece6061e5e9452ef39e6e..3a3d9254fdaea2a1489a4b25c306d396f03b97df 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -47,6 +47,7 @@
 #include "llnotificationsutil.h"
 #include "llrender.h"
 #include "lluictrlfactory.h"
+#include "lluiusage.h"
 #include "llhelp.h"
 #include "lldockablefloater.h"
 #include "llviewereventrecorder.h"
@@ -437,6 +438,13 @@ BOOL LLButton::handleMouseDown(S32 x, S32 y, MASK mask)
 			setFocus(TRUE);
 		}
 
+		if (!mFunctionName.empty())
+		{
+			LL_DEBUGS("UIUsage") << "calling mouse down function " << mFunctionName << LL_ENDL;
+			LLUIUsage::instance().logCommand(mFunctionName);
+			LLUIUsage::instance().logWidget(getPathname());
+		}
+
 		/*
 		 * ATTENTION! This call fires another mouse down callback.
 		 * If you wish to remove this call emit that signal directly
diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp
index 0e1c8439eaef41c25fb550540fe77e915e2acb23..426c931d07de3a29e3db2adfa060d56dc4cc7d89 100644
--- a/indra/llui/lluictrl.cpp
+++ b/indra/llui/lluictrl.cpp
@@ -429,6 +429,7 @@ void LLUICtrl::onCommit()
 		{
 			LL_DEBUGS("UIUsage") << "calling commit function " << mFunctionName << LL_ENDL;
 			LLUIUsage::instance().logCommand(mFunctionName);
+			LLUIUsage::instance().logWidget(getPathname());
 		}
 		else
 		{
diff --git a/indra/llui/lluiusage.cpp b/indra/llui/lluiusage.cpp
index 50eeccd2149307c6d2ec5f95940fe297ad58bb22..99de4ff78a9df3647c151f4dbd61ecd0dbb2c3b0 100644
--- a/indra/llui/lluiusage.cpp
+++ b/indra/llui/lluiusage.cpp
@@ -47,11 +47,19 @@ std::string LLUIUsage::sanitized(const std::string& s)
 void LLUIUsage::logFloater(const std::string& floater)
 {
 	mFloaterCounts[sanitized(floater)]++;
+	LL_DEBUGS("UIUsage") << "floater " << floater << LL_ENDL;
 }
 
 void LLUIUsage::logCommand(const std::string& command)
 {
 	mCommandCounts[sanitized(command)]++;
+	LL_DEBUGS("UIUsage") << "command " << command << LL_ENDL;
+}
+
+void LLUIUsage::logWidget(const std::string& w)
+{
+	mWidgetCounts[sanitized(w)]++;
+	LL_DEBUGS("UIUsage") << "widget " << w << LL_ENDL;
 }
 
 LLSD LLUIUsage::asLLSD() const
@@ -65,6 +73,10 @@ LLSD LLUIUsage::asLLSD() const
 	{
 		result["commands"][it.first] = LLSD::Integer(it.second);
 	}
+	for (auto const& it : mWidgetCounts)
+	{
+		result["widgets"][it.first] = LLSD::Integer(it.second);
+	}
 	return result;
 }
 
diff --git a/indra/llui/lluiusage.h b/indra/llui/lluiusage.h
index bac607aa60304293b95f9a56af147789f1e0c3e9..efc8bb4032314c96fae59e0401024121b9e529ec 100644
--- a/indra/llui/lluiusage.h
+++ b/indra/llui/lluiusage.h
@@ -41,10 +41,12 @@ class LLUIUsage : public LLSingleton<LLUIUsage>
 	static std::string sanitized(const std::string& s);
 	void logFloater(const std::string& floater);
 	void logCommand(const std::string& command);
+	void logWidget(const std::string& w);
 	LLSD asLLSD() const;
 private:
 	std::map<std::string,U32> mFloaterCounts;
 	std::map<std::string,U32> mCommandCounts;
+	std::map<std::string,U32> mWidgetCounts;
 };
 
 #endif // LLUIUIUSAGE.h
diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp
index 3ab5c669c443e905c6d239345cdd3b3a687a5ae5..e400609a74631e374dd5aac78152ba066aaf4157 100644
--- a/indra/newview/llchatbar.cpp
+++ b/indra/newview/llchatbar.cpp
@@ -58,6 +58,7 @@
 #include "llmultigesture.h"
 #include "llui.h"
 #include "lluictrlfactory.h"
+#include "lluiusage.h"
 
 //
 // Globals
@@ -566,6 +567,8 @@ void LLChatBar::sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL
 	// as soon as we say something, we no longer care about teaching the user
 	// how to chat
 	gWarningSettings.setBOOL("FirstOtherChatBeforeUser", FALSE);
+
+	LLUIUsage::instance().logCommand("Chat.Send"); // Pseudo-command
 	
 	// Look for "/20 foo" channel chats.
 	S32 channel = 0;
diff --git a/indra/newview/llfloaterimnearbychat.cpp b/indra/newview/llfloaterimnearbychat.cpp
index a6531ed7e1b9ae3acd7b1bb6597dd6d1bae59e79..3a850d4b6822e1cb9676dd66426d90b90290b1b2 100644
--- a/indra/newview/llfloaterimnearbychat.cpp
+++ b/indra/newview/llfloaterimnearbychat.cpp
@@ -67,6 +67,7 @@
 #include "llviewerchat.h"
 #include "lltranslate.h"
 #include "llautoreplace.h"
+#include "lluiusage.h"
 
 S32 LLFloaterIMNearbyChat::sLastSpecialChatChannel = 0;
 
@@ -697,6 +698,7 @@ void LLFloaterIMNearbyChat::sendChatFromViewer(const std::string &utf8text, ECha
 
 void LLFloaterIMNearbyChat::sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL animate)
 {
+	LLUIUsage::instance().logCommand("Chat.Send"); // pseuo-command
 	// Look for "/20 foo" channel chats.
 	S32 channel = 0;
 	LLWString out_text = stripChannelNumber(wtext, &channel);
diff --git a/indra/newview/llworldmipmap.cpp b/indra/newview/llworldmipmap.cpp
index a2e519a61aa14057f5f29c24df900fc5e5fc76bb..040d0deaf351e237428b51f00c539f07a19f282c 100644
--- a/indra/newview/llworldmipmap.cpp
+++ b/indra/newview/llworldmipmap.cpp
@@ -190,6 +190,8 @@ LLPointer<LLViewerFetchedTexture> LLWorldMipmap::loadObjectsTile(U32 grid_x, U32
 	//LL_INFOS("WorldMap") << "LLWorldMipmap::loadObjectsTile(), URL = " << imageurl << LL_ENDL;
 
 	LLPointer<LLViewerFetchedTexture> img = LLViewerTextureManager::getFetchedTextureFromUrl(imageurl, FTT_MAP_TILE, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+	LL_INFOS("MAPURL") << "fetching map tile from " << imageurl << LL_ENDL;
+
 	img->setBoostLevel(LLGLTexture::BOOST_MAP);
 
 	// Return the smart pointer