diff --git a/bigbluebutton-client/resources/config.xml.template b/bigbluebutton-client/resources/config.xml.template
index 6656b9e5fdac78cbfa264be2549c8f70f8129c1d..785b45a7dadd98a921621fafcd39579b7e8183cb 100755
--- a/bigbluebutton-client/resources/config.xml.template
+++ b/bigbluebutton-client/resources/config.xml.template
@@ -18,7 +18,7 @@
             showRecordingNotification="true" logoutOnStopRecording="false"
             askForFeedbackOnLogout="false"/>
     <breakoutRooms enabled="true" record="false" privateChateEnabled="true"/>
-    <logging enabled="true" logTarget="trace" level="info" format="{dateUTC} {time} :: {name} :: [{logLevel}] {message}" uri="http://HOST/log" logPattern=".*"/>
+    <logging enabled="true" logTarget="trace" level="info" format="{dateUTC} {timeUTC} :: {name} :: [{logLevel}] --data-- {message}" uri="http://HOST/log" logPattern=".*"/>
     <lock disableCam="false" disableMic="false" disablePrivateChat="false"
           disablePublicChat="false" lockedLayout="false" lockOnJoin="true" lockOnJoinConfigurable="false"/>
 
diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/UsersUtil.as b/bigbluebutton-client/src/org/bigbluebutton/core/UsersUtil.as
index e1444beb7a43e69ed56b475d9bacedd964704895..0dc3d7780bfd5ef9e7b8da44c01ebc37f591d11c 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/core/UsersUtil.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/core/UsersUtil.as
@@ -261,7 +261,8 @@ package org.bigbluebutton.core
       }
       var logData:Object = UsersUtil.initLogData();
       logData.tags = ["user-util"];
-      logData.message = "Could not find externUserID for userID:".concat(userID);
+			logData.userId = userID;
+      logData.logCode = "ext_userid_not_found";
       LOGGER.warn(JSON.stringify(logData));
       return "";
     }
@@ -273,7 +274,8 @@ package org.bigbluebutton.core
       }
       var logData:Object = UsersUtil.initLogData();
       logData.tags = ["user-util"];
-      logData.message = "Could not find userID for externUserID:".concat(externUserID);
+			logData.extUserId = externUserID;
+			logData.logCode = "int_userid_not_found";
       LOGGER.warn(JSON.stringify(logData));
       return null;
     }    
@@ -311,8 +313,8 @@ package org.bigbluebutton.core
 				logData.connections = BBB.initConnectionManager().getConnectionIds();
 				
 				var now:Date = new Date();
-				logData.clientTimeUTC = now.getTime();
-				logData.clientTZOffsetInMin = now.getTimezoneOffset();
+				logData.utcTime = now.getTime();
+				logData.tzOffsetMin = now.getTimezoneOffset();
         return logData;
     }
     
diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/managers/ConnectionManager.as b/bigbluebutton-client/src/org/bigbluebutton/core/managers/ConnectionManager.as
index 4517eb6a323501669c0c7fc6043e0cfbc2c0c71a..63028c8855b9398d7f47a34a2fc814ba2d2c5f52 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/core/managers/ConnectionManager.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/core/managers/ConnectionManager.as
@@ -40,12 +40,17 @@ package org.bigbluebutton.core.managers {
             connDelegate = new NetConnectionDelegate();
         }
 
-				public function getConnectionIds():Array {
-					return new Array(_appsConnId, _videoConnId, _screenshareConnId, _voiceConnId);
+				public function getConnectionIds():Object {
+					var connObject:Object = new Object();
+					connObject.apps = _appsConnId;
+					connObject.video = _videoConnId;
+					connObject.voice = _voiceConnId;
+					connObject.screenshare = _screenshareConnId;
+					return connObject;
 				}
 				
 				public function set appsConnId(id:String):void {
-					_appsConnId = "app_" + id;
+					_appsConnId = id;
 				}
 
 				public function get appsConnId():String {
@@ -53,7 +58,7 @@ package org.bigbluebutton.core.managers {
 				}
 				
 				public function set videoConnId(id:String):void {
-					_videoConnId = "vid_" + id;
+					_videoConnId = id;
 				}
 				
 				public function get videoConnId():String {
@@ -61,7 +66,7 @@ package org.bigbluebutton.core.managers {
 				}
 				
 				public function set screenshareConnId(id:String):void {
-					_screenshareConnId = "scr_" + id;
+					_screenshareConnId = id;
 				}
 				
 				public function get screenshareConnId():String {
@@ -69,7 +74,7 @@ package org.bigbluebutton.core.managers {
 				}
 				
 				public function set voiceConnId(id:String):void {
-					_voiceConnId = "voi_" + id;
+					_voiceConnId = id;
 				}
 				
 				public function get voiceConnId():String {
diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/managers/ReconnectionManager.as b/bigbluebutton-client/src/org/bigbluebutton/core/managers/ReconnectionManager.as
old mode 100644
new mode 100755
index 054a49cc432c697c6b0b9ee9d479a70385a938ae..bbd40e7d7797fe3acf23f45f8c7ab46f00d40428
--- a/bigbluebutton-client/src/org/bigbluebutton/core/managers/ReconnectionManager.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/core/managers/ReconnectionManager.as
@@ -86,9 +86,9 @@ package org.bigbluebutton.core.managers
     public function onDisconnected(type:String, callback:Function, parameters:Array):void {
       if (!_canceled) {
 		var logData:Object = UsersUtil.initLogData();
-		logData.user.connection = type;
+		logData.connection = type;
         logData.tags = ["connection"];
-		logData.message = "Connection disconnected";
+		logData.logCode = "conn_mgr_conn_disconnected";
 		LOGGER.info(JSON.stringify(logData));
 		
         var obj:Object = new Object();
@@ -107,9 +107,9 @@ package org.bigbluebutton.core.managers
 
     public function onConnectionAttemptFailed(type:String):void {
 	  var logData:Object = UsersUtil.initLogData();
-	  logData.user.connection = type; 
+	  logData.connection = type; 
       logData.tags = ["connection"];
-	  logData.message = "Reconnect attempt on connection failed.";
+	  logData.logCode = "conn_mgr_reconnect_failed";
 	  LOGGER.info(JSON.stringify(logData));
 	  
       if (_connections.hasOwnProperty(type)) {
@@ -142,9 +142,9 @@ package org.bigbluebutton.core.managers
 
     public function onConnectionAttemptSucceeded(type:String):void {
 	  var logData:Object = UsersUtil.initLogData();
-	  logData.user.connection = type;
+	  logData.connection = type;
       logData.tags = ["connection"];
-	  logData.message = "Reconnect succeeded.";
+	  logData.logData = "conn_mgr_reconnect_succeeded";
 	  LOGGER.info(JSON.stringify(logData));
 	  
       dispatchReconnectionSucceededEvent(type);
diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/model/VideoProfile.as b/bigbluebutton-client/src/org/bigbluebutton/core/model/VideoProfile.as
index 6d59301bed663c546b4b93a8020ca9defbb657f8..28681b24883ac5f78d16a87465b037c8faf21e0b 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/core/model/VideoProfile.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/core/model/VideoProfile.as
@@ -90,26 +90,28 @@ package org.bigbluebutton.core.model
             }
 
             var logData:Object = UsersUtil.initLogData();
-            logData.videoProfile = this.toString();
+            logData.videoProfile = vidProfileInfo();
             logData.tags = ["video"];
-            logData.message = "Loaded new video profile.";
+            logData.logCode = "loaded_video_profile";
             LOGGER.info(JSON.stringify(logData));
         }
 
-        public function toString():String {
-            return "VideoProfile [ "
-                + "id: " + this.id + ", "
-                + "default: " + this.defaultProfile + ", "
-                + "name: " + this.name + ", "
-                + "width: " + this.width + ", "
-                + "height: " + this.height + ", "
-                + "keyFrameInterval: " + this.keyFrameInterval + ", "
-                + "modeFps: " + this.modeFps + ", "
-                + "qualityBandwidth: " + this.qualityBandwidth + ", "
-                + "qualityPicture: " + this.qualityPicture + ", "
-                + "enableH264: " + this.enableH264 + ", "
-                + "h264Level: " + this.h264Level + ", "
-                + "h264Profile: " + this.h264Profile + " ]";
+        public function vidProfileInfo():Object {
+					var vinf:Object = new Object();
+					vinf.id = this.id;
+					vinf.defaultProfile = this.defaultProfile;
+					vinf.name = this.name;
+					vinf.width = this.width;
+					vinf.height = this.height;
+					vinf.keyFrameInterval = this.keyFrameInterval;
+					vinf.modeFps = this.modeFps;
+					vinf.qualityBandwidth = this.qualityBandwidth;
+					vinf.qualityPicture =  this.qualityPicture;
+					vinf.enableH264 = this.enableH264;
+					vinf.h264Level = this.h264Level;
+					vinf.h264Profile = this.h264Profile;
+					
+          return vinf;
         }
 
         private static function nextId():int {
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/PortTest.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/PortTest.as
index a75c08345e8a0c0bf07e1cacb773b4cc3e5ce24d..42b00bf3a8429e209db28270cb83fb9d8dec21e2 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/model/PortTest.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/PortTest.as
@@ -133,15 +133,12 @@ package org.bigbluebutton.main.model
 		public function connect():void {
 			nc = new NetConnection();
 			nc.client = this;
-
-			LOGGER.debug("Connecting PORT TEST hostname= " + this.hostname);
 			var pattern:RegExp = /(?P<protocol>.+):\/\/(?P<server>.+)/;
 			var result:Array = pattern.exec(this.hostname);
 			var useRTMPS: Boolean = result.protocol == ConnUtil.RTMPS;
 			
 			// Construct URI.
 			if (tunnel) {
-				LOGGER.debug("Connecting PORT TEST tunnel= " + tunnel);
 				var tunnelProtocol: String = ConnUtil.RTMPT;
 				if (useRTMPS) {
 					tunnelProtocol = ConnUtil.RTMPS;
@@ -150,7 +147,6 @@ package org.bigbluebutton.main.model
 				this.baseURI = tunnelProtocol + "://" + result.server + "/" + this.application;
 				
 			} else {
-				LOGGER.debug("Connecting PORT TEST tunnel= " + tunnel);
 				var nativeProtocol: String = ConnUtil.RTMP;
 				if (useRTMPS) {
 					nativeProtocol = ConnUtil.RTMPS;
@@ -165,9 +161,9 @@ package org.bigbluebutton.main.model
 			// connect to server
 			try {
                 var logData:Object = UsersUtil.initLogData();
-                logData.connection = this.baseURI;
+                logData.uri = this.baseURI;
                 logData.tags = ["initialization", "port-test", "connection"];
-                logData.message = "Port testing connection.";
+                logData.logCode = "port_test_connect";
                 LOGGER.info(JSON.stringify(logData));
         
         connectionTimer = new Timer(testTimeout, 1);
@@ -176,7 +172,6 @@ package org.bigbluebutton.main.model
         
         var curTime:Number = new Date().getTime();
 				
-				LOGGER.debug("Connecting PORT TEST = " + this.baseURI);
 				// Create connection with the server.
 				nc.connect( this.baseURI, "portTestMeetingId-" + curTime, 
 					"portTestDummyUserId-" + curTime, "portTestDummyAuthToken", "portTest-" + curTime);
@@ -193,9 +188,9 @@ package org.bigbluebutton.main.model
 		*/
 		public function connectionTimeout (e:TimerEvent) : void {
             var logData:Object = UsersUtil.initLogData();
-            logData.connection = this.baseURI;
+            logData.uri = this.baseURI;
             logData.tags = ["initialization", "port-test", "connection"];
-            logData.message = "Port testing connection timedout.";
+            logData.logCode = "port_test_connect_timedout";
             LOGGER.info(JSON.stringify(logData));
 						LOGGER.debug("Connect FAILED PORT TEST = " + this.baseURI);
 			status = "FAILED";
@@ -225,9 +220,9 @@ package org.bigbluebutton.main.model
     
     private function closeConnectionTimerHandler (e:TimerEvent) : void {
         var logData:Object = UsersUtil.initLogData();
-        logData.connection = this.baseURI;
+        logData.uri = this.baseURI;
         logData.tags = ["initialization", "port-test", "connection"];
-        logData.message = "Closing port testing connection.";
+        logData.logCode = "closing_port_test_connection";
         LOGGER.info(JSON.stringify(logData));
 
         close();
@@ -246,7 +241,6 @@ package org.bigbluebutton.main.model
             connectionTimer = null;
         }
             
-      
         var info : Object = event.info;
         var statusCode : String = info.code;
             
@@ -254,21 +248,21 @@ package org.bigbluebutton.main.model
         logData.connection = this.baseURI;
         logData.tags = ["initialization", "port-test", "connection"];
 
-				LOGGER.debug("Connect SUCCESS PORT TEST connected= " + nc.connected);
-				
         if ( statusCode == "NetConnection.Connect.Success" ) {
             status = "SUCCESS";
-            logData.message = "Port test successfully connected.";
+						logData.uri = this.baseURI;
+            logData.logCode = "port_test_connected";
             LOGGER.info(JSON.stringify(logData));
-						LOGGER.debug("Connect SUCCESS PORT TEST = " + this.baseURI);
+
             _connectionListener(status, tunnel, hostname, port, application);
         } else if ( statusCode == "NetConnection.Connect.Rejected" ||
                     statusCode == "NetConnection.Connect.Failed" || 
                     statusCode == "NetConnection.Connect.Closed" ) {
             logData.statusCode = statusCode;            
-            logData.message = "Port test failed to connect.";
+						logData.uri = this.baseURI;
+						logData.logCode = "port_test_connect_failed";
             LOGGER.info(JSON.stringify(logData));
-						LOGGER.debug("Connect FAILED (2) PORT TEST = " + this.baseURI);
+
             status = "FAILED";
             _connectionListener(status, tunnel, hostname, port, application);
             
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/modules/EnterApiService.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/modules/EnterApiService.as
index 6fce5c67deb7afef6e59675ac05f7158bee0adef..399f37baa2902f7139ef8cfd492d2076302bae05 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/model/modules/EnterApiService.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/modules/EnterApiService.as
@@ -33,7 +33,6 @@ package org.bigbluebutton.main.model.modules
     
     public function load(url:String):void {
       var date:Date = new Date();
-      LOGGER.debug("load {0}", [url]);
       request = new URLRequest(url);
       request.method = URLRequestMethod.GET;		
       
@@ -52,7 +51,10 @@ package org.bigbluebutton.main.model.modules
     }
     
     private function ioErrorHandler(event:IOErrorEvent):void {
-      LOGGER.error("ioErrorHandler: {0}", [event]);
+			var logData:Object = UsersUtil.initLogData();
+			logData.uri = request.url;
+			logData.logCode = "enter_api_io_error";
+			LOGGER.info(JSON.stringify(logData));
       if (_resultListener != null) _resultListener(false, null);
     }
     
@@ -60,12 +62,13 @@ package org.bigbluebutton.main.model.modules
       var result:Object = JSON.parse(e.target.data);
       LOGGER.debug("Enter response = {0}", [jsonXify(result)]);
       
-        var logData:Object = UsersUtil.initLogData
+        var logData:Object = UsersUtil.initLogData();
         
       var returncode:String = result.response.returncode;
       if (returncode == 'FAILED') {
         logData.tags = ["initialization"];
-        logData.message = "Enter API call failed.";
+				logData.uri = request.url;
+				logData.logCode = "enter_api_call_failed";
         LOGGER.info(JSON.stringify(logData));
 
         var dispatcher:Dispatcher = new Dispatcher();
@@ -81,7 +84,8 @@ package org.bigbluebutton.main.model.modules
         
         logData.response = response;
         logData.tags = ["initialization"];
-        logData.message = "Enter API call succeeded.";
+				logData.uri = request.url;
+				logData.logCode = "enter_api_call_succeeded";
         LOGGER.info(JSON.stringify(logData));
          
         if (_resultListener != null) _resultListener(true, response);
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/modules/ModuleDescriptor.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/modules/ModuleDescriptor.as
index dcc1a04b737beac7c02f4c1c3cbef6c50591009a..4b0bdbd7aa2aa5b680858d5161815e66e40b438d 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/model/modules/ModuleDescriptor.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/modules/ModuleDescriptor.as
@@ -136,7 +136,8 @@ package org.bigbluebutton.main.model.modules
 			var logData:Object = UsersUtil.initLogData();
 			logData.module = getName();
 			logData.tags = ["loading"];
-			logData.message = "Error loading module ".concat(e.errorText);
+			logData.error = e.errorText;
+			logData.logCode = "error_loading_module";
 			LOGGER.error(JSON.stringify(logData));
 		}
 		
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/modules/ModulesProxy.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/modules/ModulesProxy.as
index 49d7b7cb2f755ee18647802b1be28dc6b1c3b289..5030a7c5c7eefdbfb1d48af30a7da2db144949c7 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/model/modules/ModulesProxy.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/modules/ModulesProxy.as
@@ -47,7 +47,7 @@ package org.bigbluebutton.main.model.modules
             var logData:Object = UsersUtil.initLogData();
             logData.tags = ["initialization"];
             logData.tunnel = tunnel;
-            logData.message = "Successfully tested connection to server.";
+            logData.logCode = "port_test_done";
             LOGGER.info(JSON.stringify(logData));
                 
 						BBB.initConnectionManager().useProtocol(tunnel);
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/AutoReconnect.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/AutoReconnect.as
old mode 100644
new mode 100755
index e0d4c885301f614b20b7cc99f9ffff7c23080821..13db16bb75643079f43db6aadbe98d4ba6d1df5b
--- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/AutoReconnect.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/AutoReconnect.as
@@ -35,7 +35,6 @@ package org.bigbluebutton.main.model.users
     private var _attempt:Number;
 
     public function onDisconnect(callback:Function, parameters:Array):void {
-      LOGGER.debug("onDisconnect, parameters={0}", [parameters.toString()]);
       _reconnectCallback = callback;
       _reconnectParameters = parameters;
       _attempt = 0;
@@ -46,17 +45,16 @@ package org.bigbluebutton.main.model.users
       var logData:Object = UsersUtil.initLogData();
       logData.attemptNum = _attempt;
       logData.tags = ["connection"];
-      logData.message = "onConnectionAttemptFailed";
+      logData.logCode = "connection_attempt_failed";
       LOGGER.warn(JSON.stringify(logData));
       attemptReconnect(_backoff);
     }
 
     private function attemptReconnect(backoff:Number):void {
       _attempt++;
-      LOGGER.debug("attemptReconnect backoff={0}, attempt={1}", [backoff, _attempt]);
+
       var retryTimer:Timer = new Timer(backoff, 1);
       retryTimer.addEventListener(TimerEvent.TIMER, function():void {
-        LOGGER.debug("Reconnecting");
         _reconnectCallback.apply(null, _reconnectParameters);
       });
       retryTimer.start();
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as
index 405042d0ec43525ff9740e24ef8784aa99f77ed7..ac2e9093396b19b6d59774b0ed654973f5b92af3 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as
@@ -76,7 +76,7 @@ package org.bigbluebutton.main.model.users
     private function ioErrorHandler(event:IOErrorEvent):void {
       var logData:Object = UsersUtil.initLogData();
       logData.tags = ["initialization"];
-      logData.message = "IOError calling ENTER api."; 
+      logData.logCode = "enter_api_io_error"; 
       LOGGER.error(JSON.stringify(logData));
       
       var e:ConnectionFailedEvent = new ConnectionFailedEvent(ConnectionFailedEvent.USER_LOGGED_OUT);
@@ -123,13 +123,13 @@ package org.bigbluebutton.main.model.users
       
       var returncode:String = result.response.returncode;
       if (returncode == 'FAILED') {
-        logData.message = "Calling ENTER api failed."; 
+        logData.logCode = "enter_api_failed"; 
         LOGGER.info(JSON.stringify(logData));
         
         var dispatcher:Dispatcher = new Dispatcher();
         dispatcher.dispatchEvent(new MeetingNotFoundEvent(result.response.logoutURL));			
       } else if (returncode == 'SUCCESS') {
-        logData.message = "Calling ENTER api succeeded."; 
+        logData.logCode = "enter_api_succeeded"; 
         LOGGER.info(JSON.stringify(logData));
         
         var apiResponse:EnterApiResponse = new EnterApiResponse();
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/NetConnectionDelegate.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/NetConnectionDelegate.as
index 8ce2bdf9565198807c3ee7a4c09ae24e4db38e3a..54ec8adcd1d6196bc9b45f7278e1291e39f3a731 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/NetConnectionDelegate.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/NetConnectionDelegate.as
@@ -19,7 +19,6 @@
 package org.bigbluebutton.main.model.users
 {
 	import com.asfusion.mate.events.Dispatcher;
-	
 	import flash.events.AsyncErrorEvent;
 	import flash.events.IOErrorEvent;
 	import flash.events.NetStatusEvent;
@@ -29,7 +28,6 @@ package org.bigbluebutton.main.model.users
 	import flash.net.ObjectEncoding;
 	import flash.net.Responder;
 	import flash.utils.Timer;
-	
 	import org.as3commons.logging.api.ILogger;
 	import org.as3commons.logging.api.getClassLogger;
 	import org.bigbluebutton.core.BBB;
@@ -121,7 +119,6 @@ package org.bigbluebutton.main.model.users
         }   
             
         private function handleValidateAuthTokenReply2x(body: Object):void { 
-          LOGGER.debug("handleValidateAuthTokenReply2x");
             stopValidateTokenTimer();
  
             var tokenValid: Boolean = body.valid as Boolean;
@@ -133,8 +130,7 @@ package org.bigbluebutton.main.model.users
             logData.tags = ["apps", "connected"];
             logData.tokenValid = tokenValid;
             logData.waitForApproval = waitForApproval;
-            logData.status = "validate_token_response_received";
-            logData.message = "Received validate token response from server. 2x";
+            logData.logCode = "validate_token_response_received";
             LOGGER.info(JSON.stringify(logData));
             
             if (tokenValid) {
@@ -202,8 +198,7 @@ package org.bigbluebutton.main.model.users
         private function validataTokenTimerHandler(event:TimerEvent):void {
             var logData:Object = UsersUtil.initLogData();
             logData.tags = ["apps"];
-            logData.key = "validate_token_request_timedout";
-            logData.message = "No response for validate token request.";
+            logData.logCode = "validate_token_request_timedout";
             LOGGER.info(JSON.stringify(logData));
         }
 
@@ -214,8 +209,7 @@ package org.bigbluebutton.main.model.users
                               
             var header: MsgFromClientHdr = new MsgFromClientHdr("ValidateAuthTokenReqMsg");
 
-            var body: ValidateAuthTokenReqMsgBody = new ValidateAuthTokenReqMsgBody(intUserId,
-              authToken);
+            var body: ValidateAuthTokenReqMsgBody = new ValidateAuthTokenReqMsgBody(intUserId, authToken);
 
             var message: ValidateAuthTokenReqMsg = new ValidateAuthTokenReqMsg(body);
 
@@ -308,8 +302,7 @@ package org.bigbluebutton.main.model.users
             var logData:Object = UsersUtil.initLogData();
             logData.tags = ["apps", "connected"];
             logData.tokenValid = tokenValid;
-            logData.key = "validate_token_response_received";
-            logData.message = "Validate auth token timed out.";
+            logData.logCode = "validate_token_response_timedout";
             LOGGER.info(JSON.stringify(logData));
       
             if (tokenValid) {
@@ -334,8 +327,7 @@ package org.bigbluebutton.main.model.users
             var logData:Object = UsersUtil.initLogData();
             logData.tags = ["apps", "connected"];
             logData.tokenValid = tokenValid;
-            logData.status = "validate_token_response_received";
-            logData.message = "Received validate token response from server.";
+            logData.logCode = "validate_token_response_received";
             LOGGER.info(JSON.stringify(logData));
             
             if (tokenValid) {
@@ -359,17 +351,32 @@ package org.bigbluebutton.main.model.users
         }
 
         private function onReconnectSuccess():void {
+					var logData:Object = UsersUtil.initLogData();
+					logData.url = bbbAppsUrl;
+					logData.tags = ["apps", "connection"];
+					logData.app = "apps";
+					logData.reconnecting = reconnecting;
+					logData.logCode = "connection_reconnect_attempt_succeeded";
+					LOGGER.info(JSON.stringify(logData));
+					
             var attemptSucceeded:BBBEvent = new BBBEvent(BBBEvent.RECONNECT_CONNECTION_ATTEMPT_SUCCEEDED_EVENT);
             attemptSucceeded.payload.type = ReconnectionManager.BIGBLUEBUTTON_CONNECTION;
             dispatcher.dispatchEvent(attemptSucceeded);
         }
 
         private function onReconnectFailed():void {
+					var logData:Object = UsersUtil.initLogData();
+					logData.url = bbbAppsUrl;
+					logData.tags = ["apps", "connection"];
+					logData.app = "apps";
+					logData.reconnecting = reconnecting;
+					logData.logCode = "connection_reconnect_attempt_failed";
+					LOGGER.info(JSON.stringify(logData));
+					
             sendUserLoggedOutEvent();
         }
         
         private function sendConnectionSuccessEvent(userid:String):void{
-          LOGGER.debug("Sending UsersConnectionEvent.CONNECTION_SUCCESS event");
             var e:UsersConnectionEvent = new UsersConnectionEvent(UsersConnectionEvent.CONNECTION_SUCCESS);
             e.userid = userid;
             dispatcher.dispatchEvent(e);
@@ -417,7 +424,7 @@ package org.bigbluebutton.main.model.users
 									}
 								
 									bbbAppsUrl = tunnelProtocol + "://" + result.server + "/" + result.app + "/" + intMeetingId;
-									LOGGER.debug("BBB APPS CONNECT tunnel = TRUE " + "url=" +  bbbAppsUrl);
+									//LOGGER.debug("BBB APPS CONNECT tunnel = TRUE " + "url=" +  bbbAppsUrl);
 								} else {
 									var nativeProtocol: String = ConnUtil.RTMP;
 									if (useRTMPS) {
@@ -426,14 +433,16 @@ package org.bigbluebutton.main.model.users
 									}
 								
 									bbbAppsUrl = nativeProtocol + "://" + result.server + "/" + result.app + "/" + intMeetingId;
-									LOGGER.debug("BBB APPS CONNECT tunnel = FALSE " + "url=" +  bbbAppsUrl);
+									//LOGGER.debug("BBB APPS CONNECT tunnel = FALSE " + "url=" +  bbbAppsUrl);
 								
                 }
 
                 var logData:Object = UsersUtil.initLogData();
-                logData.connection = bbbAppsUrl;
+                logData.url = bbbAppsUrl;
                 logData.tags = ["apps", "connection"];
-                logData.message = "Connecting to bbb-apps.";
+								logData.app = "apps";
+                logData.logCode = "connection_connecting";
+								logData.url = bbbAppsUrl;
                 LOGGER.info(JSON.stringify(logData));
             
                 connectAttemptCount++;
@@ -473,10 +482,11 @@ package org.bigbluebutton.main.model.users
             
         public function connectionTimeout (e:TimerEvent) : void {
             var logData:Object = UsersUtil.initLogData();
-            logData.connection = bbbAppsUrl;
+            logData.url = bbbAppsUrl;
             logData.tags = ["apps", "connection"];
             logData.connectAttemptCount = connectAttemptCount;
-            logData.message = "Connecting attempt to bbb-apps timedout. Retrying.";
+						logData.app = "apps";
+            logData.logCode = "connect_attempt_timedout";
             LOGGER.info(JSON.stringify(logData));
             
             if (connectAttemptCount <= maxConnectAttempt) {
@@ -516,59 +526,63 @@ package org.bigbluebutton.main.model.users
                 connectionTimer = null;
             }
             
-
             var logData:Object = UsersUtil.initLogData();
             logData.tags = ["apps", "connection"];
-          
+          	logData.reconnecting = reconnecting;
+						logData.url = bbbAppsUrl;
+						logData.app = "apps";
+						
             switch (statusCode) {
                 case "NetConnection.Connect.Success":
                     numNetworkChangeCount = 0;
                     connectAttemptCount = 0;
-                    logData.message = "Successfully connected to bbb-apps.";
+                    logData.logCode = "connect_attempt_connected";
                     LOGGER.info(JSON.stringify(logData));
                     validateToken2x();
                     break;
 
                 case "NetConnection.Connect.Failed":
-                    logData.message = "Connection to bbb-apps failed.";
+										logData.logCode = "connect_attempt_failed";
                     LOGGER.info(JSON.stringify(logData));
                     sendConnectionFailedEvent(ConnectionFailedEvent.CONNECTION_FAILED);	
                     break;
 
                 case "NetConnection.Connect.Closed":
-                    logData.message = "NetConnection.Connect.Closed on bbb-apps";
+										logData.logCode = "connection_closed";
                     LOGGER.info(JSON.stringify(logData));
                     sendConnectionFailedEvent(ConnectionFailedEvent.CONNECTION_CLOSED);
                     break;
 
                 case "NetConnection.Connect.InvalidApp":
-                    logData.message = "bbb-app not found.";
+										logData.logCode = "connect_attempt_invalid_app";
                     LOGGER.info(JSON.stringify(logData));
                     sendConnectionFailedEvent(ConnectionFailedEvent.INVALID_APP);
                     break;
 
                 case "NetConnection.Connect.AppShutDown":
-                    LOGGER.debug(":viewers application has been shutdown");
+										logData.logCode = "connection_app_shutdown";
+										LOGGER.info(JSON.stringify(logData));
                     sendConnectionFailedEvent(ConnectionFailedEvent.APP_SHUTDOWN);
                     break;
 
                 case "NetConnection.Connect.Rejected":
                     var appURL:String = _applicationOptions.uri;
-                    LOGGER.debug(":Connection to the server rejected. Uri: {0}. Check if the red5 specified in the uri exists and is running", [appURL]);
+										logData.logCode = "connect_attempt_rejected";
+										LOGGER.info(JSON.stringify(logData));
                     sendConnectionFailedEvent(ConnectionFailedEvent.CONNECTION_REJECTED);
                     break;
                 
                 case "NetConnection.Connect.NetworkChange":
                     numNetworkChangeCount++;
-                    if (numNetworkChangeCount % 2 == 0) {
-                        logData.message = "Detected network change on bbb-apps";
-                        logData.numNetworkChangeCount = numNetworkChangeCount;
-                        LOGGER.info(JSON.stringify(logData));
-                    }
+										logData.logCode = "connection_network_change";
+                    logData.numNetworkChangeCount = numNetworkChangeCount;
+                    LOGGER.info(JSON.stringify(logData));
                     break;
 
                 default :
-                    LOGGER.debug(":Default status to the viewers application" );
+										logData.logCode = "connection_failed_unknown_reason";
+										logData.statusCode = statusCode;
+										LOGGER.info(JSON.stringify(logData));
                     sendConnectionFailedEvent(ConnectionFailedEvent.UNKNOWN_REASON);
                     break;   
              }
@@ -577,7 +591,8 @@ package org.bigbluebutton.main.model.users
         protected function netSecurityError(event: SecurityErrorEvent):void {
             var logData:Object = UsersUtil.initLogData();
             logData.tags = ["apps", "connection"];
-            logData.message = "Security error - " + event.text;
+						logData.app = "apps";
+						logData.logCode = "connection_security_error";
             LOGGER.info(JSON.stringify(logData));
             sendConnectionFailedEvent(ConnectionFailedEvent.UNKNOWN_REASON);
         }
@@ -585,14 +600,19 @@ package org.bigbluebutton.main.model.users
         protected function netIOError(event: IOErrorEvent):void {
             var logData:Object = UsersUtil.initLogData();
             logData.tags = ["apps", "connection"];
-            logData.message = "Input/output error - " + event.text;
+						logData.app = "apps";
+						logData.logCode = "connection_io_error";
             LOGGER.info(JSON.stringify(logData));
 
             sendConnectionFailedEvent(ConnectionFailedEvent.UNKNOWN_REASON);
         }
 
         protected function netASyncError(event: AsyncErrorEvent):void  {
-            LOGGER.debug("Asynchronous code error - {0}", [event.toString()]);
+					var logData:Object = UsersUtil.initLogData();
+					logData.tags = ["apps", "connection"];
+					logData.app = "apps";
+					logData.logCode = "connection_async_error";
+					LOGGER.info(JSON.stringify(logData));
             sendConnectionFailedEvent(ConnectionFailedEvent.UNKNOWN_REASON);
         }
 
@@ -601,24 +621,25 @@ package org.bigbluebutton.main.model.users
             logData.tags = ["apps", "connection"];
 
             if (this.guestKickedOutCommand) {
-                logData.reason = "Guest kicked out.";
-                logData.message = "User disconnected from BBB App.";
+								logData.app = "apps";
+								logData.logCode = "guest_kicked_out";
                 LOGGER.info(JSON.stringify(logData));
 
                 sendGuestUserKickedOutEvent();
             } else if (this.logoutOnUserCommand) {
-                logData.reason = "User requested.";
-                logData.message = "User logged out from BBB App.";
+								logData.app = "apps";
+								logData.logCode = "user_logged_out";
                 LOGGER.info(JSON.stringify(logData));
                    
                 sendUserLoggedOutEvent();
             } else if (reason == ConnectionFailedEvent.CONNECTION_CLOSED && !UsersUtil.isUserEjected()) {
                 // do not try to reconnect if the connection failed is different than CONNECTION_CLOSED  
-                logData.reason = reason;
-                logData.message = "User disconnected from BBB App.";
-                LOGGER.info(JSON.stringify(logData));
-
                 if (reconnecting) {
+									logData.reason = reason;
+									logData.app = "apps";
+									logData.logCode = "reconnect_attempt_failed";
+									LOGGER.info(JSON.stringify(logData));
+									
                     var attemptFailedEvent:BBBEvent = new BBBEvent(BBBEvent.RECONNECT_CONNECTION_ATTEMPT_FAILED_EVENT);
                     attemptFailedEvent.payload.type = ReconnectionManager.BIGBLUEBUTTON_CONNECTION;
                     dispatcher.dispatchEvent(attemptFailedEvent);
@@ -626,6 +647,11 @@ package org.bigbluebutton.main.model.users
                     reconnecting = true;
                     LiveMeeting.inst().me.authTokenValid = false;
 
+										logData.reason = reason;
+										logData.app = "apps";
+										logData.logCode = "reconnecting_attempt";
+										LOGGER.info(JSON.stringify(logData));
+										
                     var disconnectedEvent:BBBEvent = new BBBEvent(BBBEvent.RECONNECT_DISCONNECTED_EVENT);
                     disconnectedEvent.payload.type = ReconnectionManager.BIGBLUEBUTTON_CONNECTION;
                     disconnectedEvent.payload.callback = connect;
@@ -634,14 +660,21 @@ package org.bigbluebutton.main.model.users
                 }
             } else {
                 if (UsersUtil.isUserEjected()) {
-                    logData.message = "User has been ejected from meeting.";
+									
+										logData.reason = reason;
+										logData.app = "apps";
+										logData.logCode = "user_ejected_from_meeting";
+										LOGGER.info(JSON.stringify(logData));
+
                     LOGGER.info(JSON.stringify(logData));
                     reason = ConnectionFailedEvent.USER_EJECTED_FROM_MEETING;
                     var cfe:ConnectionFailedEvent = new ConnectionFailedEvent(reason);
                     dispatcher.dispatchEvent(cfe);
                 } else {
-                    logData.message = "Connection failed event - " + reason;
-                    LOGGER.info(JSON.stringify(logData));
+										logData.reason = reason;
+										logData.app = "apps";
+										logData.logCode = "connection_failed";
+										LOGGER.info(JSON.stringify(logData));
                     var e:ConnectionFailedEvent = new ConnectionFailedEvent(reason);
                     dispatcher.dispatchEvent(e);
                 }
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/FlashMicSettings.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/FlashMicSettings.mxml
index 7ccbf190c7fc1be6ea1cd8c7e9d88f3c568bf338..07d56dc98f4fa109431d33e68e2d15509943d461 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/views/FlashMicSettings.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/FlashMicSettings.mxml
@@ -129,13 +129,13 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
         switch(event.code) {
           case "Microphone.Muted":
             logData.tags = ["voice", "flash"];
-            logData.message = "Access to microphone has been denied.";
+            logData.logCode = "denied_mic_access";
             LOGGER.info(JSON.stringify(logData));
             statusText.text = "You did not allow Flash to access your mic.";
             break;
           case "Microphone.Unmuted":         
             logData.tags = ["voice", "flash"];
-            logData.message = "Access to the microphone has been allowed.";
+            logData.logCode = "allowed_mic_access";
             LOGGER.info(JSON.stringify(logData));
             
             // Comment these next 2-lines. We don't want the user hearing audio
@@ -159,7 +159,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
       }
       
 			private function onCreationComplete():void {
-				LOGGER.debug("onCreationComplete. Seeting state to [flashMicSettingsTest]");
 				microphoneList = Media.getMicrophoneNames();
 				setupForMicLoopbackTest();
 			}						
@@ -294,7 +293,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
       private function yesButtonClicked():void {
         var logData:Object = UsersUtil.initLogData();
         logData.tags = ["voice"];
-        logData.message = "Echo test passed.";
+        logData.logCode = "flash_echo_test_passed";
         LOGGER.info(JSON.stringify(logData));
 
         cleanUp();
@@ -307,7 +306,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
       private function noButtonClicked():void {
         var logData:Object = UsersUtil.initLogData();
         logData.tags = ["voice"];
-        logData.message = "Echo test failed.";
+        logData.logCode = "flash_echo_test_failed";
         LOGGER.info(JSON.stringify(logData));
         
         dispatchEvent(new FlashEchoTestNoAudioEvent());
@@ -315,15 +314,13 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
         setupForMicLoopbackTest();
       }
             
-      private function flashMicSettingsCreated():void {        
-		LOGGER.debug("Available microphones: {0}", [microphoneList]);         
+      private function flashMicSettingsCreated():void {                
         testMicrophoneLoopback();				         
       }
       
       private function setupForEchoTestFailed():void
       {
         dotTimer.stop();
-		LOGGER.debug("Setting state to {0}", [FLASH_MIC_TEST_FAILED_STATE]);
         setCurrentState(FLASH_MIC_TEST_FAILED_STATE);			
       }
 			
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/LoggedOutWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/LoggedOutWindow.mxml
index 5944ab14ad8d7d3699e36a05d6e596753c60baa2..16ea0ad053a63c82fa63ddcdf7aa3550034b5b97 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/views/LoggedOutWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/LoggedOutWindow.mxml
@@ -35,7 +35,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 	<fx:Script>
 		<![CDATA[
 			import com.asfusion.mate.events.Dispatcher;
-
 			import flash.net.URLLoader;
 			import flash.net.URLRequest;
 			import flash.net.URLRequestMethod;
@@ -77,12 +76,13 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 					logData.reason = logoutReason;
 					logData.extUserId = UsersUtil.getMyExternalUserID();
 					logData.role = UsersUtil.getMyRole();
+					logData.logCode = "user_feedback";
 					LOGGER.info(JSON.stringify(logData));
 				}
 
 				var logoutURL:String = BBB.getSignoutURL();
 				var request:URLRequest = new URLRequest(logoutURL);
-				LOGGER.debug("Log out url: " + logoutURL);
+				
 				request.method = URLRequestMethod.GET;
 				urlLoader = new URLLoader();
 				// If the redirect value is set to false handleComplete will be triggered
@@ -104,14 +104,13 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 			private function handleRedirectError(e:IOErrorEvent):void {
 				var logData:Object = UsersUtil.initLogData();
 				logData.tags = ["logout"];
-				logData.message = "Log out redirection returned with error.";
+				logData.logCode = "logout_redirect_returned_error";
 				LOGGER.error(JSON.stringify(logData));
 				PopUpUtil.removePopUp(this);
 				exitApplication();
 			}
 
 			private function onUserLoggedOutWindowClose(e:Event):void {
-				LOGGER.debug("Closing UserLoggedOutWindow");
 				PopUpUtil.removePopUp(this);
 			}
 
@@ -120,7 +119,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 				
 				var logData:Object = UsersUtil.initLogData();
 				logData.tags = ["connection"];
-				logData.message = "User logged out.";
+				logData.logCode = "user_logged_out_reason_display";
 				logData.reason = reason;
 				LOGGER.info(JSON.stringify(logData));
 
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml
index a471e6f19b8404479162229b39fc48b495257493..de19daaf221240bfbbf6041b86bab496ac9d5c72 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml
@@ -318,7 +318,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 			private function setGuestPolicy(event:BBBEvent):void {
 				guestPolicy = event.payload.guestPolicy;
 				if(guestManagement == null) {
-					LOGGER.debug("ADD Guest Event");
 					guestManagement = new GuestManagement();
 					guestManagement.setGuestPolicy(guestPolicy);
 					guestManagement.addToSettings();
@@ -362,20 +361,17 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
                     logData.localeVersion = localeVersion;
                     logData.tags = ["locale"];
                     logData.appVersion = appVersion;
-                    logData.message = "Received locale version from config.xml";
+                    logData.logCode = "config_xml_locale_version";
                     LOGGER.info(JSON.stringify(logData));
-      
-					LOGGER.debug("Received locale version fron config.xml");
 				} else {
 					receivedResourceLocaleVer = true;
 
                     logData.tags = ["locale"];
-                    logData.message = "Received locale version from locale file";
+                    logData.logCode = "locale_file_locale_version";
                     LOGGER.info(JSON.stringify(logData));
 				}
 				
 				if (receivedConfigLocaleVer && receivedResourceLocaleVer) {
-					LOGGER.debug("Comparing locale versions.");
 					if (!event.suppressLocaleWarning) checkLocaleVersion(localeVersion);
 					if (sendStartModulesEvent) {
             
@@ -386,7 +382,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 			}
 			
 			public function sendStartAllModulesEvent():void{
-				LOGGER.debug("Sending start all modules event");
 				var dispatcher:Dispatcher = new Dispatcher();
 				dispatcher.dispatchEvent(new ModuleLoadEvent(ModuleLoadEvent.START_ALL_MODULES));	
 			}
@@ -433,7 +428,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 
 			private function closeWaitWindow(e:BBBEvent):void {
 				if(waitWindow != null && e.payload.type == "BIGBLUEBUTTON_CONNECTION") {
-					LOGGER.debug("closeWaitWindow");
 					waitWindow.removeWindow();
 				}
 			}
@@ -476,7 +470,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 			}
 
 			private function toggleFullScreen():void{
-				LOGGER.debug("Toggling fullscreen");
 				if (ExternalInterface.available) {
 					ExternalInterface.call("toggleFullscreen");
 				}
@@ -563,7 +556,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
                 logData.localeVersion = version;
                 logData.locale = ResourceUtil.getInstance().getCurrentLanguageCode();
                 logData.tags = ["locale"];
-                logData.message = "Loaded locale.";
+                logData.logCode = "locale_loaded";
                 LOGGER.info(JSON.stringify(logData));
                     
 				if ((version == "old-locales") || StringUtils.isEmpty(version)) {
@@ -725,18 +718,18 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 			private function redirectToLogoutUrl ():void {
         		var logoutURL:String = BBB.getLogoutURL();
 				var request:URLRequest = new URLRequest(logoutURL);
-				LOGGER.debug("Logging out to: {0}", [logoutURL]);
+
 				navigateToURL(request, '_self');
 			}
 			
 
 			private function handleLogoutError(e:Event):void {
-				LOGGER.debug("Call to signOut URL failed.");
+
 				redirectToLogoutUrl();
 			}
 			
 			private function handleLogoutComplete(e:Event):void {	
-				LOGGER.debug("Call to signOut URL succeeded.");
+
 				redirectToLogoutUrl();
 			}
 			
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml
index fb339ddb322ae4fe0fde62ee8b7633093c53e530..af7c7f058dde3a209921d4cd103944751f4ac544 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml
@@ -239,7 +239,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 				var logData:Object = UsersUtil.initLogData();
 				logData.tags = ["initialization"];
 				logData.browser = browser;
-				logData.message = "Browser info.";
+				logData.logCode = "browser_info";
 				LOGGER.info(JSON.stringify(logData));
 			}
 			
@@ -297,7 +297,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
          var logData:Object = UsersUtil.initLogData();
          logData.tags = ["initialization"];
          logData.capabilities = getFlashPlayerCapabilities();
-         logData.message = "Flash Player Capabilities.";
+         logData.logCode = "flash_player_ capabilities";
          LOGGER.info(JSON.stringify(logData));
      }
 
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/ResponsivenessTimer.as b/bigbluebutton-client/src/org/bigbluebutton/main/views/ResponsivenessTimer.as
index bae8f026031a15856951e8f1326d2c7c8ea32ff3..961b511aa0f9da06038ef09e871271f026e311bb 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/views/ResponsivenessTimer.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/ResponsivenessTimer.as
@@ -41,7 +41,7 @@ package org.bigbluebutton.main.views
         var logData:Object = UsersUtil.initLogData();
         logData.tags = ["responsiveness"];
         logData.freezeSec = timeDiff / 1000; 
-        logData.message = "Flash client unresponsive.";
+        logData.logCode = "flash_client_unresponsive";
         LOGGER.info(JSON.stringify(logData));
       }
       
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/VideoWithWarnings.as b/bigbluebutton-client/src/org/bigbluebutton/main/views/VideoWithWarnings.as
index 0129920432361b0364223f82c263361b3ce9ccd2..0f2d3e9f67b0034c6aaf72801ca98b91c725b4fb 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/views/VideoWithWarnings.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/VideoWithWarnings.as
@@ -168,7 +168,6 @@ package org.bigbluebutton.main.views
         }
 
         private function displayVideoPreview():void {
-            LOGGER.debug("Using this video profile:: {0}", [_videoProfile.toString()]);
             _camera.setMotionLevel(5, 1000);
             _camera.setKeyFrameInterval(_videoProfile.keyFrameInterval);
             _camera.setMode(_videoProfile.width, _videoProfile.height, _videoProfile.modeFps);
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/WebRTCEchoTest.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/WebRTCEchoTest.mxml
index 982e0d5ed37572c9bce5b94031ff4608c5736ac9..930f06b0f7a9c050f4e4e45d8dd460e64d33f677 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/views/WebRTCEchoTest.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/WebRTCEchoTest.mxml
@@ -143,7 +143,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
         var logData:Object = UsersUtil.initLogData();       
         logData.reason = "User requested.";
         logData.tags = ["voice", "webrtc"];
-        logData.message = "WebRtc Echo test passed.";
+        logData.logCode = "webrtc_echo_test_passed";
         LOGGER.info(JSON.stringify(logData));
         
 				setCurrentState("connecting");
@@ -159,7 +159,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
                 var logData:Object = UsersUtil.initLogData();       
                 logData.reason = "User requested.";
                 logData.tags = ["voice", "webrtc"];
-                logData.message = "WebRtc Echo test failed.";                
+                logData.logCode = "webrtc_echo_test_failed";                
                 LOGGER.info(JSON.stringify(logData));
                 
 				var dispatcher:Dispatcher = new Dispatcher();
@@ -235,7 +235,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
         var logData:Object = UsersUtil.initLogData();       
         logData.reason = "User requested.";
         logData.tags = ["voice", "webrtc"];
-        logData.message = "WebRtc call started.";
+        logData.logCode = "webrtc_call_started";
                 
         LOGGER.info(JSON.stringify(logData));
         
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/broadcast/models/Stream.as b/bigbluebutton-client/src/org/bigbluebutton/modules/broadcast/models/Stream.as
index 6764a035f9da4709b51c18faf88346f870b6abff..ce574b744702c8b000c868b13575b37a1102b7ed 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/broadcast/models/Stream.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/broadcast/models/Stream.as
@@ -90,7 +90,7 @@ package org.bigbluebutton.modules.broadcast.models
 			var logData:Object = UsersUtil.initLogData();
 			logData.tags = ["video"];
 			logData.streamStatus = evt.info.code;
-			logData.message = "NetStreamStatus";
+			logData.logCode = "netstream_status";
 			var stringLog:String = JSON.stringify(logData);
 
 			switch(evt.info.code) {
@@ -118,7 +118,6 @@ package org.bigbluebutton.modules.broadcast.models
 		}
 		
 		private function connect():void {
-			LOGGER.debug("Connecting {0}", [uri]);
 			nc = new NetConnection();
 			nc.objectEncoding = ObjectEncoding.AMF3;
 			nc.proxyType = "best";
@@ -130,35 +129,39 @@ package org.bigbluebutton.modules.broadcast.models
 
 		private function netStatus(evt:NetStatusEvent ):void {
 			var logData:Object = UsersUtil.initLogData();
-			logData.tags = ["video"];
+			logData.tags = ["broadcast"];
 			logData.streamStatus = evt.info.code;
-
+			logData.streamId = streamName;
+			
 			switch(evt.info.code) {
 				case "NetConnection.Connect.Success":
-					logData.message = "Successfully connected to broadcast application.";
+					logData.logCode = "conn_connected";
 					LOGGER.debug(JSON.stringify(logData));
 					displayVideo();
 					break;
 				case "NetConnection.Connect.Failed":
-					logData.message = "Failed to connect to broadcast application.";
+					logData.logCode = "conn_failed";
 					LOGGER.error(JSON.stringify(logData));
 					break;
 				case "NetConnection.Connect.Closed":
-					logData.message = "Connection to broadcast application has closed.";
-					LOGGER.debug(JSON.stringify(logData));
+					logData.logCode = "conn_closed";
+					LOGGER.error(JSON.stringify(logData));
 					break;
 				case "NetConnection.Connect.Rejected":
-					logData.message = "Connection to broadcast application was rejected.";
+					logData.logCode = "conn_rejected";
 					LOGGER.warn(JSON.stringify(logData));
 					break;
 				default:
-					logData.message = "Connection to broadcast application failed";
+					logData.logCode = "conn_failed_unknown_reason";
 					LOGGER.error(JSON.stringify(logData));
 			}
 		}
 
 		private function securityErrorHandler(event:SecurityErrorEvent):void {
-			LOGGER.debug("securityErrorHandler: {0}", [event]);
+			var logData:Object = UsersUtil.initLogData();
+			logData.tags = ["video"];
+			logData.logCode = "conn_security_error";
+			var stringLog:String = JSON.stringify(logData);
 		}
 		
 		public function onBWCheck(... rest):Number { 
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/layout/managers/LayoutManager.as b/bigbluebutton-client/src/org/bigbluebutton/modules/layout/managers/LayoutManager.as
index 8789bd413f8f2be157101797fdc91088fa810d0b..f6d590579767978cac69aa9f95f577fc776744a3 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/layout/managers/LayoutManager.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/layout/managers/LayoutManager.as
@@ -262,7 +262,7 @@ package org.bigbluebutton.modules.layout.managers
       var logData:Object = UsersUtil.initLogData();
       logData.reason = "Layout changed.";
       logData.tags = ["layout"];
-      logData.message = "The layout was changed.";
+      logData.logCode = "layout_changed";
       logData.oldLayout = _currentLayout.name;
       logData.newLayout = newLayout.name;
       LOGGER.info(JSON.stringify(logData));
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/layout/model/LayoutDefinition.as b/bigbluebutton-client/src/org/bigbluebutton/modules/layout/model/LayoutDefinition.as
index 8fc9e3c2882662ba568537c9d7e92f6855953d39..de185e442a21fa17fa09e96184d6b87bb2485d72 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/layout/model/LayoutDefinition.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/layout/model/LayoutDefinition.as
@@ -94,7 +94,7 @@ package org.bigbluebutton.modules.layout.model {
 			} else {
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["layout"];
-                logData.message = "There's no layout that fits the participants profile."; 
+                logData.logCode = "layout_not_found"; 
                 LOGGER.error(JSON.stringify(logData));
 
 				return null;
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/layout/services/MessageSender.as b/bigbluebutton-client/src/org/bigbluebutton/modules/layout/services/MessageSender.as
index 236bb2d67c76f81716c694d3d155f46e2e8efbaf..af88c2f8055b670872b0e04b2aa33b6e656b7c61 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/layout/services/MessageSender.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/layout/services/MessageSender.as
@@ -22,7 +22,7 @@ package org.bigbluebutton.modules.layout.services {
 			}, function(status:String):void { // status - On error occurred
 				var logData:Object = UsersUtil.initLogData();
 				logData.tags = ["apps"];
-				logData.message = "Error occured requesting current layout.";
+				logData.logCode = "error_sending_request_current_layout";
 				LOGGER.info(JSON.stringify(logData));
 			}, JSON.stringify(message));
 		}
@@ -36,7 +36,7 @@ package org.bigbluebutton.modules.layout.services {
 			}, function(status:String):void { // status - On error occurred
 				var logData:Object = UsersUtil.initLogData();
 				logData.tags = ["apps"];
-				logData.message = "Error occured broadcasting layout.";
+				logData.logCode = "error_sending_broadcast_layout";
 				LOGGER.info(JSON.stringify(logData));
 			}, JSON.stringify(message));
 		}
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/ConnectionManager.as b/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/ConnectionManager.as
index 5dd8ac271b96afdd745f5fa7da8072f08982ee8b..136b1ceed944f9ea85989d669a243787bc2df8c1 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/ConnectionManager.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/ConnectionManager.as
@@ -77,7 +77,6 @@ package org.bigbluebutton.modules.phone.managers {
 		}
 		
     public function setup(uid:String, externUserId:String, username:String, meetingId:String, uri:String):void {	
-	  LOGGER.debug("Setup uid=[{0}] extuid=[{1}] name=[{2}] uri=[{3}]", [uid, externUserId, username, uri]);
       this.uid = uid;	
       this.username  = username;
       this.meetingId = meetingId;
@@ -104,7 +103,6 @@ package org.bigbluebutton.modules.phone.managers {
 					}
 						
 					uri = tunnelProtocol + "://" + result.server + "/" + result.app;
-					LOGGER.debug("BBB SIP CONNECT tunnel = TRUE " + "url=" +  uri);
 				} else {
 					var nativeProtocol: String = ConnUtil.RTMP;
 					if (useRTMPS) {
@@ -113,11 +111,8 @@ package org.bigbluebutton.modules.phone.managers {
 					}
 					
 					uri = nativeProtocol + "://" + result.server + "/" + result.app;
-					LOGGER.debug("BBB SIP CONNECT tunnel = FALSE " + "url=" +  uri);
 				}
-				
-				LOGGER.debug("VOICE CONF == Connecting to uri=[{0}]", [uri]);
-				
+								
 				netConnection.objectEncoding = ObjectEncoding.AMF3;
 
 				netConnection.client = this;
@@ -127,6 +122,13 @@ package org.bigbluebutton.modules.phone.managers {
 				var connId:String = ConnUtil.generateConnId();
 				BBB.initConnectionManager().voiceConnId = connId;
 				
+				var logData:Object = UsersUtil.initLogData();
+				logData.tags = ["voice"];
+				logData.app = "voice";
+				logData.logCode = "connection_connecting";
+				logData.url = uri;
+				LOGGER.info(JSON.stringify(logData));
+				
 				var authToken: String = LiveMeeting.inst().me.authToken;
 				netConnection.connect(uri, meetingId, externUserId, username, authToken, 
 					BBB.initConnectionManager().voiceConnId);
@@ -181,45 +183,55 @@ package org.bigbluebutton.modules.phone.managers {
       var statusCode : String = info.code;
       
       var logData:Object = UsersUtil.initLogData();
-      
+			logData.tags = ["voice", "flash"];
+			logData.app = "voice";
+			logData.uri = uri;
+			
       switch (statusCode) {
         case "NetConnection.Connect.Success":
           numNetworkChangeCount = 0;
-          logData.tags = ["voice", "flash"];
-          logData.message = "Connection success.";
+					logData.logCode = "connect_attempt_connected";
           LOGGER.info(JSON.stringify(logData));
           handleConnectionSuccess();
           break;
         case "NetConnection.Connect.Failed":
-          logData.tags = ["voice", "flash"];
-		  logData.message = "NetConnection.Connect.Failed from bbb-voice";
-		  LOGGER.info(JSON.stringify(logData));
+					logData.logCode = "connect_attempt_failed";
+		  		LOGGER.info(JSON.stringify(logData));
           handleConnectionFailed();
           break;
         case "NetConnection.Connect.NetworkChange":
           numNetworkChangeCount++;
-          if (numNetworkChangeCount % 2 == 0) {
-              logData.tags = ["voice", "flash"];
-             logData.message = "Detected network change on bbb-voice";
-             logData.numNetworkChangeCount = numNetworkChangeCount;
-             LOGGER.info(JSON.stringify(logData));
-          }
+					logData.logCode = "connection_network_change";
+					logData.numNetworkChangeCount = numNetworkChangeCount;
+          LOGGER.info(JSON.stringify(logData));
           break;
         case "NetConnection.Connect.Closed":
-          logData.tags = ["voice", "flash"];
-		  logData.message = "Disconnected from BBB Voice";
-		  LOGGER.info(JSON.stringify(logData));
+					logData.logCode = "connection_closed";
+		  		LOGGER.info(JSON.stringify(logData));
           handleConnectionClosed();
           break;
+				default:
+					logData.logCode = "connection_failed_unknown_reason";
+					logData.statusCode = event.info.code;
+					LOGGER.info(JSON.stringify(logData));
+					break;
       }
 		} 
 		
 		private function asyncErrorHandler(event:AsyncErrorEvent):void {
-			LOGGER.error("AsyncErrorEvent: {0}", [event]);
+			var logData:Object = UsersUtil.initLogData();
+			logData.tags = ["voice", "connection"];
+			logData.app = "voice";
+			logData.logCode = "connection_async_error";
+			LOGGER.info(JSON.stringify(logData));
     }
 		
 		private function securityErrorHandler(event:SecurityErrorEvent):void {
-			LOGGER.error("securityErrorHandler: {0}", [event]);
+			var logData:Object = UsersUtil.initLogData();
+			logData.tags = ["voice", "connection"];
+			logData.app = "voice";
+			logData.logCode = "connection_security_error";
+			LOGGER.info(JSON.stringify(logData));
     }
         
     //********************************************************************************************
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/FlashCallManager.as b/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/FlashCallManager.as
index 8c5a45ca7a812f9a22c9318a15d914d9454b20a4..0a4816c699fcf4d9a9df72c143b61b115b2c2e14 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/FlashCallManager.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/FlashCallManager.as
@@ -292,26 +292,26 @@
       
       switch (state) {
         case CALLING_INTO_CONFERENCE:
-		  logData.message = "Successfully joined the voice conference";
-          LOGGER.info(jsonXify(logData));
+		  		logData.logCode = "flash_joined_voice_conf_success";
+          LOGGER.info(JSON.stringify(logData));
           state = IN_CONFERENCE;
           dispatcher.dispatchEvent(new FlashJoinedVoiceConferenceEvent());
           streamManager.callConnected(event.playStreamName, event.publishStreamName, event.codec, event.listenOnlyCall);
           break;
         case CONNECTING_TO_LISTEN_ONLY_STREAM:
-		  logData.message = "Successfully connected to the listen only stream.";
-          LOGGER.info(jsonXify(logData));
+		  		logData.logCode = "flash_joined_listen_only";
+          LOGGER.info(JSON.stringify(logData));
           state = ON_LISTEN_ONLY_STREAM;
           dispatcher.dispatchEvent(new FlashJoinedListenOnlyVoiceConferenceEvent());
           streamManager.callConnected(event.playStreamName, event.publishStreamName, event.codec, event.listenOnlyCall);
           break;
         case CALLING_INTO_ECHO_TEST:
           state = IN_ECHO_TEST;
-		  logData.message = "Successfully called into the echo test application.";
-		  logData.publishStreamName = event.publishStreamName;
-		  logData.playStreamName = event.playStreamName;
-		  logData.codec = event.codec;
-		  LOGGER.info(jsonXify(logData));
+		  		logData.logCode = "flash_echo_test_success";
+		  		logData.publishStreamName = event.publishStreamName;
+		  		logData.playStreamName = event.playStreamName;
+		  		logData.codec = event.codec;
+		  		LOGGER.info(JSON.stringify(logData));
 		  
           streamManager.callConnected(event.playStreamName, event.publishStreamName, event.codec, event.listenOnlyCall);
           
@@ -335,14 +335,14 @@
           break;
         case ON_LISTEN_ONLY_STREAM:
           state = INITED;
-		  logData.message = "Flash user left the listen only stream.";
-          LOGGER.info(jsonXify(logData));
-		  dispatcher.dispatchEvent(new FlashLeftVoiceConferenceEvent());
+		  		logData.logCode = "flash_left_listen_only";
+          LOGGER.info(JSON.stringify(logData));
+		  		dispatcher.dispatchEvent(new FlashLeftVoiceConferenceEvent());
           break;
         case IN_ECHO_TEST:
           state = INITED;
-		  logData.message = "Flash echo test stopped.";
-		  LOGGER.info(jsonXify(logData));
+		  		logData.logCode = "flash_echo_test_stopped";
+		  		LOGGER.info(JSON.stringify(logData));
 
           dispatcher.dispatchEvent(new FlashEchoTestStoppedEvent());
           break;
@@ -352,8 +352,8 @@
           break;
         case CALLING_INTO_ECHO_TEST:
           state = INITED;
-		  logData.message = "Unsuccessfully called into the echo test application.";
-		  LOGGER.info(jsonXify(logData));
+		  		logData.logCode = "flash_failed_calling_echo_test";
+		  		LOGGER.info(JSON.stringify(logData));
           dispatcher.dispatchEvent(new FlashEchoTestFailedEvent());
           break;
         default:
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 732d6406026782f56c7844cbd82cac80944d53fb..eaaf7ed6feb15f75562d5866f67a2a13614fa08e 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/WebRTCCallManager.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/WebRTCCallManager.as
@@ -59,7 +59,6 @@ package org.bigbluebutton.modules.phone.managers
     }
     
     private function isWebRTCSupported():Boolean {
-      LOGGER.debug("isWebRTCSupported - ExternalInterface.available=[{0}], isWebRTCAvailable=[{1}]", [ExternalInterface.available, ExternalInterface.call("isWebRTCAvailable")]);
       return (ExternalInterface.available && ExternalInterface.call("isWebRTCAvailable"));
     }
     
@@ -75,7 +74,6 @@ package org.bigbluebutton.modules.phone.managers
     private function checkIfToUseWebRTC():Boolean {
       var webRTCSupported:Boolean = isWebRTCSupported();
       
-	  LOGGER.debug("checkIfToUseWebRTC - useWebRTCIfAvailable=[{0}], isWebRTCSupported=[{1}]", [options.useWebRTCIfAvailable, webRTCSupported]);
       if (options.useWebRTCIfAvailable && webRTCSupported) {
         return true;
       }      
@@ -105,7 +103,6 @@ package org.bigbluebutton.modules.phone.managers
     }
     
     public function handleWebRTCEchoTestNoAudioEvent():void {
-	  LOGGER.debug("handleWebRTCEchoTestNoAudioEvent");
       model.state = Constants.ECHO_TEST_FAILED;
       endEchoTest();
       
@@ -115,13 +112,13 @@ package org.bigbluebutton.modules.phone.managers
     private var t:Timer;
     
     public function handleWebRTCEchoTestHasAudioEvent():void {
-      LOGGER.debug("handleWebRTCEchoTestHasAudioEvent");
+
       model.state = Constants.STOP_ECHO_THEN_JOIN_CONF;
       endEchoTestJoinConference();
     }
     
     public function handleWebRTCCallStartedEvent():void {
-	  LOGGER.debug("setting state to IN_CONFERENCE");
+
       model.state = Constants.IN_CONFERENCE;
       dispatcher.dispatchEvent(new WebRTCJoinedVoiceConferenceEvent());
       if(reconnecting) {
@@ -186,10 +183,10 @@ package org.bigbluebutton.modules.phone.managers
         errorString = ResourceUtil.getInstance().getString("bbb.webrtcWarning.failedError.unknown", [event.errorCode]);
       }
       
-        var logData:Object = UsersUtil.initLogData();
+      var logData:Object = UsersUtil.initLogData();
       logData.user.reason = errorString;
       logData.tags = ["voice", "webrtc"];
-      logData.message = "WebRtc Echo test failed.";
+      logData.logCode = "call_manager_webrtc_echo_test_failed";
       logData.errorEvent = {code: event.errorCode, cause: event.cause};
       LOGGER.info(jsonXify(logData));
 
@@ -207,7 +204,7 @@ package org.bigbluebutton.modules.phone.managers
       var logData:Object = UsersUtil.initLogData();
       logData.user.reason = errorString;
       logData.tags = ["voice", "webrtc"];
-      logData.message = "WebRtc Echo test ended unexpectedly.";
+      logData.logCode = logCode;
       LOGGER.info(jsonXify(logData));
 
       sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"),
@@ -230,13 +227,10 @@ package org.bigbluebutton.modules.phone.managers
         reconnect.onDisconnect(joinVoiceConference, []);
       }
       else {
-        LOGGER.debug("WebRTC call reconnection failed");
         if( reconnect.attempts < MAX_RETRIES ) {
-          LOGGER.debug("Retrying, attempt " + reconnect.attempts);
           reconnect.onConnectionAttemptFailed();
         }
         else {
-          LOGGER.debug("Giving up");
           reconnecting = false;
 
           if (event.errorCode == 1004) {
@@ -249,15 +243,18 @@ package org.bigbluebutton.modules.phone.managers
             errorString = ResourceUtil.getInstance().getString("bbb.webrtcWarning.failedError.unknown", [event.errorCode]);
           }
           
+					var logCode:String = 'bbb.webrtcWarning.failedError';
+					
           var logData:Object = UsersUtil.initLogData();
           logData.tags = ["voice", "webrtc"];
+					logData.logCode = logCode;
           logData.errorEvent = {code: event.errorCode, cause: event.cause};
           LOGGER.info(jsonXify(logData));
           
           sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"),
                   ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]),
                   errorString,
-                  'bbb.webrtcWarning.failedError');
+									logCode);
         }
       }
     }
@@ -269,6 +266,7 @@ package org.bigbluebutton.modules.phone.managers
 
       var logData:Object = UsersUtil.initLogData();
       logData.user.reason = errorString;
+			logData.logCode = logCode;
       LOGGER.info(jsonXify(logData));
 
       sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"),
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/present/business/FileUploadService.as b/bigbluebutton-client/src/org/bigbluebutton/modules/present/business/FileUploadService.as
index 8d2e7dd89750ee949d7b239025e3cb727707a97c..f4d790b56a94f7061719ec014f9f268e6e25e28a 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/present/business/FileUploadService.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/present/business/FileUploadService.as
@@ -130,7 +130,7 @@ package org.bigbluebutton.modules.present.business
 			if (event.errorID != 2038){ //upload works despite of this error.
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["presentation"];
-                logData.message = "IOError while uploading presentation."; 
+                logData.logCode = "io_error_on_presentation_upload"; 
                 LOGGER.error(JSON.stringify(logData));
             
 				dispatcher.dispatchEvent(new UploadIoErrorEvent());
@@ -146,7 +146,7 @@ package org.bigbluebutton.modules.present.business
 		private function onUploadSecurityError(event:SecurityErrorEvent) : void {
             var logData:Object = UsersUtil.initLogData();
             logData.tags = ["presentation"];
-            logData.message = "Security error while uploading presentation."; 
+						logData.logCode = "security_error_on_presentation_upload"; 
             LOGGER.error(JSON.stringify(logData));
             dispatcher.dispatchEvent(new UploadSecurityErrorEvent());
 		}		
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/FileUploadWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/FileUploadWindow.mxml
index 603e6b6d3be87151ff93cab66ecff96cadc9276e..99984dc55a9b9df64d83203e297f081b84d0568d 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/FileUploadWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/FileUploadWindow.mxml
@@ -201,8 +201,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
           // This should be configurable to match what's allowed in nginx. (ralam feb 23, 2010) 
             var logData:Object = UsersUtil.initLogData();
             logData.tags = ["presentation"];
-            logData.message = "File exceeds max limit."; 
+            logData.logCode = "presentation_upload_exceeds_max_limit"; 
             logData.fileSizeBytes = fileSize;
+						logData.filename = fileToUpload.name;
             logData.maxFileSizeBytes = maxFileSizeBytes;
             LOGGER.error(JSON.stringify(logData));
                 
@@ -247,7 +248,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
         var logData:Object = UsersUtil.initLogData();
         logData.tags = ["presentation-conversion"];
         logData.filename = fileToUpload.name;
-        logData.message = "Presentation conversion failed";
+        logData.logCode = "presentation_conversion_failed";
         LOGGER.warn(JSON.stringify(logData));
 
         enableClosing();
@@ -258,7 +259,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
         var logData:Object = UsersUtil.initLogData();
         logData.tags = ["presentation-conversion"];
         logData.filename = fileToUpload.name;
-        logData.message = "Presentation conversion invalid";
+        logData.logCode = "presentation_conversion_invalid";
         LOGGER.warn(JSON.stringify(logData));
 
         enableClosing();
@@ -272,7 +273,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
       }
 
       private function handleSupportedDocument(e:ConversionSupportedDocEvent):void {
-        LOGGER.debug("handleSupportedDocument");
+
 		buildProgressLabel(ResourceUtil.getInstance().getString('bbb.presentation.document.supported'));
         progressBar.setProgress(0, 100);
         progressBar.validateNow();
@@ -289,7 +290,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
       }
 
       private function handlePageCountExceeded(e:ConversionPageCountMaxed):void {
-		LOGGER.debug("handlePageCountExceeded");
+
         enableClosing();
         var message:String = " Maximum supported is " + e.maxPages;
         displayAlert(ResourceUtil.getInstance().getString('bbb.presentation.error.convert.maxnbpagereach'), message);
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/MessageSender.as b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/MessageSender.as
index 6c280e7c5c489e11dc29e2c3860f6b9843fc4bc5..52bd0ebeef91af7ae14085a8865f166c7b265e83 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/MessageSender.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/MessageSender.as
@@ -77,7 +77,7 @@ package org.bigbluebutton.modules.screenshare.services
                     function(status:String):void { // status - On error occurred
                         var logData:Object = UsersUtil.initLogData();
                         logData.tags = ["apps"];
-                        logData.message = "Error occurred getting screenshare status.";
+                        logData.logCode = "error_sending_get_screenshare_status";
                         LOGGER.info(JSON.stringify(logData));
                     },
                     JSON.stringify(message)
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/Connection.as b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/Connection.as
index 476900de6692144d670e3db6cdab1abb421f8862..aa17340de9e74e4ef6681df6c8ad3c8822b363c0 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/Connection.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/Connection.as
@@ -33,10 +33,11 @@ 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.main.model.users.events.ConnectionFailedEvent;
     import org.bigbluebutton.modules.screenshare.events.ViewStreamEvent;
     import org.bigbluebutton.modules.screenshare.model.ScreenshareModel;
     import org.bigbluebutton.modules.screenshare.model.ScreenshareOptions;
-    import org.bigbluebutton.util.ConnUtil;
+    import org.bigbluebutton.util.ConnUtil;
 		
     public class Connection {
         private static const LOGGER:ILogger = getClassLogger(Connection);
@@ -74,7 +75,7 @@ package org.bigbluebutton.modules.screenshare.services.red5 {
 					}
 					
 					ssAppUrl = tunnelProtocol + "://" + result.server + "/" + result.app + "/" + UsersUtil.getInternalMeetingID();
-					LOGGER.debug("SCREENSHARE CONNECT tunnel = TRUE " + "url=" +  ssAppUrl);
+
 				} else {
 					var nativeProtocol: String = ConnUtil.RTMP;
 					if (useRTMPS) {
@@ -83,7 +84,7 @@ package org.bigbluebutton.modules.screenshare.services.red5 {
 					}
 				
 					ssAppUrl = nativeProtocol + "://" + result.server + "/" + result.app + "/" + UsersUtil.getInternalMeetingID();
-					LOGGER.debug("SCREENSHARE CONNECT tunnel = FALSE " + "url=" +  ssAppUrl);
+
 				}
 				
 				var connId:String = ConnUtil.generateConnId();
@@ -92,7 +93,14 @@ package org.bigbluebutton.modules.screenshare.services.red5 {
 				netConnection.client = this;
 				netConnection.addEventListener( NetStatusEvent.NET_STATUS , netStatusHandler);
 				netConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
-				LOGGER.debug("Connecting to uri=[{0}]", [ssAppUrl]);
+
+				var logData:Object = UsersUtil.initLogData();
+				logData.tags = ["screenshare"];
+				logData.app = "screenshare";
+				logData.logCode = "connection_connecting";
+				logData.url = ssAppUrl;
+				LOGGER.info(JSON.stringify(logData));
+				
 				netConnection.connect(ssAppUrl);
 			}
         
@@ -266,19 +274,26 @@ package org.bigbluebutton.modules.screenshare.services.red5 {
         
         private function netStatusHandler(event:NetStatusEvent):void {
 						var logData:Object = UsersUtil.initLogData();
-						logData.tags = ["screenshare"];
-						logData.user.eventCode = event.info.code + "[reconnecting=" + reconnecting + "]";
-            
+						logData.tags = ["screenshare", "flash"];
+						logData.app = "screenshare";
+						logData.reconnecting = reconnecting;
+						logData.uri = ssAppUrl;
+						
             var ce:ConnectionEvent;
             switch (event.info.code) {
             case "NetConnection.Connect.Failed":
-								logData.message = "NetStream.Play.Failed from bbb-screenshare";
-								LOGGER.info(JSON.stringify(logData));
+							logData.logCode = "connect_attempt_failed";
+							LOGGER.info(JSON.stringify(logData));
+							
                 if (reconnecting) {
+									logData.logCode = "connection_reconnect_attempt_failed";
+									LOGGER.info(JSON.stringify(logData));
+									
                     var attemptFailedEvent:BBBEvent = new BBBEvent(BBBEvent.RECONNECT_CONNECTION_ATTEMPT_FAILED_EVENT);
                     attemptFailedEvent.payload.type = ReconnectionManager.DESKSHARE_CONNECTION;
                     dispatcher.dispatchEvent(attemptFailedEvent);
                 }
+								
                 ce = new ConnectionEvent(ConnectionEvent.FAILED);
                 dispatcher.dispatchEvent(ce);
                 break;
@@ -291,6 +306,10 @@ package org.bigbluebutton.modules.screenshare.services.red5 {
                         stopShareRequest(UsersUtil.getInternalMeetingID(), ScreenshareModel.getInstance().streamId)
                     }
                     
+										logData.reconnecting = reconnecting;
+										logData.logCode = "connection_reconnect_attempt_succeeded";
+										LOGGER.info(JSON.stringify(logData));
+										
                     var attemptSucceeded:BBBEvent = new BBBEvent(BBBEvent.RECONNECT_CONNECTION_ATTEMPT_SUCCEEDED_EVENT);
                     attemptSucceeded.payload.type = ReconnectionManager.DESKSHARE_CONNECTION;
                     dispatcher.dispatchEvent(attemptSucceeded);
@@ -303,13 +322,17 @@ package org.bigbluebutton.modules.screenshare.services.red5 {
                 break;
             
             case "NetConnection.Connect.Rejected":
+							logData.logCode = "connect_attempt_rejected";
+							LOGGER.info(JSON.stringify(logData));
+							
                 ce = new ConnectionEvent(ConnectionEvent.REJECTED);
                 dispatcher.dispatchEvent(ce);
                 break;
             
             case "NetConnection.Connect.Closed":
-								logData.message = "NetConnection.Connect.Closed from bbb-screenshare";
-								LOGGER.info(JSON.stringify(logData));
+							logData.logCode = "connection_closed";
+							LOGGER.info(JSON.stringify(logData));
+							
                 if (!logoutOnUserCommand) {
                     reconnecting = true;
                     
@@ -323,24 +346,33 @@ package org.bigbluebutton.modules.screenshare.services.red5 {
                 break;
             
             case "NetConnection.Connect.InvalidApp":
+							logData.logCode = "connect_attempt_invalid_app";
+							LOGGER.info(JSON.stringify(logData));
+							
                 ce = new ConnectionEvent(ConnectionEvent.INVALIDAPP);
                 dispatcher.dispatchEvent(ce);
                 break;
             
             case "NetConnection.Connect.AppShutdown":
+							logData.logCode = "connection_app_shutdown";
+							LOGGER.info(JSON.stringify(logData));
                 ce = new ConnectionEvent(ConnectionEvent.APPSHUTDOWN);
                 dispatcher.dispatchEvent(ce);
                 break;
             
             case "NetConnection.Connect.NetworkChange":
 								numNetworkChangeCount++;
-								if (numNetworkChangeCount % 2 == 0) {
-									logData.tags = ["screenshare", "flash"];
-									logData.message = "Detected network change on bbb-screenshare";
-									logData.numNetworkChangeCount = numNetworkChangeCount;
+								logData.logCode = "connection_network_change";
+								logData.numNetworkChangeCount = numNetworkChangeCount;
 									LOGGER.info(JSON.stringify(logData));
-								}
+
 								break;
+						default :
+							logData.logCode = "connection_failed_unknown_reason";
+							logData.statusCode = event.info.code;
+							LOGGER.info(JSON.stringify(logData));
+
+							break;   
             }
         }
         
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreensharePublishWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreensharePublishWindow.mxml
index 579474746b4667b5671db1f120ba516ba7be12d6..10d77c599c1d074d2e05a988a6a62f49ed04af75 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreensharePublishWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreensharePublishWindow.mxml
@@ -191,8 +191,13 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
       }
 
       private function handleScreenShareShareStoppedEvent(event:ShareStoppedEvent):void {
-        LOGGER.debug("handleScreenShareShareStoppedEvent reason="+event.reason);
-
+				var logData:Object = UsersUtil.initLogData();
+				logData.streamId = stream;
+				logData.reason = event.reason;
+				logData.tags = ["screenshare"];
+				logData.logCode = "screenshare_end_reason";
+				LOGGER.warn(JSON.stringify(logData));
+				
         var showReason:Boolean = false;
 
         if (event.reason == "JWS_START_FAILED_REASON") {
@@ -217,11 +222,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
           startBtn.visible = startBtn.includeInLayout = false;
           stopBtn.visible = stopBtn.includeInLayout = false;
 
-          var logData:Object = UsersUtil.initLogData();
-          logData.reason = event.reason;
-          logData.tags = ["screenshare"];
-          logData.message = "Unnatural end to screenshare";
-          LOGGER.warn(JSON.stringify(logData));
+
         } else {
           closeWindow();
         }
@@ -232,7 +233,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
             videoWrapper.removeChild(video);
 
             if (paused) {
-                LOGGER.debug("handleScreenSharePausedEvent - enable push button.");
+							var logData:Object = UsersUtil.initLogData();
+							logData.tags = ["screenshare"];
+							logData.streamId = stream;
+							logData.logCode = "screenshare_paused";
+							LOGGER.warn(JSON.stringify(logData));
+							
                 pauseBtn.enabled = true;
                 pauseBtn.visible = pauseBtn.includeInLayout = false;
                 restartBtn.visible = restartBtn.includeInLayout = true;
@@ -245,7 +251,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
       }
 
       public function shareScreen(fullScreen:Boolean):void {
-        LOGGER.debug("Calling shareScreen");
+
         startBtn.enabled = false;
         var shareStartEvent:ShareStartEvent = new ShareStartEvent();
         dispatchEvent(shareStartEvent);
@@ -258,12 +264,18 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
         sharingFullScreen = fullScreen;
         var authToken:String = ScreenshareModel.getInstance().authToken;
         var jnlp: String = ScreenshareModel.getInstance().jnlp;
-        LOGGER.debug("StartScreensharing jnlp=" + jnlp + " token=" + authToken);
+				
+				var logData:Object = UsersUtil.initLogData();
+				logData.tags = ["screenshare"];
+				logData.streamId = stream;
+				logData.logCode = "screenshare_start_sharing";
+				logData.token = authToken;
+				LOGGER.warn(JSON.stringify(logData));
+				
         ExternalInterface.call("startScreensharing", jnlp, UsersUtil.getInternalMeetingID(), authToken, fullScreen);
       }
 
-      public function stopSharing():void {
-        LOGGER.debug("Calling stopSharing");
+      public function stopSharing():void {;
         if (streaming) {
           stopStream();
         }
@@ -278,7 +290,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
       }
 
       public function pauseSharing():void {
-        LOGGER.debug("Calling pauseSharing");
         if (!paused) {
           paused = true;
           if (streaming) {
@@ -311,7 +322,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
       }
 
       private function handleStartViewStreamEvent(event:ViewStreamEvent):void{
-        LOGGER.debug("handleStartViewStreamEvent");
+
         var width: int = ScreenshareModel.getInstance().width;
         var height: int = ScreenshareModel.getInstance().height;
         var streamId: String = ScreenshareModel.getInstance().streamId;
@@ -322,7 +333,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 
         switchView(false);
 
-        LOGGER.debug("Viewing stream =[" + streamId + "]");
         streaming = true;
 
         restartBtn.enabled = true;
@@ -348,8 +358,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 		videoWrapper.width = video.width;
 		videoWrapper.height = video.height;
 
-        LOGGER.debug("deskshare preview[" + captureWidth + "," + captureHeight + "][" + video.width + "," + video.height + "]");
-
         videoWrapper.addChild(video);
         video.x = videoWrapper.width/2 - video.width/2;
         video.y = videoWrapper.height/2 - video.height/2;
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreenshareViewWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreenshareViewWindow.mxml
index de3bf2ffdc490cfac16f9603736f1aed1217292e..9bb1938e94a5ea6564bc93fecd0873115de8194b 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreenshareViewWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreenshareViewWindow.mxml
@@ -114,7 +114,7 @@
 				logData.width = videoWidth;
 				logData.height = videoHeight;
 				logData.streamId = streamId;
-
+				logData.logCode = "screenshare_stream_info";
 				LOGGER.info(JSON.stringify(logData));
 			}
 
@@ -133,12 +133,13 @@
 			}
 
 			public function startVideo(connection:Connection):void {
-				var logData:Object = new Object();
-				logData.width = ScreenshareModel.getInstance().width;
+
+				var logData:Object = UsersUtil.initLogData();
+				logData.tags = ["screenshare"];
+				logData.width = ScreenshareModel.getInstance().width;;
 				logData.height = ScreenshareModel.getInstance().height;
 				logData.streamId = ScreenshareModel.getInstance().streamId;
-
-				JSLog.debug(LOG + "startVideo", logData);
+				logData.logCode = "screenshare_stream_info_received";
 
 				this.connection = connection;
 			}
@@ -153,7 +154,7 @@
         logData.width = videoWidth;
         logData.height = videoHeight;
         logData.streamId = streamId;
-
+				logData.logCode = "screenshare_view_stream";
         LOGGER.info(JSON.stringify(logData));
 
         ns = new NetStream(connection.getConnection());
@@ -183,7 +184,7 @@
         logData.tags = ["screenshare"];
         logData.width = info.width;
         logData.height = info.height;
-
+				logData.logCode = "screenshare_stream_metadata_received";
         LOGGER.info(JSON.stringify(logData));
       }
 
@@ -200,7 +201,7 @@
         LOGGER.debug("asyncerror " + e.toString());
         var logData:Object = UsersUtil.initLogData();
         logData.tags = ["screenshare"];
-        logData.message = "asyncerror";
+				logData.logCode = "screenshare_view_stream_async_error";
         LOGGER.info(JSON.stringify(logData));
 			}
 
@@ -211,11 +212,11 @@
 
 				switch(e.info.code){
   				case "NetStream.Play.Start":
-            logData.message = "NetStream.Publish.Start for broadcast stream " + streamId;
+            logData.logCode = "screenshare_play_stream_start";
             LOGGER.info(JSON.stringify(logData));
   					break;
   				case "NetStream.Play.UnpublishNotify":
-            logData.message = "NetStream.Play.UnpublishNotify for broadcast stream " + streamId;
+						logData.logCode = "screenshare_play_stream_stop";
             LOGGER.info(JSON.stringify(logData));
   					stopViewing();
   					break;
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as b/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as
index d62f8fdbf5e1620b7cb2fbf0f34a54e66eda2c1e..67c35926bdbf1c9111f8a45eb4837ddc289fd27f 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as
@@ -305,8 +305,7 @@ package org.bigbluebutton.modules.users.services
     private function handleGetUsersMeetingRespMsg(msg: Object):void {
       var body: Object = msg.body as Object
       var users: Array = body.users as Array;
-      LOGGER.debug("Num USERs = " + users.length);
-      
+
       for (var i:int = 0; i < users.length; i++) {
         var user:Object = users[i] as Object;
         processUserJoinedMeetingMsg(user);
@@ -364,8 +363,6 @@ package org.bigbluebutton.modules.users.services
       user2x.presenter = presenter;
       user2x.avatar = avatar;
       
-      LOGGER.debug("USER JOINED = " + JSON.stringify(user2x));
-
       var oldUser: User2x = LiveMeeting.inst().users.getUser(intId);
       var wasPresenterBefore: Boolean = false;
       if (oldUser != null && oldUser.presenter) {
@@ -401,8 +398,7 @@ package org.bigbluebutton.modules.users.services
     private function handleGetVoiceUsersMeetingRespMsg(msg:Object):void {
       var body: Object = msg.body as Object;
       var users: Array = body.users as Array;
-      LOGGER.debug("Num USERs = " + users.length);
-      
+
       for (var i:int = 0; i < users.length; i++) {
         var user:Object = users[i] as Object;
         var intId: String = user.intId as String;
@@ -423,8 +419,7 @@ package org.bigbluebutton.modules.users.services
         vu.muted = muted;
         vu.talking = talking;
         vu.listenOnly = listenOnly;
-        
-        LOGGER.debug("USER = " + JSON.stringify(vu));
+				
         LiveMeeting.inst().voiceUsers.add(vu);
       }
     }
@@ -432,7 +427,6 @@ package org.bigbluebutton.modules.users.services
     private function handleGetWebcamStreamsMeetingRespMsg(msg:Object):void {
       var body: Object = msg.body as Object
       var streams: Array = body.streams as Array;
-      LOGGER.debug("Num streams = " + streams.length);
       
       for (var i:int = 0; i < streams.length; i++) {
         var stream:Object = streams[i] as Object;
@@ -451,7 +445,6 @@ package org.bigbluebutton.modules.users.services
           webcamStream.attributes = attributes;
           webcamStream.viewers = viewers;
 
-          LOGGER.debug("STREAM = " + JSON.stringify(webcamStream));
           LiveMeeting.inst().webcams.add(webcamStream);
         }
       }
@@ -496,8 +489,8 @@ package org.bigbluebutton.modules.users.services
       
       var logData:Object = UsersUtil.initLogData();
       logData.tags = ["users"];
-      logData.status = "user_ejected";
-      logData.message = "User ejected from meeting.";
+      logData.logCode = "received_user_ejected";
+			logData.userId = userId;
       LOGGER.debug(JSON.stringify(logData));
     }
     
@@ -523,7 +516,6 @@ package org.bigbluebutton.modules.users.services
     }
     
     private function handlePermissionsSettingsChanged(msg:Object):void {
-      LOGGER.debug("handlePermissionsSettingsChanged {0} \n", [JSON.stringify(msg.body)]);
       var body:Object = msg.body as Object;
       
       var lockSettings:LockSettingsVO = new LockSettingsVO(
@@ -538,8 +530,7 @@ package org.bigbluebutton.modules.users.services
     }
     
     private function handleGetLockSettings(msg:Object):void {
-      LOGGER.debug("handleGetLockSettings {0} \n", [msg.body]);
-      
+   
       var body:Object = msg.body as Object;
       
       var lockSettings:LockSettingsVO = new LockSettingsVO(
@@ -554,7 +545,6 @@ package org.bigbluebutton.modules.users.services
     }
     
 	private function handleLockSettingsNotInitialized(msg:Object):void {
-		LOGGER.debug("handleLockSettingsNotInitialized received");
 		UsersUtil.lockSettingsNotInitialized();
 	}
 	
@@ -632,7 +622,6 @@ package org.bigbluebutton.modules.users.services
     }
 	
 	private function handleWebcamsOnlyForModeratorChanged(msg: Object):void {
-		LOGGER.debug("handleWebcamsOnlyForModeratorChanged {0} \n", [JSON.stringify(msg.body)]);
 		var body:Object = msg.body as Object;
 		var webcamsOnlyForModerator: Boolean = body.webcamsOnlyForModerator as Boolean;
 		sendWebcamsOnlyForModeratorChanged(webcamsOnlyForModerator);
@@ -733,8 +722,9 @@ package org.bigbluebutton.modules.users.services
       var streamId: String = msg.body.stream as String;
       var logData:Object = UsersUtil.initLogData();
       logData.tags = ["webcam"];
-      logData.message = "UserBroadcastCamStartedEvtMsg server message";
-      logData.user.webcamStream = streamId;
+      logData.logCode = "user_broadcasting_camera_start";
+			logData.userId = userId;
+      logData.streamId = streamId;
 
       if (isValidFlashWebcamStream(streamId)) {
 
@@ -761,8 +751,9 @@ package org.bigbluebutton.modules.users.services
       
       var logData:Object = UsersUtil.initLogData();
       logData.tags = ["webcam"];
-      logData.message = "UserBroadcastCamStoppedEvtMsg server message";
-      logData.user.webcamStream = stream;
+			logData.logCode = "user_broadcasting_camera_stop";
+			logData.userId = userId;
+			logData.streamId = stream;
       LOGGER.info(JSON.stringify(logData));
       
       LiveMeeting.inst().webcams.remove(stream);
@@ -901,7 +892,6 @@ package org.bigbluebutton.modules.users.services
     }
     
     public function handleGuestAccessDenied(msg:Object):void {
-      LOGGER.debug("*** handleGuestAccessDenied " + msg.msg + " ****");
       var map:Object = JSON.parse(msg.msg);
       
       if (UsersUtil.getMyUserID() == map.userId) {
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageSender.as b/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageSender.as
index 733ea80afa0e2462c57643cadc834725a8e01aaf..06f83c93647adc1257ee91fa0f13ad84dcfb00f2 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageSender.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageSender.as
@@ -54,15 +54,13 @@ package org.bigbluebutton.modules.users.services
         function(status:String):void { // status - On error occurred
             var logData:Object = UsersUtil.initLogData();
             logData.tags = ["apps"];
-            logData.message = "Error occured querying users.";
+            logData.logCode = "error_sending_query_users";
             LOGGER.info(JSON.stringify(logData));
         }, JSON.stringify(message)
       );
     }
     
     public function joinMeeting(): void {
-      LOGGER.info("Sending JOIN MEETING message");
-      
       var message:Object = {
         header: {name: "UserJoinMeetingReqMsg", meetingId: UsersUtil.getInternalMeetingID(), userId: UsersUtil.getMyUserID()},
         body: {userId: UsersUtil.getMyUserID(), authToken: LiveMeeting.inst().me.authToken}
@@ -73,13 +71,16 @@ package org.bigbluebutton.modules.users.services
       }, function(status:String):void { // status - On error occurred
         var logData:Object = UsersUtil.initLogData();
         logData.tags = ["apps"];
-        logData.message = "Error occurred when user joining.";
+				logData.logCode = "error_sending_join_meeting";
         LOGGER.info(JSON.stringify(logData));
       }, JSON.stringify(message));
     }
 
     public function joinMeetingAfterReconnect(): void {
-      LOGGER.info("Sending JOIN MEETING AFTER RECONNECT message");
+			var logData:Object = UsersUtil.initLogData();
+			logData.tags = ["apps"];
+			logData.logCode = "joining_after_reconnect";
+			LOGGER.info(JSON.stringify(logData));
 
       var message:Object = {
         header: {name: "UserJoinMeetingAfterReconnectReqMsg", meetingId: UsersUtil.getInternalMeetingID(), userId: UsersUtil.getMyUserID()},
@@ -89,9 +90,8 @@ package org.bigbluebutton.modules.users.services
       var _nc:ConnectionManager = BBB.initConnectionManager();
       _nc.sendMessage2x(function(result:String):void { // On successful result
       }, function(status:String):void { // status - On error occurred
-          var logData:Object = UsersUtil.initLogData();
           logData.tags = ["apps"];
-          logData.message = "Error occurred when user joining after reconnect.";
+          logData.logCode = "error_sending_join_after_reconnect";
           LOGGER.info(JSON.stringify(logData));
       }, JSON.stringify(message));
     }
@@ -107,7 +107,7 @@ package org.bigbluebutton.modules.users.services
       }, function(status:String):void { // status - On error occurred
         var logData:Object = UsersUtil.initLogData();
         logData.tags = ["apps"];
-        logData.message = "Error occurred assigning a presenter.";
+        logData.logCode = "error_sending_assign_presenter";
         LOGGER.info(JSON.stringify(logData));
       }, JSON.stringify(message));
     }
@@ -124,7 +124,7 @@ package org.bigbluebutton.modules.users.services
             }, function(status:String):void { // status - On error occurred
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["apps"];
-                logData.message = "Error occured setting emoji status.";
+                logData.logCode = "error_sending_change_emoji";
                 LOGGER.info(JSON.stringify(logData));
             },
           JSON.stringify(message)
@@ -140,7 +140,7 @@ package org.bigbluebutton.modules.users.services
 			}, function(status:String):void { // status - On error occurred
 				var logData:Object = UsersUtil.initLogData();
 				logData.tags = ["apps"];
-				logData.message = "Error occured creating breakout rooms.";
+				logData.logCode = "error_sending_create_breakout";
 				LOGGER.info(JSON.stringify(logData));
 			}, JSON.stringify(message));
 		}
@@ -154,7 +154,7 @@ package org.bigbluebutton.modules.users.services
 			}, function(status:String):void { // status - On error occurred
 				var logData:Object = UsersUtil.initLogData();
 				logData.tags = ["apps"];
-				logData.message = "Error occured requesting breakout room join url.";
+				logData.logCode = "error_sending_request_breakout_url";
 				LOGGER.info(JSON.stringify(logData));
 			}, JSON.stringify(message));
 		}
@@ -171,7 +171,7 @@ package org.bigbluebutton.modules.users.services
 			}, function(status:String):void { // status - On error occurred
 				var logData:Object = UsersUtil.initLogData();
 				logData.tags = ["apps"];
-				logData.message = "Error occured listen on breakout room.";
+				logData.logCode = "error_sending_listen_on_breakout";
 				LOGGER.info(JSON.stringify(logData));
 			}, JSON.stringify(message));
 		}
@@ -185,7 +185,7 @@ package org.bigbluebutton.modules.users.services
 			}, function(status:String):void { // status - On error occurred
 				var logData:Object = UsersUtil.initLogData();
 				logData.tags = ["apps"];
-				logData.message = "Error occured requesting breakout room join url.";
+				logData.logCode = "error_sending_end_breakout";
 				LOGGER.info(JSON.stringify(logData));
 			}, JSON.stringify(message));
 		}
@@ -199,7 +199,9 @@ package org.bigbluebutton.modules.users.services
 			}, function(status:String):void { // status - On error occurred
 				var logData:Object = UsersUtil.initLogData();
 				logData.tags = ["apps"];
-				logData.message = "Error occured sharing webcam.";
+				logData.userId = userID;
+				logData.streamId = streamName;
+				logData.logCode = "error_sending_cam_broadcast_start";
 				LOGGER.info(JSON.stringify(logData));
 			}, JSON.stringify(message));
 		}
@@ -212,7 +214,8 @@ package org.bigbluebutton.modules.users.services
 			var logData:Object = UsersUtil.initLogData();
 			logData.tags = ["webcam"];
 			logData.streamId = streamName;
-			logData.message = "User stopped sharing webcam";
+			logData.userId = userID;
+			logData.logCode = "sending_cam_broadcast_stop";
 			LOGGER.info(JSON.stringify(logData));
 
 
@@ -221,7 +224,9 @@ package org.bigbluebutton.modules.users.services
 			}, function(status:String):void { // status - On error occurred
 				var logData:Object = UsersUtil.initLogData();
 				logData.tags = ["apps"];
-				logData.message = "Error occured unsharing webcam.";
+				logData.streamId = streamName;
+				logData.userId = userID;
+				logData.logCode = "error_sending_cam_broadcast_stop";
 				LOGGER.info(JSON.stringify(logData));
 			}, JSON.stringify(message));
 		}
@@ -240,7 +245,7 @@ package org.bigbluebutton.modules.users.services
         function(status:String):void { // status - On error occurred
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["apps"];
-                logData.message = "Error occured logout and end meeting.";
+								logData.logCode = "error_sending_logout_end_meeting";
                 LOGGER.info(JSON.stringify(logData));
         },
         JSON.stringify(message)
@@ -261,7 +266,7 @@ package org.bigbluebutton.modules.users.services
         function(status:String):void { // status - On error occurred
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["apps"];
-                logData.message = "Error occured getting recording status.";
+								logData.logCode = "error_sending_get_recording_status";
                 LOGGER.info(JSON.stringify(logData));
         },
         JSON.stringify(message)
@@ -277,7 +282,7 @@ package org.bigbluebutton.modules.users.services
 			}, function(status:String):void { // status - On error occurred
 				var logData:Object = UsersUtil.initLogData();
 				logData.tags = ["apps"];
-				logData.message = "Error occured querying breakout rooms.";
+				logData.logCode = "error_sending_get_breakout_rooms";
 				LOGGER.info(JSON.stringify(logData));
 			}, JSON.stringify(message));
 		}
@@ -296,7 +301,7 @@ package org.bigbluebutton.modules.users.services
         function(status:String):void { // status - On error occurred
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["apps"];
-                logData.message = "Error occured activity response.";
+								logData.logCode = "error_sending_meeting_activity_response";
                 LOGGER.info(JSON.stringify(logData));
         },
         JSON.stringify(message)
@@ -317,7 +322,7 @@ package org.bigbluebutton.modules.users.services
         function(status:String):void { // status - On error occurred
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["apps"];
-                logData.message = "Error occured change recording status.";
+								logData.logCode = "error_sending_change_recording_status";
                 LOGGER.info(JSON.stringify(logData));
         },
         JSON.stringify(message)
@@ -338,7 +343,7 @@ package org.bigbluebutton.modules.users.services
         function(status:String):void { // status - On error occurred
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["apps"];
-                logData.message = "Error occured muting all users.";
+								logData.logCode = "error_sending_mute_all_users";
                 LOGGER.info(JSON.stringify(logData));
         },
         JSON.stringify(message)
@@ -359,7 +364,7 @@ package org.bigbluebutton.modules.users.services
         function(status:String):void { // status - On error occurred
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["apps"];
-                logData.message = "Error occured muting all users except presenter.";
+								logData.logCode = "error_sending_mute_all_except_presenter";
                 LOGGER.info(JSON.stringify(logData));
         },
         JSON.stringify(message)
@@ -380,7 +385,7 @@ package org.bigbluebutton.modules.users.services
         function(status:String):void { // status - On error occurred
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["apps"];
-                logData.message = "Error occurred muting user.";
+								logData.logCode = "error_sending_mute_user";
                 LOGGER.info(JSON.stringify(logData));
         },
         JSON.stringify(message)
@@ -401,7 +406,7 @@ package org.bigbluebutton.modules.users.services
         function(status:String):void { // status - On error occurred
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["apps"];
-                logData.message = "Error occurred ejecting user from voice.";
+								logData.logCode = "error_sending_eject_user_from_voice";
                 LOGGER.info(JSON.stringify(logData));
         },
         JSON.stringify(message)
@@ -419,7 +424,7 @@ package org.bigbluebutton.modules.users.services
       }, function(status:String):void { // status - On error occurred
         var logData:Object = UsersUtil.initLogData();
         logData.tags = ["apps"];
-        logData.message = "Error occurred kicking a user - ejecting from meeting.";
+				logData.logCode = "error_sending_eject_user_from_meeting";
         LOGGER.info(JSON.stringify(logData));
       }, JSON.stringify(message));
     }
@@ -438,7 +443,7 @@ package org.bigbluebutton.modules.users.services
         function(status:String):void { // status - On error occurred
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["apps"];
-                logData.message = "Error occuredget room mute state.";
+								logData.logCode = "error_sending_meeting_mute_state";
                 LOGGER.info(JSON.stringify(logData));
         },
         JSON.stringify(message)
@@ -462,7 +467,7 @@ package org.bigbluebutton.modules.users.services
         function(status:String):void { // status - On error occurred
           var logData:Object = UsersUtil.initLogData();
           logData.tags = ["apps"];
-          logData.message = "Error occured setting user lock status.";
+					logData.logCode = "error_sending_lock_users_in_meeting";
           LOGGER.info(JSON.stringify(logData));
         },
         JSON.stringify(message)
@@ -486,7 +491,7 @@ package org.bigbluebutton.modules.users.services
         function(status:String):void { // status - On error occurred
           var logData:Object = UsersUtil.initLogData();
           logData.tags = ["apps"];
-          logData.message = "Error occured setting user lock status.";
+					logData.logCode = "error_sending_lock_user_in_meeting";
           LOGGER.info(JSON.stringify(logData));
         },
         JSON.stringify(message)
@@ -508,7 +513,7 @@ package org.bigbluebutton.modules.users.services
         function(status:String):void { // status - On error occurred
           var logData:Object = UsersUtil.initLogData();
           logData.tags = ["apps"];
-          logData.message = "Error occured getting lock state.";
+					logData.logCode = "error_sending_get_lock_settings";
           LOGGER.info(JSON.stringify(logData));
         },
         JSON.stringify(message)
@@ -538,7 +543,7 @@ package org.bigbluebutton.modules.users.services
         function(status:String):void { // status - On error occurred
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["apps"];
-                logData.message = "Error occured saving lock settings.";
+								logData.logCode = "error_sending_save_lock_settings";
                 LOGGER.info(JSON.stringify(logData));
         },
         JSON.stringify(message)
@@ -560,7 +565,7 @@ package org.bigbluebutton.modules.users.services
 			function(status:String):void { // status - On error occurred
 				var logData:Object = UsersUtil.initLogData();
 				logData.tags = ["apps"];
-				logData.message = "Error occured setting webcamsOnlyForModerator.";
+				logData.logCode = "error_sending_webcams_only_for_moderators";
 				LOGGER.info(JSON.stringify(logData));
 			},
 			JSON.stringify(message)
@@ -582,7 +587,7 @@ package org.bigbluebutton.modules.users.services
         function(status:String):void { // status - On error occurred
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["apps"];
-                logData.message = "Error occured change role.";
+								logData.logCode = "error_sending_change_user_role";
                 LOGGER.info(JSON.stringify(logData));
         },
         JSON.stringify(message)
@@ -604,7 +609,7 @@ package org.bigbluebutton.modules.users.services
 			function(status:String):void { // status - On error occurred
 				var logData:Object = UsersUtil.initLogData();
 				logData.tags = ["apps"];
-				logData.message = "Error occured query webcamsOnlyForModerator.";
+				logData.logCode = "error_sending_get_webcams_only_for_moderator";
 				LOGGER.info(JSON.stringify(logData));
 			},
 			JSON.stringify(message)
@@ -612,8 +617,7 @@ package org.bigbluebutton.modules.users.services
 	}
 
     public function queryForGuestPolicy():void {
-      LOGGER.debug("queryForGuestPolicy");
-      
+
       var message:Object = {
         header: {name: "GetGuestPolicyReqMsg", meetingId: UsersUtil.getInternalMeetingID(), 
           userId: UsersUtil.getMyUserID()},
@@ -628,7 +632,7 @@ package org.bigbluebutton.modules.users.services
          function(status:String):void { // status - On error occurred
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["apps"];
-                logData.message = "Error occured query guest policy.";
+								logData.logCode = "error_sending_get_guest_policy";
                 LOGGER.info(JSON.stringify(logData));
          },
          JSON.stringify(message)
@@ -636,7 +640,7 @@ package org.bigbluebutton.modules.users.services
     }
 
     public function setGuestPolicy(policy:String):void {
-      LOGGER.debug("setGuestPolicy - new policy:[" + policy + "]");
+
       var message:Object = {
         header: {name: "SetGuestPolicyCmdMsg", meetingId: UsersUtil.getInternalMeetingID(), 
           userId: UsersUtil.getMyUserID()},
@@ -651,7 +655,7 @@ package org.bigbluebutton.modules.users.services
          function(status:String):void { // status - On error occurred
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["apps"];
-                logData.message = "Error occured set guest policy.";
+								logData.logCode = "error_sending_set_guest_policy";
                 LOGGER.info(JSON.stringify(logData));
          },
          JSON.stringify(message)
@@ -659,7 +663,6 @@ package org.bigbluebutton.modules.users.services
     }
 
     public function responseToGuest(userId:String, response:Boolean):void {
-      LOGGER.debug("responseToGuest - userId:[" + userId + "] response:[" + response + "]");
 
 	  var _guests: Array = new Array();
 	  _guests.push({guest: userId, approved: response});
@@ -678,7 +681,7 @@ package org.bigbluebutton.modules.users.services
          function(status:String):void { // status - On error occurred
                 var logData:Object = UsersUtil.initLogData();
                 logData.tags = ["apps"];
-                logData.message = "Error occured response guest.";
+								logData.logCode = "error_sending_guest_waiting_approved";
                 LOGGER.info(JSON.stringify(logData));
          },
 		 JSON.stringify(message)
@@ -708,7 +711,7 @@ package org.bigbluebutton.modules.users.services
 			function(status:String):void { // status - On error occurred
 				var logData:Object = UsersUtil.initLogData();
 				logData.tags = ["apps"];
-				logData.message = "Error occured response guest.";
+				logData.logCode = "error_sending_guest_waiting_approved";
 				LOGGER.info(JSON.stringify(logData));
 			},
 			JSON.stringify(message)
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/business/VideoProxy.as b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/business/VideoProxy.as
index 404aa54876ef6ffe43503bb73a03dbfa064083c0..46664b7ffd6ef33f5b08a4e85a13cb41d8a87a6b 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/business/VideoProxy.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/business/VideoProxy.as
@@ -96,7 +96,7 @@ package org.bigbluebutton.modules.videoconf.business
 					}
 				
 					videoConnUrl = tunnelProtocol + "://" + result.server + "/" + result.app;
-					LOGGER.debug("VIDEO CONNECT tunnel = TRUE " + "url=" +  videoConnUrl);
+
 				} else {
 					var nativeProtocol: String = ConnUtil.RTMP;
 					if (useRTMPS) {
@@ -105,7 +105,7 @@ package org.bigbluebutton.modules.videoconf.business
 					}
 				
 					videoConnUrl = nativeProtocol + "://" + result.server + "/" + result.app;
-					LOGGER.debug("VIDEO CONNECT tunnel = FALSE " + "url=" +  videoConnUrl);
+
 				}
 				
 				var connId:String = ConnUtil.generateConnId();
@@ -114,6 +114,13 @@ package org.bigbluebutton.modules.videoconf.business
 				videoConnUrl = videoConnUrl + "/" + UsersUtil.getInternalMeetingID();
 				var authToken: String = LiveMeeting.inst().me.authToken;
 
+				var logData:Object = UsersUtil.initLogData();
+				logData.tags = ["webcam"];
+				logData.app = "video";
+				logData.logCode = "connection_connecting";
+				logData.url = videoConnUrl;
+				LOGGER.info(JSON.stringify(logData));
+				
 				nc.objectEncoding = flash.net.ObjectEncoding.AMF3;
 				nc.connect(videoConnUrl, UsersUtil.getInternalMeetingID(), 
 						UsersUtil.getMyUserID(), authToken, BBB.initConnectionManager().videoConnId);
@@ -122,14 +129,18 @@ package org.bigbluebutton.modules.videoconf.business
 		private function onAsyncError(event:AsyncErrorEvent):void{
 			var logData:Object = UsersUtil.initLogData();
 			logData.tags = ["webcam"];
-			logData.message = "VIDEO WEBCAM onAsyncError"; 
+			logData.app = "video";
+			logData.logCode = "connection_async_error";
+			logData.url = videoConnUrl;
 			LOGGER.error(JSON.stringify(logData));
 		}
 		
 		private function onIOError(event:NetStatusEvent):void{
 			var logData:Object = UsersUtil.initLogData();
 			logData.tags = ["webcam"];
-			logData.message = "VIDEO WEBCAM onIOError"; 
+			logData.app = "video";
+			logData.logCode = "connection_io_error";
+			logData.url = videoConnUrl;
 			LOGGER.error(JSON.stringify(logData));
 		}
 		
@@ -138,6 +149,14 @@ package org.bigbluebutton.modules.videoconf.business
 			if (reconnecting) {
 				reconnecting = false;
 				
+				var logData:Object = UsersUtil.initLogData();
+				logData.url = videoConnUrl;
+				logData.tags = ["webcam"];
+				logData.app = "video";
+				logData.reconnecting = reconnecting;
+				logData.logCode = "connection_reconnect_attempt_succeeded";
+				LOGGER.info(JSON.stringify(logData));
+				
 				var attemptSucceeded:BBBEvent = new BBBEvent(BBBEvent.RECONNECT_CONNECTION_ATTEMPT_SUCCEEDED_EVENT);
 				attemptSucceeded.payload.type = ReconnectionManager.VIDEO_CONNECTION;
 				dispatcher.dispatchEvent(attemptSucceeded);
@@ -146,39 +165,41 @@ package org.bigbluebutton.modules.videoconf.business
     
 		private function onNetStatus(event:NetStatusEvent):void{
 
-			LOGGER.debug("[{0}] for [{1}]", [event.info.code, videoConnUrl]);
 			var logData:Object = UsersUtil.initLogData();
 			logData.tags = ["webcam"];
-			logData.user.eventCode = event.info.code + "[reconnecting=" + reconnecting + ",reconnect=" + reconnect + "]";
+			logData.app = "video";
+			logData.url = videoConnUrl;
+			logData.reconnecting = reconnecting;
+			logData.reconnect = reconnect;
 						
 			switch(event.info.code){
 				case "NetConnection.Connect.Success":
 					numNetworkChangeCount = 0;
-          			onConnectedToVideoApp();
+					logData.logCode = "connect_attempt_connected";
+          onConnectedToVideoApp();
 					break;
 				case "NetStream.Play.Failed":
-					if (reconnect) {
-						logData.message = "NetStream.Play.Failed from bbb-video";
+						logData.logCode = "netstream_play_failed";
 						LOGGER.info(JSON.stringify(logData));
-					}
 					
 					break;
 				case "NetStream.Play.Stop":
-					if (reconnect) {
-						logData.message = "NetStream.Play.Stop from bbb-video";
+						logData.logCode = "netstream_play_stop";
 						LOGGER.info(JSON.stringify(logData));
-					}
 					
 					break;		
 				case "NetConnection.Connect.Closed":
-					logData.message = "NetConnection.Connect.Closed from bbb-video";
+					logData.logCode = "connection_closed";
 					LOGGER.info(JSON.stringify(logData));
 					
 					dispatcher.dispatchEvent(new StopBroadcastEvent());
 					
 					if (reconnect) {
 						reconnecting = true;
-
+						
+						logData.logCode = "connection_reconnect_attempt";
+						LOGGER.info(JSON.stringify(logData));
+						
 						var disconnectedEvent:BBBEvent = new BBBEvent(BBBEvent.RECONNECT_DISCONNECTED_EVENT);
 						disconnectedEvent.payload.type = ReconnectionManager.VIDEO_CONNECTION;
 						disconnectedEvent.payload.callback = connect;
@@ -188,34 +209,41 @@ package org.bigbluebutton.modules.videoconf.business
 					break;
 					
 				case "NetConnection.Connect.Failed":
+					logData.logCode = "connect_attempt_failed";
+					LOGGER.info(JSON.stringify(logData));
+					
 					if (reconnecting) {
+						logData.logCode = "connection_reconnect_attempt_failed";
+						LOGGER.info(JSON.stringify(logData));
+						
 						var attemptFailedEvent:BBBEvent = new BBBEvent(BBBEvent.RECONNECT_CONNECTION_ATTEMPT_FAILED_EVENT);
 						attemptFailedEvent.payload.type = ReconnectionManager.VIDEO_CONNECTION;
 						dispatcher.dispatchEvent(attemptFailedEvent);
 					}
-					
-					if (reconnect) {
-						logData.message = "NetConnection.Connect.Failed from bbb-video";
-						LOGGER.info(JSON.stringify(logData));
-					}
-					
+										
 					disconnect();
 					break;		
 				case "NetConnection.Connect.NetworkChange":
 					numNetworkChangeCount++;
-					if (numNetworkChangeCount % 2 == 0) {
-						logData.message = "Detected network change on bbb-video";
-						logData.numNetworkChangeCount = numNetworkChangeCount;
-						LOGGER.info(JSON.stringify(logData));
-					}
+					logData.logCode = "connection_network_change";
+					logData.numNetworkChangeCount = numNetworkChangeCount;
+					LOGGER.info(JSON.stringify(logData));
 					break;
-        		default:
-					LOGGER.debug("[{0}] for [{1}]", [event.info.code, videoConnUrl]);
+        default:
+					logData.logCode = "connection_failed_unknown_reason";
+					logData.statusCode = event.info.code;
+					LOGGER.info(JSON.stringify(logData));
 					break;
 			}
 		}
 		
 		private function onSecurityError(event:NetStatusEvent):void{
+			var logData:Object = UsersUtil.initLogData();
+			logData.tags = ["webcam", "connection"];
+			logData.app = "video";
+			logData.url = videoConnUrl;
+			logData.logCode = "connection_security_error";
+			LOGGER.info(JSON.stringify(logData));
 		}
 		
 		public function get connection():NetConnection{
@@ -266,7 +294,6 @@ package org.bigbluebutton.modules.videoconf.business
 		}
 		
 		public function stopBroadcasting(stream:String):void{
-			LOGGER.debug("Closing netstream for webcam publishing");
       			if (camerasPublishing[stream] != null) {
 	      			var ns:NetStream = camerasPublishing[stream];
 				ns.attachCamera(null);
@@ -287,7 +314,6 @@ package org.bigbluebutton.modules.videoconf.business
 		}
 
 		public function disconnect():void {
-      		LOGGER.debug("VideoProxy:: disconnecting from Video application");
       		stopAllBroadcasting();
 			if (nc != null) nc.close();
 		}
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/UserVideo.as b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/UserVideo.as
index 8ed2da82502a89d49d4468d97568680b832c487b..e42289ffb32d6f02aa49a993f435dff7f21626a3 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/UserVideo.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/UserVideo.as
@@ -44,9 +44,9 @@ package org.bigbluebutton.modules.videoconf.views
     public function publish(camIndex:int, videoProfile:VideoProfile, streamName:String):void {
       if (_shuttingDown) {
         var logData:Object = UsersUtil.initLogData();
-        logData.streamName = streamName;
+        logData.streamId = streamName;
         logData.tags = ["video"];
-        logData.message = "Method publish called while shutting down the video window, ignoring...";
+        logData.logCode = "publish_while_shutting_video_window";
         LOGGER.warn(JSON.stringify(logData));
         return;
       }
@@ -80,19 +80,32 @@ package org.bigbluebutton.modules.videoconf.views
     }
 
     public static function getVideoProfile(stream:String):VideoProfile {
-      LOGGER.debug("Parsing stream name [{0}]", [stream]);
+			var logData:Object = UsersUtil.initLogData();
+			logData.tags = ["webcam"];
+			logData.app = "video";
+			logData.streamId = stream;
+			
       var pattern:RegExp = new RegExp("([A-Za-z0-9]+)-([A-Za-z0-9_]+)-\\d+", "");
       if (pattern.test(stream)) {
-        LOGGER.debug("The stream name is well formatted");
-        LOGGER.debug("Video profile resolution is [{0}]", [pattern.exec(stream)[1]]);
-        LOGGER.debug("Userid [{0}]", [pattern.exec(stream)[2]]);
-        return BBB.getVideoProfileById(pattern.exec(stream)[1]);
+
+				var vidProfile:VideoProfile = BBB.getVideoProfileById(pattern.exec(stream)[1]);
+				
+				logData.vidProfile = vidProfile.vidProfileInfo();
+				logData.logCode = "get_video_profile";
+				LOGGER.info(JSON.stringify(logData));
+				
+        return vidProfile;
       } else {
-        LOGGER.debug("Bad stream name format");
+
         var profile:VideoProfile = BBB.defaultVideoProfile;
         if (profile == null) {
           profile = BBB.fallbackVideoProfile;
         }
+				
+				logData.vidProfile = profile.vidProfileInfo();
+				logData.logCode = "get_video_profile_failed";
+				LOGGER.info(JSON.stringify(logData));
+				
         return profile;
       }
     }
@@ -160,9 +173,9 @@ package org.bigbluebutton.modules.videoconf.views
     public function view(connection:NetConnection, streamName:String):void {
       if (_shuttingDown) {
         var logData:Object = UsersUtil.initLogData();
-        logData.streamName = streamName;
+        logData.streamId = streamName;
         logData.tags = ["video"];
-        logData.message = "Method view called while shutting down the video window, ignoring...";
+        logData.logCode = "view_while_shutting_video_window";
         LOGGER.warn(JSON.stringify(logData));
         return;
       }
@@ -179,7 +192,7 @@ package org.bigbluebutton.modules.videoconf.views
       _ns.receiveAudio(false);
       
       _videoProfile = UserVideo.getVideoProfile(streamName);
-      LOGGER.debug("Remote video profile: {0}", [_videoProfile.toString()]);
+
       if (_videoProfile == null) {
         throw("Invalid video profile");
         return;
@@ -192,7 +205,7 @@ package org.bigbluebutton.modules.videoconf.views
         var filter:ConvolutionFilter = new ConvolutionFilter();
         filter.matrixX = 3;
         filter.matrixY = 3;
-        LOGGER.debug("Applying convolution filter =[{0}]", [options.convolutionFilter]);
+
         filter.matrix = options.convolutionFilter;
         filter.bias =  options.filterBias;
         filter.divisor = options.filterDivisor;
@@ -207,28 +220,42 @@ package org.bigbluebutton.modules.videoconf.views
     }
 
     private function onNetStatus(e:NetStatusEvent):void{
+			var logData:Object = UsersUtil.initLogData();
+			logData.streamId = streamName;
+			logData.tags = ["video"];
+			
       switch(e.info.code){
         case "NetStream.Publish.Start":
-          LOGGER.debug("NetStream.Publish.Start for broadcast stream {0}", [_streamName]);
+					logData.logCode = "netstream_publish_start";
+					LOGGER.warn(JSON.stringify(logData));
           break;
         case "NetStream.Play.UnpublishNotify":
+					logData.logCode = "netstream_play_unpublish_notify";
+					LOGGER.warn(JSON.stringify(logData));
           shutdown();
           break;
         case "NetStream.Play.Start":
-			LOGGER.debug("Netstatus: {0}", [e.info.code ]);
+					logData.logCode = "netstream_play_start";
+					LOGGER.warn(JSON.stringify(logData));
           _dispatcher.dispatchEvent(new BBBEvent(BBBEvent.VIDEO_STARTED));
           break;
         case "NetStream.Play.FileStructureInvalid":
-		  LOGGER.error("The MP4's file structure is invalid.");
+					logData.logCode = "netstream_play_invalid_file_structure";
+					LOGGER.warn(JSON.stringify(logData));
           break;
         case "NetStream.Play.NoSupportedTrackFound":
-		  LOGGER.error("The MP4 doesn't contain any supported tracks");
+					logData.logCode = "netstream_play_unsupported_track";
+					LOGGER.warn(JSON.stringify(logData));
           break;
       }
     }
 
     private function onAsyncError(e:AsyncErrorEvent):void{
-		LOGGER.debug(e.text);
+			var logData:Object = UsersUtil.initLogData();
+			logData.streamId = streamName;
+			logData.tags = ["video"];
+			logData.logCode = "netstream_async_error";
+			LOGGER.warn(JSON.stringify(logData));
     }
     
     public function onMetaData(info:Object):void {
diff --git a/bigbluebutton-client/src/org/bigbluebutton/util/ConnUtil.as b/bigbluebutton-client/src/org/bigbluebutton/util/ConnUtil.as
index 65bd3ce17b336aae89efbe2e1e774ff96a946279..c341ba50a96be9873ec9e345f15f877acf17ffc2 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/util/ConnUtil.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/util/ConnUtil.as
@@ -16,7 +16,8 @@ package org.bigbluebutton.util
 			}
 			
 			private static function generateRandomString(strlen:Number):String{
-				var chars:String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+				//var chars:String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+				var chars:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
 				var num_chars:Number = chars.length - 1;
 				var randomChar:String = "";
 				
@@ -27,7 +28,7 @@ package org.bigbluebutton.util
 			}
 			
 			public static function generateConnId():String {
-				return generateRandomString(15);
+				return generateRandomString(16);
 			}
 			
 	}
diff --git a/bigbluebutton-client/src/org/bigbluebutton/util/logging/ServerLogTarget.as b/bigbluebutton-client/src/org/bigbluebutton/util/logging/ServerLogTarget.as
index bfc516464bebe8da7026eb3e664790545cd90362..25f4b63db91f7593c9d71435e0b432d4938941cf 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/util/logging/ServerLogTarget.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/util/logging/ServerLogTarget.as
@@ -79,7 +79,7 @@ package org.bigbluebutton.util.logging
 		{
 			var userId:String = UsersUtil.getMyUserID();
 			var meetingId:String = UsersUtil.getInternalMeetingID();
-			name = userId + " " + meetingId + " " + name;
+			name = userId + " " + meetingId; // + " " + name;
 			var formattedMessage:String=_formatter.format(name, shortName, level, timeStamp, message, parameters, person);
 
 			// check if contains info from config field