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

adelbene pushed a commit to branch wicket-9.x
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/wicket-9.x by this push:
     new 5559722dd7 Merge pull request #524 from astange1/requestLogger
5559722dd7 is described below

commit 5559722dd7a89db4347cbfe5131969a42194bdf2
Author: Andrea Del Bene <[email protected]>
AuthorDate: Sat Sep 3 15:40:15 2022 +0200

    Merge pull request #524 from astange1/requestLogger
    
    The http RequestLogger is very expensive.
---
 .../protocol/http/AbstractRequestLogger.java       | 39 +++++-----------------
 .../apache/wicket/protocol/http/RequestLogger.java | 11 +++---
 2 files changed, 13 insertions(+), 37 deletions(-)

diff --git 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/AbstractRequestLogger.java
 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/AbstractRequestLogger.java
index 02e42fdbaa..d11f57b393 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/AbstractRequestLogger.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/AbstractRequestLogger.java
@@ -17,12 +17,14 @@
 package org.apache.wicket.protocol.http;
 
 import static java.lang.System.arraycopy;
+
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.Arrays;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
-import java.util.TimeZone;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.wicket.Application;
@@ -51,6 +53,9 @@ public abstract class AbstractRequestLogger implements 
IRequestLogger
 {
        private static final Logger LOG = 
LoggerFactory.getLogger(AbstractRequestLogger.class);
 
+       private static final ZoneId ZID = ZoneId.of("GMT");
+       private static final DateTimeFormatter FORMATTER = 
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss,SSS");
+
        /**
         * Key for storing request data in the request cycle's meta data.
         */
@@ -494,34 +499,8 @@ public abstract class AbstractRequestLogger implements 
IRequestLogger
        {
                Args.notNull(date, "date");
 
-               final Calendar cal = 
Calendar.getInstance(TimeZone.getTimeZone("GMT"));
-               final StringBuilder buf = new StringBuilder(32);
-
-               cal.setTimeInMillis(date.getTime());
-
-               int year = cal.get(Calendar.YEAR);
-               int month = cal.get(Calendar.MONTH) + 1;
-               int day = cal.get(Calendar.DAY_OF_MONTH);
-               int hours = cal.get(Calendar.HOUR_OF_DAY);
-               int minutes = cal.get(Calendar.MINUTE);
-               int seconds = cal.get(Calendar.SECOND);
-               int millis = cal.get(Calendar.MILLISECOND);
-
-               buf.append(year);
-               buf.append('-');
-               buf.append(String.format("%02d", month));
-               buf.append('-');
-               buf.append(String.format("%02d", day));
-               buf.append(' ');
-               buf.append(String.format("%02d", hours));
-               buf.append(':');
-               buf.append(String.format("%02d", minutes));
-               buf.append(':');
-               buf.append(String.format("%02d", seconds));
-               buf.append(',');
-               buf.append(String.format("%03d", millis));
-
-               return buf.toString();
+               LocalDateTime ldt = LocalDateTime.ofInstant(date.toInstant(), 
ZID);
+               return ldt.format(FORMATTER);
        }
 
        private int getRequestsWindowSize()
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLogger.java 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLogger.java
index 864c162a64..06e7a8032e 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLogger.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLogger.java
@@ -19,7 +19,6 @@ package org.apache.wicket.protocol.http;
 import org.apache.wicket.request.ILoggableRequestHandler;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.util.lang.Classes;
-import org.apache.wicket.util.string.AppendingStringBuffer;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -59,7 +58,7 @@ public class RequestLogger extends AbstractRequestLogger
 
        private String createRequestData(RequestData rd, SessionData sd)
        {
-               AppendingStringBuffer sb = new AppendingStringBuffer(150);
+               StringBuilder sb = new StringBuilder(768);
 
                sb.append("startTime=\"");
                sb.append(formatDate(rd.getStartDate()));
@@ -69,9 +68,9 @@ public class RequestLogger extends AbstractRequestLogger
                sb.append(rd.getRequestedUrl());
                sb.append('"');
                sb.append(",event={");
-               sb.append(getRequestHandlerString(rd.getEventTarget()));
+               appendRequestHandlerString(sb, rd.getEventTarget());
                sb.append("},response={");
-               sb.append(getRequestHandlerString(rd.getResponseTarget()));
+               appendRequestHandlerString(sb, rd.getResponseTarget());
                sb.append("},sessionid=\"");
                sb.append(rd.getSessionId());
                sb.append('"');
@@ -110,9 +109,8 @@ public class RequestLogger extends AbstractRequestLogger
                return sb.toString();
        }
 
-       private String getRequestHandlerString(IRequestHandler handler)
+       private void appendRequestHandlerString(StringBuilder sb, 
IRequestHandler handler)
        {
-               AppendingStringBuffer sb = new AppendingStringBuffer(128);
                if (handler != null)
                {
                        Class<? extends IRequestHandler> handlerClass = 
handler.getClass();
@@ -129,6 +127,5 @@ public class RequestLogger extends AbstractRequestLogger
                {
                        sb.append("none");
                }
-               return sb.toString();
        }
 }

Reply via email to