This is an automated email from the ASF dual-hosted git repository.

joao pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/main by this push:
     new 501d8c1e091 Add logs to CPVM connection process (#8924)
501d8c1e091 is described below

commit 501d8c1e09173717a4ed98b43acf41cdcd245f12
Author: Bernardo De Marco Gonçalves <[email protected]>
AuthorDate: Mon Sep 9 15:39:42 2024 -0300

    Add logs to CPVM connection process (#8924)
    
    * increment cpvm connection logs
    
    * remove sourceIp variable
    
    * increment cpvm connection logs
    
    * extract duplicate error messages to variables
    
    * change logs level from trace to debug in authenticateToVNCServer
    
    * add logs in trace level inside of connection loop
    
    * remove redundant trace log
    
    * add logs to ConsoleProxyNoVNCHandler class
    
    * retrieve client source IP
    
    * add periods to log messages
    
    * change log levels from warn to error inside of catch blocks
    
    * add client IP to successful authentication log
    
    * replace concatenation with String.format()
    
    * remove String.format() and use log4j2 new features instead
    
    * remove String.format() and use log4j2 new features instead
    
    * apply Daan's suggestion
    
    Co-authored-by: dahn <[email protected]>
    
    * resolve conflicts
    
    * fix logs with three parameters
    
    * get correct client IP
    
    * use log4j dependencies directly
    
    * apply winterhazel's suggestion
    
    Co-authored-by: Fabricio Duarte <[email protected]>
    
    * remove log proxy
    
    * address winterhazel's suggestions on ConsoleProxyNoVncClient class
    
    * address winterhazel's suggestions on ConsoleProxyNoVNCHandler class
    
    * address winterhazel's suggestions on ConsoleProxyNoVNCHandler class
    
    Co-authored-by: Fabricio Duarte <[email protected]>
    
    ---------
    
    Co-authored-by: dahn <[email protected]>
    Co-authored-by: Fabricio Duarte <[email protected]>
---
 .../com/cloud/servlet/ConsoleProxyClientParam.java |  17 ++
 .../com/cloud/consoleproxy/AjaxFIFOImageCache.java |   5 +-
 .../java/com/cloud/consoleproxy/ConsoleProxy.java  |   8 +-
 .../consoleproxy/ConsoleProxyAjaxHandler.java      |   5 +-
 .../consoleproxy/ConsoleProxyAjaxImageHandler.java |   5 +-
 .../ConsoleProxyBaseServerFactoryImpl.java         |   5 +-
 .../consoleproxy/ConsoleProxyClientParam.java      |  16 ++
 .../cloud/consoleproxy/ConsoleProxyCmdHandler.java |   5 +-
 .../ConsoleProxyHttpHandlerHelper.java             |   5 +-
 .../consoleproxy/ConsoleProxyLoggerFactory.java    | 104 ----------
 .../cloud/consoleproxy/ConsoleProxyMonitor.java    |   5 +-
 .../consoleproxy/ConsoleProxyNoVNCHandler.java     |  47 +++--
 .../consoleproxy/ConsoleProxyNoVNCServer.java      |   5 +-
 .../consoleproxy/ConsoleProxyNoVncClient.java      |  38 ++--
 .../consoleproxy/ConsoleProxyResourceHandler.java  |   5 +-
 .../consoleproxy/ConsoleProxyThumbnailHandler.java |   5 +-
 .../consoleproxy/rdp/RdpBufferedImageCanvas.java   |   6 +-
 .../java/com/cloud/consoleproxy/util/Logger.java   | 223 ---------------------
 .../com/cloud/consoleproxy/util/LoggerFactory.java |  21 --
 .../java/com/cloud/consoleproxy/util/RawHTTP.java  |   5 +-
 .../consoleproxy/vnc/BufferedImageCanvas.java      |   6 +-
 .../com/cloud/consoleproxy/vnc/NoVncClient.java    |  21 +-
 .../java/com/cloud/consoleproxy/vnc/VncClient.java |   6 +-
 .../consoleproxy/vnc/VncClientPacketSender.java    |   6 +-
 .../consoleproxy/vnc/VncServerPacketReceiver.java  |   6 +-
 .../vnc/packet/server/AbstractRect.java            |   5 +-
 .../vnc/packet/server/ServerCutText.java           |   6 +-
 .../consoleproxy/vnc/security/VncAuthSecurity.java |   6 +-
 .../consoleproxy/vnc/security/VncTLSSecurity.java  |   6 +-
 .../websocket/WebSocketReverseProxy.java           |   6 +-
 30 files changed, 172 insertions(+), 437 deletions(-)

diff --git 
a/server/src/main/java/com/cloud/servlet/ConsoleProxyClientParam.java 
b/server/src/main/java/com/cloud/servlet/ConsoleProxyClientParam.java
index e23778c0b98..b416ab98288 100644
--- a/server/src/main/java/com/cloud/servlet/ConsoleProxyClientParam.java
+++ b/server/src/main/java/com/cloud/servlet/ConsoleProxyClientParam.java
@@ -34,7 +34,16 @@ public class ConsoleProxyClientParam {
     private String username;
     private String password;
 
+    /**
+     * IP that has generated the console endpoint
+     */
     private String sourceIP;
+
+    /**
+     * IP of the client that has connected to the console
+     */
+    private String clientIp;
+
     private String websocketUrl;
 
     private String sessionUuid;
@@ -201,4 +210,12 @@ public class ConsoleProxyClientParam {
     public void setSessionUuid(String sessionUuid) {
         this.sessionUuid = sessionUuid;
     }
+
+    public String getClientIp() {
+        return clientIp;
+    }
+
+    public void setClientIp(String clientIp) {
+        this.clientIp = clientIp;
+    }
 }
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/AjaxFIFOImageCache.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/AjaxFIFOImageCache.java
index 5a0a29977b5..1b94578d1e0 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/AjaxFIFOImageCache.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/AjaxFIFOImageCache.java
@@ -21,10 +21,11 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 public class AjaxFIFOImageCache {
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     private List<Integer> fifoQueue;
     private Map<Integer, byte[]> cache;
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java
index c841f76540d..22922f43f93 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java
@@ -39,17 +39,19 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.core.config.Configurator;
 import org.eclipse.jetty.websocket.api.Session;
 
-import com.cloud.consoleproxy.util.Logger;
 import com.cloud.utils.PropertiesUtil;
 import com.google.gson.Gson;
 import com.sun.net.httpserver.HttpServer;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 /**
  *
  * ConsoleProxy, singleton class that manages overall activities in console 
proxy process. To make legacy code work, we still
  */
 public class ConsoleProxy {
-    protected static Logger LOGGER = Logger.getLogger(ConsoleProxy.class);
+    protected static Logger LOGGER = LogManager.getLogger(ConsoleProxy.class);
 
     public static final int KEYBOARD_RAW = 0;
     public static final int KEYBOARD_COOKED = 1;
@@ -280,7 +282,6 @@ public class ConsoleProxy {
     public static void startWithContext(Properties conf, Object context, 
byte[] ksBits, String ksPassword, String password, Boolean 
isSourceIpCheckEnabled) {
         setEncryptorPassword(password);
         configLog4j();
-        Logger.setFactory(new ConsoleProxyLoggerFactory());
         LOGGER.info("Start console proxy with context");
 
         if (conf != null) {
@@ -427,7 +428,6 @@ public class ConsoleProxy {
     public static void main(String[] argv) {
         standaloneStart = true;
         configLog4j();
-        Logger.setFactory(new ConsoleProxyLoggerFactory());
 
         InputStream confs = 
ConsoleProxy.class.getResourceAsStream("/conf/consoleproxy.properties");
         Properties conf = new Properties();
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxHandler.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxHandler.java
index e42917db6aa..bfd25188c65 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxHandler.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxHandler.java
@@ -32,10 +32,11 @@ import com.sun.net.httpserver.Headers;
 import com.sun.net.httpserver.HttpExchange;
 import com.sun.net.httpserver.HttpHandler;
 
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 public class ConsoleProxyAjaxHandler implements HttpHandler {
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     public ConsoleProxyAjaxHandler() {
     }
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxImageHandler.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxImageHandler.java
index af200b0a0e8..bb5b9f6ec31 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxImageHandler.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxImageHandler.java
@@ -28,10 +28,11 @@ import com.sun.net.httpserver.Headers;
 import com.sun.net.httpserver.HttpExchange;
 import com.sun.net.httpserver.HttpHandler;
 
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 public class ConsoleProxyAjaxImageHandler implements HttpHandler {
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     @Override
     public void handle(HttpExchange t) throws IOException {
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyBaseServerFactoryImpl.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyBaseServerFactoryImpl.java
index b178f0d5d68..548b1a99261 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyBaseServerFactoryImpl.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyBaseServerFactoryImpl.java
@@ -23,10 +23,11 @@ import javax.net.ssl.SSLServerSocket;
 
 import com.sun.net.httpserver.HttpServer;
 
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 public class ConsoleProxyBaseServerFactoryImpl implements 
ConsoleProxyServerFactory {
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     @Override
     public void init(byte[] ksBits, String ksPassword) {
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyClientParam.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyClientParam.java
index aa1f2223a8c..01c4fa6480e 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyClientParam.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyClientParam.java
@@ -39,8 +39,16 @@ public class ConsoleProxyClientParam {
     private String password;
     private String websocketUrl;
 
+    /**
+     * IP that has generated the console endpoint
+     */
     private String sourceIP;
 
+    /**
+     * IP of the client that has connected to the console
+     */
+    private String clientIp;
+
     private String sessionUuid;
 
     /**
@@ -204,4 +212,12 @@ public class ConsoleProxyClientParam {
     public void setClientProvidedExtraSecurityToken(String 
clientProvidedExtraSecurityToken) {
         this.clientProvidedExtraSecurityToken = 
clientProvidedExtraSecurityToken;
     }
+
+    public String getClientIp() {
+        return clientIp;
+    }
+
+    public void setClientIp(String clientIp) {
+        this.clientIp = clientIp;
+    }
 }
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyCmdHandler.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyCmdHandler.java
index 400eb2b9984..606b4509512 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyCmdHandler.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyCmdHandler.java
@@ -24,10 +24,11 @@ import com.sun.net.httpserver.Headers;
 import com.sun.net.httpserver.HttpExchange;
 import com.sun.net.httpserver.HttpHandler;
 
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 public class ConsoleProxyCmdHandler implements HttpHandler {
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     @Override
     public void handle(HttpExchange t) throws IOException {
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyHttpHandlerHelper.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyHttpHandlerHelper.java
index fb9d0794c22..48ac5f44ff2 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyHttpHandlerHelper.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyHttpHandlerHelper.java
@@ -19,10 +19,11 @@ package com.cloud.consoleproxy;
 import java.util.HashMap;
 import java.util.Map;
 
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 public class ConsoleProxyHttpHandlerHelper {
-    protected static Logger LOGGER = 
Logger.getLogger(ConsoleProxyHttpHandlerHelper.class);
+    protected static Logger LOGGER = 
LogManager.getLogger(ConsoleProxyHttpHandlerHelper.class);
 
     public static Map<String, String> getQueryMap(String query) {
         String[] params = query.split("&");
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyLoggerFactory.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyLoggerFactory.java
deleted file mode 100644
index 74e393f64d8..00000000000
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyLoggerFactory.java
+++ /dev/null
@@ -1,104 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.consoleproxy;
-
-import com.cloud.consoleproxy.util.Logger;
-import com.cloud.consoleproxy.util.LoggerFactory;
-import org.apache.logging.log4j.LogManager;
-
-public class ConsoleProxyLoggerFactory implements LoggerFactory {
-    public ConsoleProxyLoggerFactory() {
-    }
-
-    @Override
-    public Logger getLogger(Class<?> clazz) {
-        return new Log4jLogger(LogManager.getLogger(clazz));
-    }
-
-    public static class Log4jLogger extends Logger {
-        private org.apache.logging.log4j.Logger logger;
-
-        public Log4jLogger(org.apache.logging.log4j.Logger logger) {
-            this.logger = logger;
-        }
-
-        @Override
-        public boolean isTraceEnabled() {
-            return logger.isTraceEnabled();
-        }
-
-        @Override
-        public boolean isDebugEnabled() {
-            return logger.isDebugEnabled();
-        }
-
-        @Override
-        public boolean isInfoEnabled() {
-            return logger.isInfoEnabled();
-        }
-
-        @Override
-        public void trace(Object message) {
-            logger.trace(message);
-        }
-
-        @Override
-        public void trace(Object message, Throwable exception) {
-            logger.trace(message, exception);
-        }
-
-        @Override
-        public void info(Object message) {
-            logger.info(message);
-        }
-
-        @Override
-        public void info(Object message, Throwable exception) {
-            logger.info(message, exception);
-        }
-
-        @Override
-        public void debug(Object message) {
-            logger.debug(message);
-        }
-
-        @Override
-        public void debug(Object message, Throwable exception) {
-            logger.debug(message, exception);
-        }
-
-        @Override
-        public void warn(Object message) {
-            logger.warn(message);
-        }
-
-        @Override
-        public void warn(Object message, Throwable exception) {
-            logger.warn(message, exception);
-        }
-
-        @Override
-        public void error(Object message) {
-            logger.error(message);
-        }
-
-        @Override
-        public void error(Object message, Throwable exception) {
-            logger.error(message, exception);
-        }
-    }
-}
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyMonitor.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyMonitor.java
index 378072ad804..3e224d8d4c4 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyMonitor.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyMonitor.java
@@ -24,7 +24,8 @@ import java.util.HashMap;
 import java.util.Map;
 
 
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.config.Configurator;
 
 //
@@ -33,7 +34,7 @@ import org.apache.logging.log4j.core.config.Configurator;
 // itself and the shell script will re-launch console proxy
 //
 public class ConsoleProxyMonitor {
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     private String[] _argv;
     private Map<String, String> _argMap = new HashMap<String, String>();
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCHandler.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCHandler.java
index be0db7b8fb4..a9639d0b32e 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCHandler.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCHandler.java
@@ -23,7 +23,8 @@ import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import org.eclipse.jetty.server.Request;
 import org.eclipse.jetty.websocket.api.Session;
@@ -40,7 +41,7 @@ import 
org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
 public class ConsoleProxyNoVNCHandler extends WebSocketHandler {
 
     private ConsoleProxyNoVncClient viewer = null;
-    protected Logger logger = Logger.getLogger(ConsoleProxyNoVNCHandler.class);
+    protected Logger logger = LogManager.getLogger(getClass());
 
     public ConsoleProxyNoVNCHandler() {
         super();
@@ -82,15 +83,16 @@ public class ConsoleProxyNoVNCHandler extends 
WebSocketHandler {
         String ticket = queryMap.get("ticket");
         String displayName = queryMap.get("displayname");
         String ajaxSessionIdStr = queryMap.get("sess");
-        String console_url = queryMap.get("consoleurl");
-        String console_host_session = queryMap.get("sessionref");
-        String vm_locale = queryMap.get("locale");
+        String consoleUrl = queryMap.get("consoleurl");
+        String consoleHostSession = queryMap.get("sessionref");
+        String vmLocale = queryMap.get("locale");
         String hypervHost = queryMap.get("hypervHost");
         String username = queryMap.get("username");
         String password = queryMap.get("password");
         String sourceIP = queryMap.get("sourceIP");
         String websocketUrl = queryMap.get("websocketUrl");
         String sessionUuid = queryMap.get("sessionUuid");
+        String clientIp = 
session.getRemoteAddress().getAddress().getHostAddress();
 
         if (tag == null)
             tag = "";
@@ -104,7 +106,7 @@ public class ConsoleProxyNoVNCHandler extends 
WebSocketHandler {
         try {
             port = Integer.parseInt(portStr);
         } catch (NumberFormatException e) {
-            logger.warn("Invalid number parameter in query string: " + 
portStr);
+            logger.error("Invalid port value in query string: {}. Expected a 
number.", portStr, e);
             throw new IllegalArgumentException(e);
         }
 
@@ -112,12 +114,12 @@ public class ConsoleProxyNoVNCHandler extends 
WebSocketHandler {
             try {
                 ajaxSessionId = Long.parseLong(ajaxSessionIdStr);
             } catch (NumberFormatException e) {
-                logger.warn("Invalid number parameter in query string: " + 
ajaxSessionIdStr);
+                logger.error("Invalid ajaxSessionId (sess) value in query 
string: {}. Expected a number.", ajaxSessionIdStr, e);
                 throw new IllegalArgumentException(e);
             }
         }
 
-        if (! checkSessionSourceIp(session, sourceIP)) {
+        if (!checkSessionSourceIp(session, sourceIP, clientIp)) {
             return;
         }
 
@@ -129,14 +131,17 @@ public class ConsoleProxyNoVNCHandler extends 
WebSocketHandler {
             param.setClientTag(tag);
             param.setTicket(ticket);
             param.setClientDisplayName(displayName);
-            param.setClientTunnelUrl(console_url);
-            param.setClientTunnelSession(console_host_session);
-            param.setLocale(vm_locale);
+            param.setClientTunnelUrl(consoleUrl);
+            param.setClientTunnelSession(consoleHostSession);
+            param.setLocale(vmLocale);
             param.setHypervHost(hypervHost);
             param.setUsername(username);
             param.setPassword(password);
             param.setWebsocketUrl(websocketUrl);
             param.setSessionUuid(sessionUuid);
+            param.setSourceIP(sourceIP);
+            param.setClientIp(clientIp);
+
             if (queryMap.containsKey("extraSecurityToken")) {
                 
param.setExtraSecurityToken(queryMap.get("extraSecurityToken"));
             }
@@ -144,8 +149,9 @@ public class ConsoleProxyNoVNCHandler extends 
WebSocketHandler {
                 
param.setClientProvidedExtraSecurityToken(queryMap.get("extra"));
             }
             viewer = ConsoleProxy.getNoVncViewer(param, ajaxSessionIdStr, 
session);
+            logger.info("Viewer has been created successfully [session UUID: 
{}, client IP: {}].", sessionUuid, clientIp);
         } catch (Exception e) {
-            logger.warn("Failed to create viewer due to " + e.getMessage(), e);
+            logger.error("Failed to create viewer [session UUID: {}, client 
IP: {}] due to {}.", sessionUuid, clientIp, e.getMessage(), e);
             return;
         } finally {
             if (viewer == null) {
@@ -154,32 +160,35 @@ public class ConsoleProxyNoVNCHandler extends 
WebSocketHandler {
         }
     }
 
-    private boolean checkSessionSourceIp(final Session session, final String 
sourceIP) throws IOException {
-        // Verify source IP
-        String sessionSourceIP = 
session.getRemoteAddress().getAddress().getHostAddress();
-        logger.info("Get websocket connection request from remote IP : " + 
sessionSourceIP);
-        if (ConsoleProxy.isSourceIpCheckEnabled && (sessionSourceIP == null || 
! sessionSourceIP.equals(sourceIP))) {
-            logger.warn("Failed to access console as the source IP to request 
the console is " + sourceIP);
+    private boolean checkSessionSourceIp(final Session session, final String 
sourceIP, String sessionSourceIP) throws IOException {
+        logger.info("Verifying session source IP {} from WebSocket connection 
request.", sessionSourceIP);
+        if (ConsoleProxy.isSourceIpCheckEnabled && (sessionSourceIP == null || 
!sessionSourceIP.equals(sourceIP))) {
+            logger.warn("Failed to access console as the source IP to request 
the console is {}.", sourceIP);
             session.disconnect();
             return false;
         }
+        logger.debug("Session source IP {} has been verified successfully.", 
sessionSourceIP);
         return true;
     }
 
     @OnWebSocketClose
     public void onClose(Session session, int statusCode, String reason) throws 
IOException, InterruptedException {
+        String sessionSourceIp = 
session.getRemoteAddress().getAddress().getHostAddress();
+        logger.debug("Closing WebSocket session [source IP: {}, status code: 
{}].", sessionSourceIp, statusCode);
         if (viewer != null) {
             ConsoleProxy.removeViewer(viewer);
         }
+        logger.debug("WebSocket session [source IP: {}, status code: {}] 
closed successfully.", sessionSourceIp, statusCode);
     }
 
     @OnWebSocketFrame
     public void onFrame(Frame f) throws IOException {
+        logger.trace("Sending client [ID: {}] frame of {} bytes.", 
viewer.getClientId(), f.getPayloadLength());
         viewer.sendClientFrame(f);
     }
 
     @OnWebSocketError
     public void onError(Throwable cause) {
-        logger.error("Error on websocket", cause);
+        logger.error("Error on WebSocket [client ID: {}, session UUID: {}].", 
cause, viewer.getClientId(), viewer.getSessionUuid());
     }
 }
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCServer.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCServer.java
index f65754169f6..3d94ed26b0b 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCServer.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCServer.java
@@ -22,7 +22,8 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.security.KeyStore;
 
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import org.eclipse.jetty.server.HttpConfiguration;
 import org.eclipse.jetty.server.HttpConnectionFactory;
@@ -34,7 +35,7 @@ import org.eclipse.jetty.util.ssl.SslContextFactory;
 
 public class ConsoleProxyNoVNCServer {
 
-    protected static Logger LOGGER = 
Logger.getLogger(ConsoleProxyNoVNCServer.class);
+    protected static Logger LOGGER = 
LogManager.getLogger(ConsoleProxyNoVNCServer.class);
     public static final int WS_PORT = 8080;
     public static final int WSS_PORT = 8443;
     private static final String VNC_CONF_FILE_LOCATION = "/root/vncport";
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java
index cf9e3cfddcc..fece5bfaa22 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java
@@ -75,9 +75,9 @@ public class ConsoleProxyNoVncClient implements 
ConsoleProxyClient {
 
     @Override
     public boolean isFrontEndAlive() {
-        if (!connectionAlive || System.currentTimeMillis()
-                - getClientLastFrontEndActivityTime() > 
ConsoleProxy.VIEWER_LINGER_SECONDS * 1000) {
-            logger.info("Front end has been idle for too long");
+        long unusedTime = System.currentTimeMillis() - 
getClientLastFrontEndActivityTime();
+        if (!connectionAlive || unusedTime > 
ConsoleProxy.VIEWER_LINGER_SECONDS * 1000) {
+            logger.info("Front end has been idle for too long ({} ms).", 
unusedTime);
             return false;
         }
         return true;
@@ -95,23 +95,24 @@ public class ConsoleProxyNoVncClient implements 
ConsoleProxyClient {
         client = new NoVncClient();
         connectionAlive = true;
         this.sessionUuid = param.getSessionUuid();
+        String clientSourceIp = param.getClientIp();
+        logger.debug("Initializing client from IP {}.", clientSourceIp);
 
         updateFrontEndActivityTime();
         Thread worker = new Thread(new Runnable() {
             public void run() {
                 try {
-
                     String tunnelUrl = param.getClientTunnelUrl();
                     String tunnelSession = param.getClientTunnelSession();
                     String websocketUrl = param.getWebsocketUrl();
 
                     connectClientToVNCServer(tunnelUrl, tunnelSession, 
websocketUrl);
-
-                    authenticateToVNCServer();
+                    authenticateToVNCServer(clientSourceIp);
 
                     int readBytes;
                     byte[] b;
                     while (connectionAlive) {
+                        logger.trace("Connection with client [{}] [IP: {}] is 
alive.", clientId, clientSourceIp);
                         if (client.isVncOverWebSocketConnection()) {
                             if (client.isVncOverWebSocketConnectionOpen()) {
                                 updateFrontEndActivityTime();
@@ -122,7 +123,7 @@ public class ConsoleProxyNoVncClient implements 
ConsoleProxyClient {
                             int nextBytes = client.getNextBytes();
                             bytesArr = new byte[nextBytes];
                             client.readBytes(bytesArr, nextBytes);
-                            logger.trace(String.format("Read [%s] bytes from 
client [%s]", nextBytes, clientId));
+                            logger.trace("Read [{}] bytes from client [{}].", 
nextBytes, clientId);
                             if (nextBytes > 0) {
                                 
session.getRemote().sendBytes(ByteBuffer.wrap(bytesArr));
                                 updateFrontEndActivityTime();
@@ -132,7 +133,7 @@ public class ConsoleProxyNoVncClient implements 
ConsoleProxyClient {
                         } else {
                             b = new byte[100];
                             readBytes = client.read(b);
-                            logger.trace(String.format("Read [%s] bytes from 
client [%s]", readBytes, clientId));
+                            logger.trace("Read [{}] bytes from client [{}].", 
readBytes, clientId);
                             if (readBytes == -1 || (readBytes > 0 && 
!sendReadBytesToNoVNC(b, readBytes))) {
                                 connectionAlive = false;
                             }
@@ -143,7 +144,7 @@ public class ConsoleProxyNoVncClient implements 
ConsoleProxyClient {
                             logger.error("Error on sleep for vnc sessions", e);
                         }
                     }
-                    logger.info(String.format("Connection with client [%s] is 
dead.", clientId));
+                    logger.info("Connection with client [{}] [IP: {}] is 
dead.", clientId, clientSourceIp);
                 } catch (IOException e) {
                     logger.error("Error on VNC client", e);
                 }
@@ -158,7 +159,7 @@ public class ConsoleProxyNoVncClient implements 
ConsoleProxyClient {
             session.getRemote().sendBytes(ByteBuffer.wrap(b, 0, readBytes));
             updateFrontEndActivityTime();
         } catch (WebSocketException | IOException e) {
-            logger.debug("Connection exception", e);
+            logger.error("VNC server connection exception.", e);
             return false;
         }
         return true;
@@ -176,20 +177,24 @@ public class ConsoleProxyNoVncClient implements 
ConsoleProxyClient {
      *
      * Reference: 
https://github.com/rfbproto/rfbproto/blob/master/rfbproto.rst#7protocol-messages
      */
-    private void authenticateToVNCServer() throws IOException {
+    private void authenticateToVNCServer(String clientSourceIp) throws 
IOException {
         if (client.isVncOverWebSocketConnection()) {
+            logger.debug("Authentication skipped for client [{}] [IP: {}] to 
VNC server due to WebSocket protocol usage.", clientId, clientSourceIp);
             return;
         }
 
         if (!client.isVncOverNioSocket()) {
+            logger.debug("Authenticating client [{}] [IP: {}] to VNC server.", 
clientId, clientSourceIp);
             String ver = client.handshake();
             session.getRemote().sendBytes(ByteBuffer.wrap(ver.getBytes(), 0, 
ver.length()));
 
             byte[] b = client.authenticateTunnel(getClientHostPassword());
             session.getRemote().sendBytes(ByteBuffer.wrap(b, 0, 4));
         } else {
+            logger.debug("Authenticating client [{}] [IP: {}] to VNC server 
through NIO Socket.", clientId, clientSourceIp);
             authenticateVNCServerThroughNioSocket();
         }
+        logger.debug("Client [{}] [IP: {}] has been authenticated successfully 
to VNC server.", clientId, clientSourceIp);
     }
 
     /**
@@ -233,9 +238,6 @@ public class ConsoleProxyNoVncClient implements 
ConsoleProxyClient {
     protected void authenticateVNCServerThroughNioSocket() {
         handshakePhase();
         initialisationPhase();
-        if (logger.isDebugEnabled()) {
-            logger.debug("Authenticated successfully");
-        }
     }
 
     /**
@@ -289,8 +291,7 @@ public class ConsoleProxyNoVncClient implements 
ConsoleProxyClient {
                 logger.info(String.format("Connect to VNC over websocket URL: 
%s", websocketUrl));
                 ConsoleProxy.ensureRoute(NetUtils.extractHost(websocketUrl));
                 client.connectToWebSocket(websocketUrl, session);
-            } else if (tunnelUrl != null && !tunnelUrl.isEmpty() && 
tunnelSession != null
-                    && !tunnelSession.isEmpty()) {
+            } else if (StringUtils.isNotBlank(tunnelUrl) && 
StringUtils.isNotBlank(tunnelSession)) {
                 URI uri = new URI(tunnelUrl);
                 logger.info(String.format("Connect to VNC server via tunnel. 
url: %s, session: %s",
                         tunnelUrl, tunnelSession));
@@ -304,8 +305,10 @@ public class ConsoleProxyNoVncClient implements 
ConsoleProxyClient {
                 ConsoleProxy.ensureRoute(getClientHostAddress());
                 client.connectTo(getClientHostAddress(), getClientHostPort());
             }
+
+            logger.info("Connection to VNC server has been established 
successfully.");
         } catch (Throwable e) {
-            logger.error("Unexpected exception", e);
+            logger.error("Unexpected exception while connecting to VNC 
server.", e);
         }
     }
 
@@ -370,6 +373,7 @@ public class ConsoleProxyNoVncClient implements 
ConsoleProxyClient {
     }
 
     public void updateFrontEndActivityTime() {
+        logger.trace("Updating last front end activity time.");
         lastFrontEndActivityTime = System.currentTimeMillis();
     }
 
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyResourceHandler.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyResourceHandler.java
index 949e632786c..8764326b503 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyResourceHandler.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyResourceHandler.java
@@ -28,10 +28,11 @@ import com.sun.net.httpserver.Headers;
 import com.sun.net.httpserver.HttpExchange;
 import com.sun.net.httpserver.HttpHandler;
 
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 public class ConsoleProxyResourceHandler implements HttpHandler {
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     static Map<String, String> s_mimeTypes;
     static {
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyThumbnailHandler.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyThumbnailHandler.java
index 0103d9fa70e..e2ec7df5d69 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyThumbnailHandler.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyThumbnailHandler.java
@@ -32,10 +32,11 @@ import com.sun.net.httpserver.Headers;
 import com.sun.net.httpserver.HttpExchange;
 import com.sun.net.httpserver.HttpHandler;
 
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 public class ConsoleProxyThumbnailHandler implements HttpHandler {
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     public ConsoleProxyThumbnailHandler() {
     }
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/rdp/RdpBufferedImageCanvas.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/rdp/RdpBufferedImageCanvas.java
index 7fd19a15d2f..3a40b79437b 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/rdp/RdpBufferedImageCanvas.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/rdp/RdpBufferedImageCanvas.java
@@ -25,10 +25,12 @@ import java.util.List;
 
 import com.cloud.consoleproxy.ConsoleProxyRdpClient;
 import com.cloud.consoleproxy.util.ImageHelper;
-import com.cloud.consoleproxy.util.Logger;
 import com.cloud.consoleproxy.util.TileInfo;
 import com.cloud.consoleproxy.vnc.FrameBufferCanvas;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 import common.BufferedImageCanvas;
 
 public class RdpBufferedImageCanvas extends BufferedImageCanvas implements 
FrameBufferCanvas {
@@ -36,7 +38,7 @@ public class RdpBufferedImageCanvas extends 
BufferedImageCanvas implements Frame
      *
      */
     private static final long serialVersionUID = 1L;
-    protected Logger logger = Logger.getLogger(RdpBufferedImageCanvas.class);
+    protected Logger logger = 
LogManager.getLogger(RdpBufferedImageCanvas.class);
 
     private final ConsoleProxyRdpClient _rdpClient;
 
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/Logger.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/Logger.java
deleted file mode 100644
index 042d64977c2..00000000000
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/Logger.java
+++ /dev/null
@@ -1,223 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.consoleproxy.util;
-
-// logger facility for dynamic switch between console logger used in Applet 
and log4j based logger
-public class Logger {
-    private static LoggerFactory factory = null;
-
-    public static final int LEVEL_TRACE = 1;
-    public static final int LEVEL_DEBUG = 2;
-    public static final int LEVEL_INFO = 3;
-    public static final int LEVEL_WARN = 4;
-    public static final int LEVEL_ERROR = 5;
-
-    private Class<?> clazz;
-    private Logger logger;
-
-    private static int level = LEVEL_INFO;
-
-    public static Logger getLogger(Class<?> clazz) {
-        return new Logger(clazz);
-    }
-
-    public static void setFactory(LoggerFactory f) {
-        factory = f;
-    }
-
-    public static void setLevel(int l) {
-        level = l;
-    }
-
-    public Logger(Class<?> clazz) {
-        this.clazz = clazz;
-    }
-
-    protected Logger() {
-    }
-
-    public boolean isTraceEnabled() {
-        if (factory != null) {
-            if (logger == null)
-                logger = factory.getLogger(clazz);
-
-            return logger.isTraceEnabled();
-        }
-        return level <= LEVEL_TRACE;
-    }
-
-    public boolean isDebugEnabled() {
-        if (factory != null) {
-            if (logger == null)
-                logger = factory.getLogger(clazz);
-
-            return logger.isDebugEnabled();
-        }
-        return level <= LEVEL_DEBUG;
-    }
-
-    public boolean isInfoEnabled() {
-        if (factory != null) {
-            if (logger == null)
-                logger = factory.getLogger(clazz);
-
-            return logger.isInfoEnabled();
-        }
-        return level <= LEVEL_INFO;
-    }
-
-    public void trace(Object message) {
-
-        if (factory != null) {
-            if (logger == null)
-                logger = factory.getLogger(clazz);
-
-            logger.trace(message);
-        } else {
-            if (level <= LEVEL_TRACE)
-                System.out.println(message);
-        }
-    }
-
-    public void trace(Object message, Throwable exception) {
-        if (factory != null) {
-            if (logger == null)
-                logger = factory.getLogger(clazz);
-
-            logger.trace(message, exception);
-        } else {
-            if (level <= LEVEL_TRACE) {
-                System.out.println(message);
-                if (exception != null) {
-                    exception.printStackTrace(System.out);
-                }
-            }
-        }
-    }
-
-    public void info(Object message) {
-        if (factory != null) {
-            if (logger == null)
-                logger = factory.getLogger(clazz);
-
-            logger.info(message);
-        } else {
-            if (level <= LEVEL_INFO)
-                System.out.println(message);
-        }
-    }
-
-    public void info(Object message, Throwable exception) {
-        if (factory != null) {
-            if (logger == null)
-                logger = factory.getLogger(clazz);
-
-            logger.info(message, exception);
-        } else {
-            if (level <= LEVEL_INFO) {
-                System.out.println(message);
-                if (exception != null) {
-                    exception.printStackTrace(System.out);
-                }
-            }
-        }
-    }
-
-    public void debug(Object message) {
-        if (factory != null) {
-            if (logger == null)
-                logger = factory.getLogger(clazz);
-
-            logger.debug(message);
-        } else {
-            if (level <= LEVEL_DEBUG)
-                System.out.println(message);
-        }
-    }
-
-    public void debug(Object message, Throwable exception) {
-        if (factory != null) {
-            if (logger == null)
-                logger = factory.getLogger(clazz);
-
-            logger.debug(message, exception);
-        } else {
-            if (level <= LEVEL_DEBUG) {
-                System.out.println(message);
-                if (exception != null) {
-                    exception.printStackTrace(System.out);
-                }
-            }
-        }
-    }
-
-    public void warn(Object message) {
-        if (factory != null) {
-            if (logger == null)
-                logger = factory.getLogger(clazz);
-
-            logger.warn(message);
-        } else {
-            if (level <= LEVEL_WARN)
-                System.out.println(message);
-        }
-    }
-
-    public void warn(Object message, Throwable exception) {
-        if (factory != null) {
-            if (logger == null)
-                logger = factory.getLogger(clazz);
-
-            logger.warn(message, exception);
-        } else {
-            if (level <= LEVEL_WARN) {
-                System.out.println(message);
-                if (exception != null) {
-                    exception.printStackTrace(System.out);
-                }
-            }
-        }
-    }
-
-    public void error(Object message) {
-        if (factory != null) {
-            if (logger == null)
-                logger = factory.getLogger(clazz);
-
-            logger.error(message);
-        } else {
-            if (level <= LEVEL_ERROR)
-                System.out.println(message);
-        }
-    }
-
-    public void error(Object message, Throwable exception) {
-        if (factory != null) {
-            if (logger == null)
-                logger = factory.getLogger(clazz);
-
-            logger.error(message, exception);
-        } else {
-            if (level <= LEVEL_ERROR) {
-                System.out.println(message);
-                if (exception != null) {
-                    exception.printStackTrace(System.out);
-                }
-            }
-        }
-    }
-}
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/LoggerFactory.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/LoggerFactory.java
deleted file mode 100644
index 121411adf16..00000000000
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/LoggerFactory.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.consoleproxy.util;
-
-public interface LoggerFactory {
-    Logger getLogger(Class<?> clazz);
-}
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/RawHTTP.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/RawHTTP.java
index bc47ca03d12..99945c8b4ca 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/RawHTTP.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/RawHTTP.java
@@ -38,6 +38,9 @@ import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 //
 // This file is originally from XenConsole with modifications
 //
@@ -48,7 +51,7 @@ import java.util.regex.Pattern;
  * connections and import/export operations.
  */
 public final class RawHTTP {
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     private static final Pattern END_PATTERN = Pattern.compile("^\r\n$");
     private static final Pattern HEADER_PATTERN = 
Pattern.compile("^([A-Z_a-z0-9-]+):\\s*(.*)\r\n$");
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/BufferedImageCanvas.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/BufferedImageCanvas.java
index 9b86a8fbc66..0a168362ec1 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/BufferedImageCanvas.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/BufferedImageCanvas.java
@@ -27,16 +27,18 @@ import java.io.IOException;
 import java.util.List;
 
 import com.cloud.consoleproxy.util.ImageHelper;
-import com.cloud.consoleproxy.util.Logger;
 import com.cloud.consoleproxy.util.TileInfo;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 /**
  * A <code>BuffereImageCanvas</code> component represents frame buffer image on
  * the screen. It also notifies its subscribers when screen is repainted.
  */
 public class BufferedImageCanvas extends Canvas implements FrameBufferCanvas {
     private static final long serialVersionUID = 1L;
-    protected Logger logger = Logger.getLogger(BufferedImageCanvas.class);
+    protected Logger logger = LogManager.getLogger(BufferedImageCanvas.class);
 
     // Offline screen buffer
     private BufferedImage offlineImage;
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/NoVncClient.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/NoVncClient.java
index c5764a994c5..e4bb93711b9 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/NoVncClient.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/NoVncClient.java
@@ -31,7 +31,6 @@ import java.security.spec.KeySpec;
 import java.util.Arrays;
 import java.util.List;
 
-import com.cloud.consoleproxy.util.Logger;
 import com.cloud.consoleproxy.util.RawHTTP;
 import com.cloud.consoleproxy.vnc.network.NioSocket;
 import com.cloud.consoleproxy.vnc.network.NioSocketHandler;
@@ -42,7 +41,11 @@ import com.cloud.consoleproxy.vnc.security.VncTLSSecurity;
 import com.cloud.consoleproxy.websocket.WebSocketReverseProxy;
 import com.cloud.utils.Pair;
 import com.cloud.utils.exception.CloudRuntimeException;
+
 import org.apache.commons.lang3.BooleanUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 import org.eclipse.jetty.websocket.api.Session;
 
 import javax.crypto.BadPaddingException;
@@ -54,7 +57,7 @@ import javax.crypto.SecretKeyFactory;
 import javax.crypto.spec.DESKeySpec;
 
 public class NoVncClient {
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     private Socket socket;
     private DataInputStream is;
@@ -79,6 +82,7 @@ public class NoVncClient {
                 port = 80;
         }
 
+        logger.info("Connecting to VNC server {}:{} ...", host, port);
         RawHTTP tunnel = new RawHTTP("CONNECT", host, port, path, session, 
useSSL);
         socket = tunnel.connect();
         setTunnelSocketStreams();
@@ -86,7 +90,7 @@ public class NoVncClient {
 
     public void connectTo(String host, int port) {
         // Connect to server
-        logger.info(String.format("Connecting to VNC server %s:%s ...", host, 
port));
+        logger.info("Connecting to VNC server {}:{} ...", host, port);
         try {
             NioSocket nioSocket = new NioSocket(host, port);
             this.nioSocketConnection = new NioSocketHandlerImpl(nioSocket);
@@ -175,8 +179,9 @@ public class NoVncClient {
                 is.readFully(buf);
                 String reason = new String(buf, RfbConstants.CHARSET);
 
-                logger.error("Authentication to VNC server is failed. Reason: 
" + reason);
-                throw new RuntimeException("Authentication to VNC server is 
failed. Reason: " + reason);
+                String msg = String.format("Authentication to VNC server has 
failed. Reason: %s", reason);
+                logger.error(msg);
+                throw new RuntimeException(msg);
             }
 
             case RfbConstants.NO_AUTH: {
@@ -191,9 +196,9 @@ public class NoVncClient {
             }
 
             default:
-                logger.error("Unsupported VNC protocol authorization scheme, 
scheme code: " + authType + ".");
-                throw new RuntimeException(
-                        "Unsupported VNC protocol authorization scheme, scheme 
code: " + authType + ".");
+                String msg = String.format("Unsupported VNC protocol 
authorization scheme, scheme code: %d.", authType);
+                logger.error(msg);
+                throw new RuntimeException(msg);
         }
         // Since we've taken care of the auth, we tell the client that there's 
no auth
         // going on
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClient.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClient.java
index e5a9918d935..05bd01d390e 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClient.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClient.java
@@ -33,13 +33,15 @@ import javax.crypto.SecretKeyFactory;
 import javax.crypto.spec.DESKeySpec;
 
 import com.cloud.consoleproxy.ConsoleProxyClientListener;
-import com.cloud.consoleproxy.util.Logger;
 import com.cloud.consoleproxy.util.RawHTTP;
 import com.cloud.consoleproxy.vnc.packet.client.KeyboardEventPacket;
 import com.cloud.consoleproxy.vnc.packet.client.MouseEventPacket;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 public class VncClient {
-    protected static Logger LOGGER = Logger.getLogger(VncClient.class);
+    protected static Logger LOGGER = LogManager.getLogger(VncClient.class);
 
     private Socket socket;
     private DataInputStream is;
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClientPacketSender.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClientPacketSender.java
index 12daca619ce..3d055b4dbb4 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClientPacketSender.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClientPacketSender.java
@@ -27,7 +27,6 @@ import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.TimeUnit;
 
-import com.cloud.consoleproxy.util.Logger;
 import com.cloud.consoleproxy.vnc.packet.client.ClientPacket;
 import com.cloud.consoleproxy.vnc.packet.client.FramebufferUpdateRequestPacket;
 import com.cloud.consoleproxy.vnc.packet.client.KeyboardEventPacket;
@@ -35,8 +34,11 @@ import 
com.cloud.consoleproxy.vnc.packet.client.MouseEventPacket;
 import com.cloud.consoleproxy.vnc.packet.client.SetEncodingsPacket;
 import com.cloud.consoleproxy.vnc.packet.client.SetPixelFormatPacket;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 public class VncClientPacketSender implements Runnable, 
PaintNotificationListener, KeyListener, MouseListener, MouseMotionListener, 
FrameBufferUpdateListener {
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     // Queue for outgoing packets
     private final BlockingQueue<ClientPacket> queue = new 
ArrayBlockingQueue<ClientPacket>(30);
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncServerPacketReceiver.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncServerPacketReceiver.java
index effcb7b4599..bbd39754ac3 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncServerPacketReceiver.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncServerPacketReceiver.java
@@ -22,12 +22,14 @@ import java.io.DataInputStream;
 import java.io.IOException;
 
 import com.cloud.consoleproxy.ConsoleProxyClientListener;
-import com.cloud.consoleproxy.util.Logger;
 import com.cloud.consoleproxy.vnc.packet.server.FramebufferUpdatePacket;
 import com.cloud.consoleproxy.vnc.packet.server.ServerCutText;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 public class VncServerPacketReceiver implements Runnable {
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     private final VncScreenDescription screen;
     private BufferedImageCanvas canvas;
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/AbstractRect.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/AbstractRect.java
index 2059278905b..a56ee63d306 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/AbstractRect.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/AbstractRect.java
@@ -16,11 +16,12 @@
 // under the License.
 package com.cloud.consoleproxy.vnc.packet.server;
 
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 public abstract class AbstractRect implements Rect {
 
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     protected final int x;
     protected final int y;
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/ServerCutText.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/ServerCutText.java
index 79ed98cccd0..76e47ab0676 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/ServerCutText.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/ServerCutText.java
@@ -19,11 +19,13 @@ package com.cloud.consoleproxy.vnc.packet.server;
 import java.io.DataInputStream;
 import java.io.IOException;
 
-import com.cloud.consoleproxy.util.Logger;
 import com.cloud.consoleproxy.vnc.RfbConstants;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 public class ServerCutText {
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     private String content;
 
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncAuthSecurity.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncAuthSecurity.java
index 29c29f8ff58..42f109b5cf3 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncAuthSecurity.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncAuthSecurity.java
@@ -16,7 +16,6 @@
 // under the License.
 package com.cloud.consoleproxy.vnc.security;
 
-import com.cloud.consoleproxy.util.Logger;
 import com.cloud.consoleproxy.vnc.NoVncClient;
 import com.cloud.consoleproxy.vnc.network.NioSocketHandler;
 import com.cloud.utils.exception.CloudRuntimeException;
@@ -24,12 +23,15 @@ import com.cloud.utils.exception.CloudRuntimeException;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 public class VncAuthSecurity implements VncSecurity {
 
     private final String vmPass;
 
     private static final int VNC_AUTH_CHALLENGE_SIZE = 16;
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     public VncAuthSecurity(String vmPass) {
         this.vmPass = vmPass;
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncTLSSecurity.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncTLSSecurity.java
index 00497a37828..0bc1355c4fb 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncTLSSecurity.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncTLSSecurity.java
@@ -16,7 +16,6 @@
 // under the License.
 package com.cloud.consoleproxy.vnc.security;
 
-import com.cloud.consoleproxy.util.Logger;
 import com.cloud.consoleproxy.vnc.RfbConstants;
 import com.cloud.consoleproxy.vnc.network.NioSocketHandler;
 import com.cloud.consoleproxy.vnc.network.NioSocketSSLEngineManager;
@@ -29,9 +28,12 @@ import java.io.IOException;
 import java.security.GeneralSecurityException;
 import java.util.ArrayList;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 public class VncTLSSecurity implements VncSecurity {
 
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
 
     private SSLContext ctx;
     private SSLEngine engine;
diff --git 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/websocket/WebSocketReverseProxy.java
 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/websocket/WebSocketReverseProxy.java
index 582fb625f2c..fecbaae38e8 100644
--- 
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/websocket/WebSocketReverseProxy.java
+++ 
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/websocket/WebSocketReverseProxy.java
@@ -16,7 +16,6 @@
 // under the License.
 package com.cloud.consoleproxy.websocket;
 
-import com.cloud.consoleproxy.util.Logger;
 import org.eclipse.jetty.websocket.api.Session;
 import org.java_websocket.client.WebSocketClient;
 import org.java_websocket.drafts.Draft_6455;
@@ -36,6 +35,9 @@ import java.nio.ByteBuffer;
 import java.security.cert.X509Certificate;
 import java.util.Collections;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 /**
  * Acts as a websocket reverse proxy between the remoteSession and the 
connected endpoint
  * - Connects to a websocket endpoint and sends the received data to the 
remoteSession endpoint
@@ -51,7 +53,7 @@ public class WebSocketReverseProxy extends WebSocketClient {
     private static final DefaultExtension defaultExtension = new 
DefaultExtension();
     private static final Draft_6455 draft = new 
Draft_6455(Collections.singletonList(defaultExtension), 
Collections.singletonList(protocol));
 
-    protected Logger logger = Logger.getLogger(getClass());
+    protected Logger logger = LogManager.getLogger(getClass());
     private Session remoteSession;
 
     private void acceptAllCerts() {

Reply via email to