diff --git a/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/handlers/LoggingHandlers.java b/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/handlers/LoggingHandlers.java
index 55c0c388fc9..a1277afd995 100644
--- a/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/handlers/LoggingHandlers.java
+++ b/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/handlers/LoggingHandlers.java
@@ -209,6 +209,7 @@ public static void saveLoggingAttributes(HandlerContext handlerCtx) {
key.equals("com.sun.enterprise.server.logging.GFFileHandler.rotationOnDateChange") ||
key.equals("com.sun.enterprise.server.logging.GFFileHandler.compressOnRotation") ||
key.equals("com.sun.enterprise.server.logging.GFFileHandler.logStandardStreams") ||
+ key.equals("com.sun.enterprise.server.logging.GFFileHandler.fastLogging") ||
key.equals("fish.payara.enterprise.server.logging.PayaraNotificationFileHandler.logtoFile") ||
key.equals("fish.payara.enterprise.server.logging.PayaraNotificationFileHandler.rotationOnDateChange") ||
key.equals("fish.payara.enterprise.server.logging.PayaraNotificationFileHandler.compressOnRotation"))
diff --git a/appserver/admingui/common/src/main/resources/configuration/loggerGeneral.jsf b/appserver/admingui/common/src/main/resources/configuration/loggerGeneral.jsf
index ce18ba0c2d4..6a8435d7f14 100644
--- a/appserver/admingui/common/src/main/resources/configuration/loggerGeneral.jsf
+++ b/appserver/admingui/common/src/main/resources/configuration/loggerGeneral.jsf
@@ -129,6 +129,10 @@
+
+
+
+
getLoggingAttributes() {
attributes.put(gfHandler + ".logtoConsole", props.get(gfHandler + ".logtoConsole"));
attributes.put(gfHandler + ".flushFrequency", props.get(gfHandler + ".flushFrequency"));
attributes.put(gfHandler + ".logStandardStreams", props.get(gfHandler + ".logStandardStreams"));
+ attributes.put(gfHandler + ".fastLogging", props.get(gfHandler + ".fastLogging"));
attributes.put("handlers", props.get("handlers"));
attributes.put(sysHandler + ".useSystemLogging", props.get(sysHandler + ".useSystemLogging"));
return attributes;
diff --git a/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/GFLogRecord.java b/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/GFLogRecord.java
index 252e1227a6b..0e985015f23 100644
--- a/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/GFLogRecord.java
+++ b/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/GFLogRecord.java
@@ -38,12 +38,13 @@
* holder.
*/
-// Portions Copyright [2016-2021] [Payara Foundation]
+// Portions Copyright [2016-2021] [Payara Foundation and/or its affiliates]
package com.sun.common.util.logging;
-import java.util.logging.LogRecord;
import java.util.logging.Level;
+import java.util.logging.LogManager;
+import java.util.logging.LogRecord;
/**
* This class provides additional attributes not supported by JUL LogRecord
@@ -51,6 +52,9 @@
*/
public class GFLogRecord extends LogRecord {
+ private static final String FAST_LOGGER_PROPERTY = "com.sun.enterprise.server.logging.GFFileHandler.fastLogging";
+ public static Boolean fastLogging = Boolean.parseBoolean(LogManager.getLogManager().getProperty(FAST_LOGGER_PROPERTY));
+
/**
* SVUID for serialization compatibility
*/
@@ -116,6 +120,10 @@ public static GFLogRecord wrap(LogRecord record, boolean setThreadName) {
* Append the original parameters at the end, as they are used for by some logging formatters,
* such as JSON logging formatter for context
*
+ * FISH-5703
+ * Add the option to skip the toString() method as it can have force a JPA entity to result
+ * in database access, causing a performance impact.
+ *
* @param params
* @return parameter array
*/
@@ -123,6 +131,9 @@ private static Object[] transformParameters(Object[] params) {
if (params == null) {
return null;
}
+ if (fastLogging) {
+ return params;
+ }
Object[] result = new Object[params.length * 2];
System.arraycopy(params, 0, result, params.length, params.length);
for (int stringParamsIndex = 0, originalParamsIndex = params.length;
diff --git a/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingConfigImpl.java b/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingConfigImpl.java
index 3d0788eeb98..85f69434084 100644
--- a/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingConfigImpl.java
+++ b/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingConfigImpl.java
@@ -96,6 +96,7 @@ public class LoggingConfigImpl implements LoggingConfig {
DEFAULT_LOG_PROPERTIES.put(PY_FILE_HANDLER + ".compressOnRotation", "false");
DEFAULT_LOG_PROPERTIES.put(GF_FILE_HANDLER + ".logStandardStreams", "true");
DEFAULT_LOG_PROPERTIES.put(PY_FILE_HANDLER + ".formatter", "com.sun.enterprise.server.logging.ODLLogFormatter");
+ DEFAULT_LOG_PROPERTIES.put(GF_FILE_HANDLER + ".fastLogging", "false");
}
@Inject
diff --git a/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingPropertyNames.java b/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingPropertyNames.java
index 1dbc5884494..417c402c4e3 100644
--- a/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingPropertyNames.java
+++ b/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingPropertyNames.java
@@ -38,7 +38,7 @@
* holder.
*/
-// Portions Copyright [2018-2019] [Payara Foundation and/or its affiliates]
+// Portions Copyright [2018-2021] [Payara Foundation and/or its affiliates]
package com.sun.common.util.logging;
@@ -80,6 +80,8 @@ public class LoggingPropertyNames {
public static final String logToConsole = GFFileHandler + "logtoConsole";
+ public static final String fastLogging = GFFileHandler + "fastLogging";
+
public static final String alarms = GFFileHandler + "alarms";
public static final String logStandardStreams = GFFileHandler + "logStandardStreams";
diff --git a/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingXMLNames.java b/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingXMLNames.java
index 0d6521d89f1..f358fa983b0 100644
--- a/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingXMLNames.java
+++ b/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingXMLNames.java
@@ -72,6 +72,8 @@ public class LoggingXMLNames {
public static final String logFilter = "log-filter";
public static final String logToFile = "log-to-file";
+
+ public static final String fastLogging = "fast-logging";
public static final String payaraNotificationLogToFile = "payara-notification-log-to-file";
@@ -137,6 +139,7 @@ public class LoggingXMLNames {
put(logToFile, LoggingPropertyNames.logToFile);
put(payaraNotificationLogToFile, LoggingPropertyNames.payaraNotificationLogToFile);
put(logToConsole, LoggingPropertyNames.logToConsole);
+ put(fastLogging, LoggingPropertyNames.fastLogging);
put(alarms, LoggingPropertyNames.alarms);
put(root, LogDomains.DOMAIN_ROOT + LEVEL);
put(server, LogDomains.SERVER_LOGGER + LEVEL);
diff --git a/nucleus/core/logging/src/main/java/com/sun/enterprise/server/logging/LogManagerService.java b/nucleus/core/logging/src/main/java/com/sun/enterprise/server/logging/LogManagerService.java
index d0743ea6e2a..8b256e0d767 100644
--- a/nucleus/core/logging/src/main/java/com/sun/enterprise/server/logging/LogManagerService.java
+++ b/nucleus/core/logging/src/main/java/com/sun/enterprise/server/logging/LogManagerService.java
@@ -41,6 +41,7 @@
package com.sun.enterprise.server.logging;
+import com.sun.common.util.logging.GFLogRecord;
import com.sun.common.util.logging.LoggingConfig;
import com.sun.common.util.logging.LoggingConfigFactory;
import com.sun.common.util.logging.LoggingXMLNames;
@@ -160,6 +161,7 @@ public class LogManagerService implements PostConstruct, PreDestroy, org.glassfi
String logFormatDateFormatDetail = "";
String compressOnRotationDetail = "";
String logStandardStreamsDetail = "";
+ String fastLoggingDetail = "";
//Payara Notification Logging
String payaraNotificationLogFileDetail = "";
@@ -195,6 +197,7 @@ public class LogManagerService implements PostConstruct, PreDestroy, org.glassfi
private static final String LOGFORMAT_DATEFORMAT_PROPERTY = "com.sun.enterprise.server.logging.GFFileHandler.logFormatDateFormat";
private static final String COMPRESS_ON_ROTATION_PROPERTY = "com.sun.enterprise.server.logging.GFFileHandler.compressOnRotation";
private static final String LOG_STANDARD_STREAMS_PROPERTY = "com.sun.enterprise.server.logging.GFFileHandler.logStandardStreams";
+ private static final String FAST_LOGGER_PROPERTY = "com.sun.enterprise.server.logging.GFFileHandler.fastLogging";
//Payara Notification Logging
private static final String PAYARA_NOTIFICATION_LOG_FILE_PROPERTY = "fish.payara.enterprise.server.logging.PayaraNotificationFileHandler.file";
@@ -725,6 +728,11 @@ public void changed(File changedFile) {
}
}
}
+ } else if (a.equals(FAST_LOGGER_PROPERTY)) {
+ if (!val.equals(fastLoggingDetail)) {
+ fastLoggingDetail = val;
+ GFLogRecord.fastLogging = Boolean.parseBoolean(fastLoggingDetail);
+ }
} else if (a.equals(COMPRESS_ON_ROTATION_PROPERTY)) {
if (!val.equals(compressOnRotationDetail)) {
compressOnRotationDetail = val;
@@ -983,6 +991,7 @@ private void setDefaultLoggingProperties(Map props) {
logFormatDateFormatDetail = props.get(LOGFORMAT_DATEFORMAT_PROPERTY);
compressOnRotationDetail = props.get(COMPRESS_ON_ROTATION_PROPERTY);
logStandardStreamsDetail = props.get(LOG_STANDARD_STREAMS_PROPERTY);
+ fastLoggingDetail = props.get(FAST_LOGGER_PROPERTY);
//Payara Notification Logging
payaraNotificationLogFileDetail = props.get(PAYARA_NOTIFICATION_LOG_FILE_PROPERTY);
diff --git a/nucleus/core/logging/src/main/java/com/sun/enterprise/server/logging/commands/SetLogAttributes.java b/nucleus/core/logging/src/main/java/com/sun/enterprise/server/logging/commands/SetLogAttributes.java
index 9c8fd44d9f0..0bd5c4cd268 100644
--- a/nucleus/core/logging/src/main/java/com/sun/enterprise/server/logging/commands/SetLogAttributes.java
+++ b/nucleus/core/logging/src/main/java/com/sun/enterprise/server/logging/commands/SetLogAttributes.java
@@ -37,7 +37,7 @@
* only if the new code is made subject to such option by the copyright
* holder.
*/
-// Portions Copyright [2016-2019] [Payara Foundation and/or its affiliates]
+// Portions Copyright [2016-2021] [Payara Foundation and/or its affiliates]
package com.sun.enterprise.server.logging.commands;
import com.sun.common.util.logging.LoggingConfigFactory;
@@ -140,6 +140,7 @@ public class SetLogAttributes implements AdminCommand {
"com.sun.enterprise.server.logging.GFFileHandler.multiLineMode",
"com.sun.enterprise.server.logging.GFFileHandler.compressOnRotation",
"com.sun.enterprise.server.logging.GFFileHandler.logStandardStreams",
+ "com.sun.enterprise.server.logging.GFFileHandler.fastLogging",
"com.sun.enterprise.server.logging.UniformLogFormatter.ansiColor",
"com.sun.enterprise.server.logging.UniformLogFormatter.infoColor",
"com.sun.enterprise.server.logging.UniformLogFormatter.warnColor",