diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
index a33102c..8f68861 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
@@ -278,7 +278,14 @@
             if (forceReadOnly) {
                 param.setReadOnly(true);
             }
-            if (LOGGER.isInfoEnabled()) {
+            String statement = param.getStatement();
+            statement = statement == null || (!statement.isEmpty() && statement.charAt(statement.length() - 1) == ';')
+                    ? statement : (statement + ";");
+            if (statement != null && (statement.startsWith("UPSERT") || statement.startsWith("INSERT"))
+                    && LOGGER.isDebugEnabled()) {
+                LOGGER.debug("handleRequest: uuid={}, clientContextID={}, {}", requestRef.getUuid(),
+                        param.getClientContextID(), LogRedactionUtil.statement(param.toString()));
+            } else if (LOGGER.isInfoEnabled()) {
                 LOGGER.info("handleRequest: uuid={}, clientContextID={}, {}", requestRef.getUuid(),
                         param.getClientContextID(), LogRedactionUtil.statement(param.toString()));
             }
@@ -287,9 +294,6 @@
             final ResultProperties resultProperties = new ResultProperties(delivery, param.getMaxResultReads());
             buildResponseHeaders(requestRef, sessionOutput, param, responsePrinter, delivery);
             responsePrinter.printHeaders();
-            String statement = param.getStatement();
-            statement = statement == null || (!statement.isEmpty() && statement.charAt(statement.length() - 1) == ';')
-                    ? statement : (statement + ";");
             validateStatement(statement);
             if (param.isParseOnly()) {
                 ResultUtil.ParseOnlyResult parseOnlyResult = parseStatement(statement);
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
index e314177..ed81dd8 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
@@ -243,8 +243,14 @@
 
     @Override
     public String toString() {
-        return String.format("%s(id=%s, from=%s, uuid=%s, clientContextID=%s): %s", getClass().getSimpleName(),
-                requestMessageId, requestNodeId, requestReference.getUuid(), clientContextID,
-                LogRedactionUtil.statement(statementsText));
+        if (statementsText != null && (statementsText.startsWith("UPSERT") || statementsText.startsWith("INSERT"))) {
+            return String.format("%s(id=%s, from=%s, uuid=%s, clientContextID=%s): %s", getClass().getSimpleName(),
+                    requestMessageId, requestNodeId, requestReference.getUuid(), clientContextID,
+                    "UPSERT/INSERT statement");
+        } else {
+            return String.format("%s(id=%s, from=%s, uuid=%s, clientContextID=%s): %s", getClass().getSimpleName(),
+                    requestMessageId, requestNodeId, requestReference.getUuid(), clientContextID,
+                    LogRedactionUtil.statement(statementsText));
+        }
     }
 }
