diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/managers/ReconnectionManager.as b/bigbluebutton-client/src/org/bigbluebutton/core/managers/ReconnectionManager.as
index fe094f6dd7dbe9747859fe0d7653eceef578296b..e96b3e54f8826b34111adff8d16bdfdd96294b06 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/core/managers/ReconnectionManager.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/core/managers/ReconnectionManager.as
@@ -149,7 +149,6 @@ package org.bigbluebutton.core.managers
 	  LOGGER.info(JSON.stringify(logData));
 	  
       dispatchReconnectionSucceededEvent(type);
-
       delete _connections[type];
       if (type == BIGBLUEBUTTON_CONNECTION) {
         reconnect();
@@ -161,7 +160,7 @@ package org.bigbluebutton.core.managers
 
         _dispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.SUCCESS_MESSAGE_EVENT, 
           ResourceUtil.getInstance().getString('bbb.connection.reestablished'), 
-          msg));
+          msg, 'bbb.connection.reestablished'));
 
         _reconnectTimeout.reset();
         removePopUp();
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/events/ClientStatusEvent.as b/bigbluebutton-client/src/org/bigbluebutton/main/events/ClientStatusEvent.as
index c8a890e8cc05779962bd236414711ee3f989a871..2fe1797d611a365012c7ee4f07f91e0b933c58f8 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/events/ClientStatusEvent.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/events/ClientStatusEvent.as
@@ -29,12 +29,14 @@ package org.bigbluebutton.main.events
 		
 		public var title:String;
 		public var message:String;
-		
-		public function ClientStatusEvent(type:String, title:String, message:String)
+		public var logCode:String;
+
+		public function ClientStatusEvent(type:String, title:String, message:String, logCode:String)
 		{
 			super(type);
 			this.title = title;
 			this.message = message;
+			this.logCode = logCode;
 		}
 	}
-}
\ No newline at end of file
+}
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml
index ffa3e7ae610a24cbc71b140b767f41c81f5d4a3f..78e3b193e179a4385a7cabfe37363590cc45f3c7 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml
@@ -11,6 +11,7 @@ terms of the GNU Lesser General Public License as published by the Free Software
 Foundation; either version 3.0 of the License, or (at your option) any later
 version.
 
+
 BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
@@ -318,7 +319,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 				// this is a terrible place for these checks because this function runs 4 times on startup
 				if (BBB.initConnectionManager().isTunnelling) {
 					isTunneling = true;
-					globalDispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.WARNING_MESSAGE_EVENT, ResourceUtil.getInstance().getString("bbb.clientstatus.tunneling.title"), ResourceUtil.getInstance().getString("bbb.clientstatus.tunneling.message")));
+					globalDispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.WARNING_MESSAGE_EVENT,
+						ResourceUtil.getInstance().getString("bbb.clientstatus.tunneling.title"),
+						ResourceUtil.getInstance().getString("bbb.clientstatus.tunneling.message"),
+						'bbb.clientstatus.tunneling'));
 				}
 				versionCheck();
 				
@@ -340,7 +344,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 					if ((browserVersion[0].toString().toLowerCase() == "chrome" && browserVersion[1] < xml.@chrome) || browserVersion[0].toString().toLowerCase() == "firefox" && browserVersion[1] < xml.@firefox) {
 						globalDispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.WARNING_MESSAGE_EVENT, 
 							ResourceUtil.getInstance().getString("bbb.clientstatus.browser.title"), 
-							ResourceUtil.getInstance().getString("bbb.clientstatus.browser.message", [browserVersion[0]+" "+browserVersion[1]])));
+							ResourceUtil.getInstance().getString("bbb.clientstatus.browser.message", [browserVersion[0]+" "+browserVersion[1]]),
+							'bbb.clientstatus.browser.message'));
 					}
 					
 					//find flash version
@@ -350,7 +355,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 						((flashVersion.os != 'LNX' || browserVersion[0].toString().toLowerCase() == "chrome") && flashVersion.major < xml.@flash)) {
 						globalDispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.WARNING_MESSAGE_EVENT, 
 							ResourceUtil.getInstance().getString("bbb.clientstatus.flash.title"), 
-							ResourceUtil.getInstance().getString("bbb.clientstatus.flash.message", [flashVersion.major+"."+flashVersion.minor+"."+flashVersion.build])));
+							ResourceUtil.getInstance().getString("bbb.clientstatus.flash.message", [flashVersion.major+"."+flashVersion.minor+"."+flashVersion.build]),
+							'bbb.clientstatus.flash.message'));
 					}
 				}
 
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/WarningButton.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/WarningButton.mxml
index 7f26f8fed5ce801c28189543d1a470b5e7a93587..50013250951b357b8ba4157c9f3c70e624e1c9c8 100644
--- a/bigbluebutton-client/src/org/bigbluebutton/main/views/WarningButton.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/WarningButton.mxml
@@ -94,7 +94,13 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 
 				messages.push(obj);
 				showNotification();
-				LOGGER.warn("ClientNotification:" + e.title + " " + e.message);
+
+				var logData:Object = {};
+				logData.type = "ClientNotification";
+				logData.logCode = e.logCode;
+				logData.message = e.message;
+				logData.title = e.title;
+				LOGGER.warn(JSON.stringify(logData));
 			}
 			
 			private function showNotification():void {
@@ -102,7 +108,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 					visible = includeInLayout = true;
 					
 					if (hideTimer.running) hideTimer.reset();
-					hideTimer.start()
+					hideTimer.start();
 					
 					if (!notification) {
 						notification = ToolTipManager.createToolTip(ResourceUtil.getInstance().getString("bbb.clientstatus.notification"), 100, 100, "errorTipAbove", this) as ToolTip;
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/WebRTCCallManager.as b/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/WebRTCCallManager.as
index fa182bb265371e07c876e632c1a0abb1b8c8f543..3c09198bbdcfb67951e6ca4c4a8be89421367623 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/WebRTCCallManager.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/WebRTCCallManager.as
@@ -14,7 +14,6 @@ package org.bigbluebutton.modules.phone.managers
   import org.as3commons.logging.util.jsonXify;
   import org.bigbluebutton.core.UsersUtil;
   import org.bigbluebutton.main.api.JSAPI;
-  import org.bigbluebutton.main.api.JSLog;
   import org.bigbluebutton.main.events.ClientStatusEvent;
   import org.bigbluebutton.main.model.users.AutoReconnect;
   import org.bigbluebutton.modules.phone.PhoneModel;
@@ -32,7 +31,7 @@ package org.bigbluebutton.modules.phone.managers
 
   public class WebRTCCallManager
   {
-	private static const LOGGER:ILogger = getClassLogger(WebRTCCallManager);      
+    private static const LOGGER:ILogger = getClassLogger(WebRTCCallManager);
     private const MAX_RETRIES:Number = 3;
     
     private var browserType:String = "unknown";
@@ -60,7 +59,8 @@ package org.bigbluebutton.modules.phone.managers
       if (options.useWebRTCIfAvailable && !isWebRTCSupported()) {
         dispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.WARNING_MESSAGE_EVENT, 
           ResourceUtil.getInstance().getString("bbb.clientstatus.webrtc.title"), 
-          ResourceUtil.getInstance().getString("bbb.clientstatus.webrtc.message")));
+          ResourceUtil.getInstance().getString("bbb.clientstatus.webrtc.message"),
+          'bbb.clientstatus.webrtc.title'));
       }
       
       usingWebRTC = checkIfToUseWebRTC();
@@ -135,7 +135,8 @@ package org.bigbluebutton.modules.phone.managers
       if(reconnecting) {
         dispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.SUCCESS_MESSAGE_EVENT,
           ResourceUtil.getInstance().getString("bbb.webrtcWarning.connection.reestablished"),
-          ResourceUtil.getInstance().getString("bbb.webrtcWarning.connection.reestablished")));
+          ResourceUtil.getInstance().getString("bbb.webrtcWarning.connection.reestablished"),
+          'bbb.webrtcWarning.connection.reestablished'));
         reconnecting = false;
       }
     }
@@ -150,8 +151,12 @@ package org.bigbluebutton.modules.phone.managers
     }
     
     public function handleJoinVoiceConferenceCommand(event:JoinVoiceConferenceCommand):void {
-	  LOGGER.debug("handleJoinVoiceConferenceCommand - usingWebRTC: " + usingWebRTC + ", event.mic: " + event.mic);
-      
+      var logData:Object = UsersUtil.initLogData();
+      logData.usingWebRTC = usingWebRTC;
+      logData.eventMic = event.mic;
+      logData.message = "handleJoinVoiceConferenceCommand - usingWebRTC:";
+      LOGGER.info(JSON.stringify(logData));
+
       if (!usingWebRTC || !event.mic) return;
       
       if (options.skipCheck || echoTestDone) {
@@ -200,26 +205,34 @@ package org.bigbluebutton.modules.phone.managers
         errorString = ResourceUtil.getInstance().getString("bbb.webrtcWarning.failedError.unknown", [event.errorCode]);
       }
       
-	  var logData:Object = UsersUtil.initLogData();
-	  logData.user.reason = errorString;
+        var logData:Object = UsersUtil.initLogData();
+      logData.user.reason = errorString;
       logData.tags = ["voice", "webrtc"];
-      logData.message = "WebRtc Echo test failed.";	  
-	  LOGGER.info(jsonXify(logData));
-	  
-      sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"), ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]), errorString);
+      logData.message = "WebRtc Echo test failed.";
+      logData.errorEvent = event;
+      LOGGER.info(jsonXify(logData));
+
+      sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"),
+              ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]),
+              errorString,
+              'bbb.webrtcWarning webRTCEchoTestFailedEvent');
     }
     
     public function handleWebRTCEchoTestEndedUnexpectedly():void {
       model.state = Constants.INITED;
-      var errorString:String = ResourceUtil.getInstance().getString("bbb.webrtcWarning.failedError.endedunexpectedly");
-	  
-	  var logData:Object = UsersUtil.initLogData();
-	  logData.user.reason = errorString;
+      var logCode:String = "bbb.webrtcWarning.failedError.endedunexpectedly";
+      var errorString:String = ResourceUtil.getInstance().getString(logCode);
+
+      var logData:Object = UsersUtil.initLogData();
+      logData.user.reason = errorString;
       logData.tags = ["voice", "webrtc"];
       logData.message = "WebRtc Echo test ended unexpectedly.";
-	  LOGGER.info(jsonXify(logData));
-	  
-      sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"), ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]), errorString);
+      LOGGER.info(jsonXify(logData));
+
+      sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"),
+              ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]),
+              errorString,
+              logCode);
     }
     
     public function handleWebRTCCallFailedEvent(event:WebRTCCallEvent):void {
@@ -231,7 +244,8 @@ package org.bigbluebutton.modules.phone.managers
         reconnecting = true;
         dispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.WARNING_MESSAGE_EVENT,
           ResourceUtil.getInstance().getString("bbb.webrtcWarning.connection.dropped"),
-          ResourceUtil.getInstance().getString("bbb.webrtcWarning.connection.reconnecting")));
+          ResourceUtil.getInstance().getString("bbb.webrtcWarning.connection.reconnecting"),
+          'bbb.webrtcWarning.connection.dropped,reconnecting'));
         reconnect.onDisconnect(joinVoiceConference, []);
       }
       else {
@@ -256,23 +270,30 @@ package org.bigbluebutton.modules.phone.managers
           
           var logData:Object = UsersUtil.initLogData();
           logData.tags = ["voice", "webrtc"];
-          logData.user.reason = errorString;
+          logData.errorEvent = event;
           LOGGER.info(jsonXify(logData));
           
-          sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"), ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]), errorString);
+          sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"),
+                  ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]),
+                  errorString,
+                  'bbb.webrtcWarning.failedError');
         }
       }
     }
     
     public function handleWebRTCMediaFailedEvent():void {
       model.state = Constants.INITED;
-      var errorString:String = ResourceUtil.getInstance().getString("bbb.webrtcWarning.failedError.mediamissing");
-	  
-	  var logData:Object = UsersUtil.initLogData();
-	  logData.user.reason = errorString;
-	  LOGGER.info(jsonXify(logData));
-	  
-      sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"), ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]), errorString);
+      var logCode:String = "bbb.webrtcWarning.failedError.mediamissing";
+      var errorString:String = ResourceUtil.getInstance().getString(logCode);
+
+      var logData:Object = UsersUtil.initLogData();
+      logData.user.reason = errorString;
+      LOGGER.info(jsonXify(logData));
+
+      sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"),
+              ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]),
+              errorString,
+              logCode);
     }
     
     private var popUpDelayTimer:Timer = new Timer(100, 1);
@@ -294,7 +315,7 @@ package org.bigbluebutton.modules.phone.managers
       }
     }
     
-    private function sendWebRTCAlert(title:String, message:String, error:String):void {
+    private function sendWebRTCAlert(title:String, message:String, error:String, logCode:String):void {
       /**
        * There is a bug in Flex SDK 4.14 where the screen stays blurry if a 
        * pop-up is opened from another pop-up. I delayed the second open to 
@@ -305,9 +326,15 @@ package org.bigbluebutton.modules.phone.managers
         Alert.show(message, title, Alert.YES | Alert.NO, null, handleCallFailedUserResponse, null, Alert.YES);
       });
       popUpDelayTimer.start();
-      dispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.FAIL_MESSAGE_EVENT, title, error));
+      dispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.FAIL_MESSAGE_EVENT, title, error, logCode));
 
-      LOGGER.warn("WebRTCAlert:" + title + " " + error + " " + message);
+      var logData:Object = UsersUtil.initLogData();
+      logData.type = "WebRTCAlert";
+      logData.title = title;
+      logData.error = error;
+      logData.message = message;
+      logData.logCode = logCode;
+      LOGGER.warn(JSON.stringify(logData));
     }
   }
 }
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/WebRTCConnection.as b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/WebRTCConnection.as
index a6965b457b45195a7a497535f7b29aa5052eaab8..a362e16fef74968067106e731f76f40dacf04104 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/WebRTCConnection.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/WebRTCConnection.as
@@ -38,9 +38,9 @@ package org.bigbluebutton.modules.screenshare.services.red5
 	import org.bigbluebutton.core.UsersUtil;
 	import org.bigbluebutton.core.managers.ReconnectionManager;
 	import org.bigbluebutton.main.events.BBBEvent;
-	import org.bigbluebutton.modules.screenshare.events.WebRTCViewStreamEvent;
-	import org.bigbluebutton.modules.screenshare.services.red5.WebRTCConnectionEvent;
-
+	import org.bigbluebutton.modules.screenshare.events.WebRTCViewStreamEvent;
+	import org.bigbluebutton.modules.screenshare.services.red5.WebRTCConnectionEvent;
+
 	public class WebRTCConnection {
 	private static const LOGGER:ILogger = getClassLogger(Connection);
 
@@ -168,6 +168,12 @@ package org.bigbluebutton.modules.screenshare.services.red5
 		private function netStatusHandler(event:NetStatusEvent):void {
 			LOGGER.debug("Connected to [" + getURI() + "]. [" + event.info.code + "]");
 
+			var logData:Object = {};
+			logData.type = "ConnectionStatusChanged";
+			logData.newStatus = event.info.code;
+			logData.connection = getURI();
+			LOGGER.info(JSON.stringify(logData));
+
 			if (retryTimer) {
 				retryCount = 0;
 				LOGGER.debug("Cancelling retry timer.");
@@ -211,7 +217,7 @@ package org.bigbluebutton.modules.screenshare.services.red5
 							LOGGER.debug(result);
 						},
 						function(status:String):void { // status - On error occurred
-					LOGGER.error(status);
+							LOGGER.error(status);
 						}
 					);
 
@@ -257,7 +263,8 @@ package org.bigbluebutton.modules.screenshare.services.red5
 				break;
 
 				case "NetConnection.Connect.NetworkChange":
-					LOGGER.info("Detected network change. User might be on a wireless and temporarily dropped connection. Doing nothing. Just making a note.");
+					// LOGGER.info("Detected network change. User might be on a wireless and
+					// temporarily dropped connection. Doing nothing. Just making a note.");
 					break;
 
 				default :