From e1396e033a759ece7ccbfa64d12de2307927b179 Mon Sep 17 00:00:00 2001 From: JamesHillyard <73830120+JamesHillyard@users.noreply.github.com> Date: Wed, 24 Nov 2021 17:07:07 +0000 Subject: [PATCH] Merge pull request #5493 from JamesHillyard/FISH-5703 FISH-5703 Option to Improve Logging Speed --- .../common/handlers/LoggingHandlers.java | 1 + .../resources/configuration/loggerGeneral.jsf | 4 ++++ .../common/admingui/Strings.properties | 4 +++- .../config/serverbeans/LogService.java | 18 +++++++++++++++++- .../servermgmt/logging/UpgradeLogging.java | 3 ++- .../main/resources/config/logging.properties | 1 + .../admin/amx/impl/mbean/LoggingImpl.java | 3 ++- .../sun/common/util/logging/GFLogRecord.java | 15 +++++++++++++-- .../common/util/logging/LoggingConfigImpl.java | 1 + .../util/logging/LoggingPropertyNames.java | 4 +++- .../common/util/logging/LoggingXMLNames.java | 3 +++ .../server/logging/LogManagerService.java | 9 +++++++++ .../logging/commands/SetLogAttributes.java | 3 ++- 13 files changed, 61 insertions(+), 8 deletions(-) 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",