diff --git a/src/main/java/org/codelibs/fess/api/BaseJsonApiManager.java b/src/main/java/org/codelibs/fess/api/BaseJsonApiManager.java
index 54759c5893b1c43de98e157b1d94b9516ffafa80..4354845b8efead66cfcb276deb29493bc8154918 100644
--- a/src/main/java/org/codelibs/fess/api/BaseJsonApiManager.java
+++ b/src/main/java/org/codelibs/fess/api/BaseJsonApiManager.java
@@ -24,6 +24,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.UUID;
+import java.util.function.Supplier;
 
 import javax.servlet.http.HttpServletResponse;
 
@@ -56,25 +57,28 @@ public abstract class BaseJsonApiManager extends BaseApiManager {
             response.setHeader("WWW-Authenticate", "Bearer error=\"" + e.getType() + "\"");
         }
 
-        final StringBuilder sb = new StringBuilder();
-        if (StringUtil.isBlank(t.getMessage())) {
-            sb.append(t.getClass().getName());
-        } else {
-            sb.append(t.getMessage());
-        }
-        try (final StringWriter sw = new StringWriter(); final PrintWriter pw = new PrintWriter(sw)) {
-            t.printStackTrace(pw);
-            pw.flush();
-            sb.append(" [ ").append(sw.toString()).append(" ]");
-        } catch (final IOException ignore) {}
+        final Supplier<String> stacktraceString = () -> {
+            final StringBuilder sb = new StringBuilder();
+            if (StringUtil.isBlank(t.getMessage())) {
+                sb.append(t.getClass().getName());
+            } else {
+                sb.append(t.getMessage());
+            }
+            try (final StringWriter sw = new StringWriter(); final PrintWriter pw = new PrintWriter(sw)) {
+                t.printStackTrace(pw);
+                pw.flush();
+                sb.append(" [ ").append(sw.toString()).append(" ]");
+            } catch (final IOException ignore) {}
+            return sb.toString();
+        };
         final String message;
         if (Constants.TRUE.equalsIgnoreCase(ComponentUtil.getFessConfig().getApiJsonResponseExceptionIncluded())) {
-            message = sb.toString();
+            message = stacktraceString.get();
         } else {
             final String errorCode = UUID.randomUUID().toString();
             message = "error_code:" + errorCode;
             if (logger.isDebugEnabled()) {
-                logger.debug("[{}] {}", errorCode, sb.toString().replace("\n", "\\n"));
+                logger.debug("[{}] {}", errorCode, stacktraceString.get().replace("\n", "\\n"));
             } else {
                 logger.warn("[{}] {}", errorCode, t.getMessage());
             }
diff --git a/src/main/java/org/codelibs/fess/api/gsa/GsaApiManager.java b/src/main/java/org/codelibs/fess/api/gsa/GsaApiManager.java
index 16785eaa868ed936b9563f4873e7aad248ddd524..2d9e6ac33607fdb3599fb1912f1bd9cb68c6f02c 100644
--- a/src/main/java/org/codelibs/fess/api/gsa/GsaApiManager.java
+++ b/src/main/java/org/codelibs/fess/api/gsa/GsaApiManager.java
@@ -16,6 +16,8 @@
 package org.codelibs.fess.api.gsa;
 
 import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.net.URLEncoder;
@@ -30,6 +32,8 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.UUID;
+import java.util.function.Supplier;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -314,9 +318,30 @@ public class GsaApiManager extends BaseApiManager {
             }
         } catch (final Exception e) {
             status = 1;
-            errMsg = e.getMessage();
-            if (errMsg == null) {
-                errMsg = e.getClass().getName();
+            final Supplier<String> stacktraceString = () -> {
+                final StringBuilder sb = new StringBuilder();
+                if (StringUtil.isBlank(e.getMessage())) {
+                    sb.append(e.getClass().getName());
+                } else {
+                    sb.append(e.getMessage());
+                }
+                try (final StringWriter sw = new StringWriter(); final PrintWriter pw = new PrintWriter(sw)) {
+                    e.printStackTrace(pw);
+                    pw.flush();
+                    sb.append(" [ ").append(sw.toString()).append(" ]");
+                } catch (final IOException ignore) {}
+                return sb.toString();
+            };
+            if (Constants.TRUE.equalsIgnoreCase(ComponentUtil.getFessConfig().getApiGsaResponseExceptionIncluded())) {
+                errMsg = stacktraceString.get();
+            } else {
+                final String errorCode = UUID.randomUUID().toString();
+                errMsg = "error_code:" + errorCode;
+                if (logger.isDebugEnabled()) {
+                    logger.debug("[{}] {}", errorCode, stacktraceString.get().replace("\n", "\\n"));
+                } else {
+                    logger.warn("[{}] {}", errorCode, e.getMessage());
+                }
             }
             if (logger.isDebugEnabled()) {
                 logger.debug("Failed to process a search request.", e);
diff --git a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java
index efac6b648a2d2282f51bb8dd2473da36c4b99817..68a050cec81c182f4c166bb9d038793c2fa216ef 100644
--- a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java
+++ b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java
@@ -256,6 +256,9 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
     /** The key of the configuration. e.g.  */
     String API_GSA_RESPONSE_HEADERS = "api.gsa.response.headers";
 
+    /** The key of the configuration. e.g. false */
+    String API_GSA_RESPONSE_EXCEPTION_INCLUDED = "api.gsa.response.exception.included";
+
     /** The key of the configuration. e.g.  */
     String API_DASHBOARD_RESPONSE_HEADERS = "api.dashboard.response.headers";
 
@@ -2333,6 +2336,20 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
      */
     Integer getApiGsaResponseHeadersAsInteger();
 
+    /**
+     * Get the value for the key 'api.gsa.response.exception.included'. <br>
+     * The value is, e.g. false <br>
+     * @return The value of found property. (NotNull: if not found, exception but basically no way)
+     */
+    String getApiGsaResponseExceptionIncluded();
+
+    /**
+     * Is the property for the key 'api.gsa.response.exception.included' true? <br>
+     * The value is, e.g. false <br>
+     * @return The determination, true or false. (if not found, exception but basically no way)
+     */
+    boolean isApiGsaResponseExceptionIncluded();
+
     /**
      * Get the value for the key 'api.dashboard.response.headers'. <br>
      * The value is, e.g.  <br>
@@ -7688,6 +7705,14 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
             return getAsInteger(FessConfig.API_GSA_RESPONSE_HEADERS);
         }
 
+        public String getApiGsaResponseExceptionIncluded() {
+            return get(FessConfig.API_GSA_RESPONSE_EXCEPTION_INCLUDED);
+        }
+
+        public boolean isApiGsaResponseExceptionIncluded() {
+            return is(FessConfig.API_GSA_RESPONSE_EXCEPTION_INCLUDED);
+        }
+
         public String getApiDashboardResponseHeaders() {
             return get(FessConfig.API_DASHBOARD_RESPONSE_HEADERS);
         }
@@ -10467,6 +10492,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
             defaultMap.put(FessConfig.API_JSON_RESPONSE_HEADERS, "");
             defaultMap.put(FessConfig.API_JSON_RESPONSE_EXCEPTION_INCLUDED, "false");
             defaultMap.put(FessConfig.API_GSA_RESPONSE_HEADERS, "");
+            defaultMap.put(FessConfig.API_GSA_RESPONSE_EXCEPTION_INCLUDED, "false");
             defaultMap.put(FessConfig.API_DASHBOARD_RESPONSE_HEADERS, "");
             defaultMap.put(FessConfig.API_CORS_ALLOW_ORIGIN, "*");
             defaultMap.put(FessConfig.API_CORS_ALLOW_METHODS, "GET, POST, OPTIONS, DELETE, PUT");
diff --git a/src/main/resources/fess_config.properties b/src/main/resources/fess_config.properties
index e22f73a62858b7acdaa6337e5f6715959c4a7fd7..73b5c17f946a59afff92ccfca165c8cc7d77ff57 100644
--- a/src/main/resources/fess_config.properties
+++ b/src/main/resources/fess_config.properties
@@ -172,6 +172,7 @@ api.search.scroll=false
 api.json.response.headers=
 api.json.response.exception.included=false
 api.gsa.response.headers=
+api.gsa.response.exception.included=false
 api.dashboard.response.headers=
 api.cors.allow.origin=*
 api.cors.allow.methods=GET, POST, OPTIONS, DELETE, PUT