From e855fdaf255e97b89040f0bbd327fd74da4ae12f Mon Sep 17 00:00:00 2001 From: Fabian Hahn Date: Sun, 3 May 2026 11:02:34 +0200 Subject: [PATCH] AccessLogValve log-format pattern: - Added %% -> % Down-version patch of PR#1002 for = 9.0.x --- java/org/apache/catalina/valves/AbstractAccessLogValve.java | 2 ++ test/org/apache/catalina/valves/TestAccessLogValve.java | 1 + webapps/docs/changelog.xml | 5 ++++- webapps/docs/config/valve.xml | 3 ++- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/java/org/apache/catalina/valves/AbstractAccessLogValve.java b/java/org/apache/catalina/valves/AbstractAccessLogValve.java index 5519e0f57fd3..94432c636211 100644 --- a/java/org/apache/catalina/valves/AbstractAccessLogValve.java +++ b/java/org/apache/catalina/valves/AbstractAccessLogValve.java @@ -2040,6 +2040,8 @@ protected AccessLogElement createAccessLogElement(String name, char pattern) { */ protected AccessLogElement createAccessLogElement(char pattern) { switch (pattern) { + case '%': + return new StringElement("%"); case 'a': return new RemoteAddrElement(); case 'A': diff --git a/test/org/apache/catalina/valves/TestAccessLogValve.java b/test/org/apache/catalina/valves/TestAccessLogValve.java index a244bd58505f..f20c2507e037 100644 --- a/test/org/apache/catalina/valves/TestAccessLogValve.java +++ b/test/org/apache/catalina/valves/TestAccessLogValve.java @@ -90,6 +90,7 @@ public class TestAccessLogValve extends TomcatBaseTest { public static Collection parameters() { List parameterSets = new ArrayList<>(); + parameterSets.add(new Object[] {"pct-pct", TEXT_TYPE, "/", "%%", "%"}); parameterSets.add(new Object[] {"pct-a", TEXT_TYPE, "/", "%a", LOCAL_IP_PATTERN}); parameterSets.add(new Object[] {"pct-a", JSON_TYPE, "/", "%a", "\\{\"remoteAddr\":\"" + LOCAL_IP_PATTERN + "\"\\}"}); parameterSets.add(new Object[] {"pct-A", TEXT_TYPE, "/", "%A", IP_PATTERN}); diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 563bf4a0f5a4..de0de32aeda6 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -169,6 +169,10 @@ false, meaning user names are treated in a case insensitive manner. (markt) + + Add %% in AccessLogValve pattern. + Pull request 1004 provided by effhaa. + @@ -18287,4 +18291,3 @@ - diff --git a/webapps/docs/config/valve.xml b/webapps/docs/config/valve.xml index 49515912943e..7eb1edd988af 100644 --- a/webapps/docs/config/valve.xml +++ b/webapps/docs/config/valve.xml @@ -282,12 +282,13 @@ the current request and response. The following pattern codes are supported:

    +
  • %% - Literal '%' character
  • %a - Remote IP address. See also %{xxx}a below.
  • %A - Local IP address
  • %b - Bytes sent, excluding HTTP headers, or '-' if zero
  • %B - Bytes sent, excluding HTTP headers
  • -
  • %D - Time taken to process the request in millis. Note: In +
  • %D - Time taken to process the request, in millis. Note: In httpd %D is microseconds. Behaviour will be aligned to httpd in Tomcat 10 onwards.
  • %F - Time taken to commit the response, in milliseconds