You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by rj...@apache.org on 2015/03/29 13:19:29 UTC

svn commit: r1669896 - in /tomcat/tc8.0.x/trunk: ./ java/org/apache/catalina/valves/AbstractAccessLogValve.java java/org/apache/catalina/valves/LocalStrings.properties webapps/docs/changelog.xml webapps/docs/config/valve.xml

Author: rjung
Date: Sun Mar 29 11:19:29 2015
New Revision: 1669896

URL: http://svn.apache.org/r1669896
Log:
Add new %{xxx}p with xxx==local or xxx===remote
to allow logging remote and/or local port in the
access log.

Same xxx values as in Apache httpd, except httpd
also allows "canonical".

Logging remote ports can be very useful when trying
to filter network dumps for problems, that one can
detect in the access log but only analyze on the
network layer.

Backport of r1669882 from trunk.

Modified:
    tomcat/tc8.0.x/trunk/   (props changed)
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/valves/AbstractAccessLogValve.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/valves/LocalStrings.properties
    tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml
    tomcat/tc8.0.x/trunk/webapps/docs/config/valve.xml

Propchange: tomcat/tc8.0.x/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Mar 29 11:19:29 2015
@@ -1 +1 @@
-/tomcat/trunk:1636524,1637156,1637176,1637188,1637331,1637684,1637695,1638720-1638725,1639653,1640010,1640083-1640084,1640088,1640275,1640322,1640347,1640361,1640365,1640403,1640410,1640652,1640655-1640658,1640688,1640700-1640883,1640903,1640976,1640978,1641000,1641026,1641038-1641039,1641051-1641052,1641058,1641064,1641300,1641369,1641374,1641380,1641486,1641634,1641656-1641692,1641704,1641707-1641718,1641720-1641722,1641735,1641981,1642233,1642280,1642554,1642564,1642595,1642606,1642668,1642679,1642697,1642699,1642766,1643002,1643045,1643054-1643055,1643066,1643121,1643128,1643206,1643209-1643210,1643216,1643249,1643270,1643283,1643309-1643310,1643323,1643365-1643366,1643370-1643371,1643465,1643474,1643536,1643570,1643634,1643649,1643651,1643654,1643675,1643731,1643733-1643734,1643761,1643766,1643814,1643937,1643963,1644017,1644169,1644201-1644203,1644321,1644323,1644516,1644523,1644529,1644535,1644730,1644768,1644784-1644785,1644790,1644793,1644815,1644884,1644886,1644890,1644892
 ,1644910,1644924,1644929-1644930,1644935,1644989,1645011,1645247,1645355,1645357-1645358,1645455,1645465,1645469,1645471,1645473,1645475,1645486-1645488,1645626,1645641,1645685,1645743,1645763,1645951-1645953,1645955,1645993,1646098-1646106,1646178,1646220,1646302,1646304,1646420,1646470-1646471,1646476,1646559,1646717-1646723,1646773,1647026,1647042,1647530,1647655,1648304,1648815,1648907,1650081,1650365,1651116,1651120,1651280,1651470,1652938,1652970,1653041,1653471,1653550,1653574,1653797,1653815-1653816,1653819,1653840,1653857,1653888,1653972,1654013,1654030,1654050,1654123,1654148,1654159,1654513,1654515,1654517,1654522,1654524,1654725,1654735,1654766,1654785,1654851-1654852,1654978,1655122-1655124,1655126-1655127,1655129-1655130,1655132-1655133,1655312,1655438,1655441,1655454,1655558,1656087,1656299,1656319,1656331,1656345,1656350,1656590,1656648-1656650,1656657,1657041,1657054,1657374,1657492,1657510,1657565,1657580,1657584,1657586,1657589,1657592,1657607,1657609,1657682,1657
 907,1658207,1658734,1658781,1658790,1658799,1658802,1658804,1658833,1658840,1658966,1659043,1659053,1659059,1659188-1659189,1659216,1659263,1659293,1659304,1659306-1659307,1659382,1659384,1659428,1659471,1659486,1659505,1659516,1659521,1659524,1659559,1659562,1659803,1659806,1659814,1659833,1659862,1659905,1659919,1659948,1659967,1659983-1659984,1660060,1660074,1660077,1660133,1660168,1660331-1660332,1660353,1660358,1660924,1661386,1661867,1661972,1661990,1662200,1662308-1662309,1662548,1662614,1662736,1662985,1662988-1662989,1663264,1663277,1663298,1663324,1663534,1663562,1663676,1663715,1663754,1663768,1663772,1663781,1663893,1663995,1664143,1664163,1664174,1664301,1664317,1664347,1664657,1664659,1664710,1664863-1664864,1664866,1665085,1665292,1665559,1665653,1665661,1665672,1665694,1665697,1665736,1665779,1665976-1665977,1665980-1665981,1665985-1665986,1665989,1665998,1666004,1666008,1666013,1666017,1666024,1666116,1666386-1666387,1666494,1666496,1666552,1666569,1666579,1666637,1
 666649,1666757,1666966,1666972,1666985,1666995,1666997,1667292,1667402,1667406,1667546,1667615,1667630,1667636,1667688,1667764,1667871,1668026,1668135,1668193,1668593,1668596,1668630,1668639,1668843,1669353,1669370,1669451,1669800,1669838,1669876
+/tomcat/trunk:1636524,1637156,1637176,1637188,1637331,1637684,1637695,1638720-1638725,1639653,1640010,1640083-1640084,1640088,1640275,1640322,1640347,1640361,1640365,1640403,1640410,1640652,1640655-1640658,1640688,1640700-1640883,1640903,1640976,1640978,1641000,1641026,1641038-1641039,1641051-1641052,1641058,1641064,1641300,1641369,1641374,1641380,1641486,1641634,1641656-1641692,1641704,1641707-1641718,1641720-1641722,1641735,1641981,1642233,1642280,1642554,1642564,1642595,1642606,1642668,1642679,1642697,1642699,1642766,1643002,1643045,1643054-1643055,1643066,1643121,1643128,1643206,1643209-1643210,1643216,1643249,1643270,1643283,1643309-1643310,1643323,1643365-1643366,1643370-1643371,1643465,1643474,1643536,1643570,1643634,1643649,1643651,1643654,1643675,1643731,1643733-1643734,1643761,1643766,1643814,1643937,1643963,1644017,1644169,1644201-1644203,1644321,1644323,1644516,1644523,1644529,1644535,1644730,1644768,1644784-1644785,1644790,1644793,1644815,1644884,1644886,1644890,1644892
 ,1644910,1644924,1644929-1644930,1644935,1644989,1645011,1645247,1645355,1645357-1645358,1645455,1645465,1645469,1645471,1645473,1645475,1645486-1645488,1645626,1645641,1645685,1645743,1645763,1645951-1645953,1645955,1645993,1646098-1646106,1646178,1646220,1646302,1646304,1646420,1646470-1646471,1646476,1646559,1646717-1646723,1646773,1647026,1647042,1647530,1647655,1648304,1648815,1648907,1650081,1650365,1651116,1651120,1651280,1651470,1652938,1652970,1653041,1653471,1653550,1653574,1653797,1653815-1653816,1653819,1653840,1653857,1653888,1653972,1654013,1654030,1654050,1654123,1654148,1654159,1654513,1654515,1654517,1654522,1654524,1654725,1654735,1654766,1654785,1654851-1654852,1654978,1655122-1655124,1655126-1655127,1655129-1655130,1655132-1655133,1655312,1655438,1655441,1655454,1655558,1656087,1656299,1656319,1656331,1656345,1656350,1656590,1656648-1656650,1656657,1657041,1657054,1657374,1657492,1657510,1657565,1657580,1657584,1657586,1657589,1657592,1657607,1657609,1657682,1657
 907,1658207,1658734,1658781,1658790,1658799,1658802,1658804,1658833,1658840,1658966,1659043,1659053,1659059,1659188-1659189,1659216,1659263,1659293,1659304,1659306-1659307,1659382,1659384,1659428,1659471,1659486,1659505,1659516,1659521,1659524,1659559,1659562,1659803,1659806,1659814,1659833,1659862,1659905,1659919,1659948,1659967,1659983-1659984,1660060,1660074,1660077,1660133,1660168,1660331-1660332,1660353,1660358,1660924,1661386,1661867,1661972,1661990,1662200,1662308-1662309,1662548,1662614,1662736,1662985,1662988-1662989,1663264,1663277,1663298,1663324,1663534,1663562,1663676,1663715,1663754,1663768,1663772,1663781,1663893,1663995,1664143,1664163,1664174,1664301,1664317,1664347,1664657,1664659,1664710,1664863-1664864,1664866,1665085,1665292,1665559,1665653,1665661,1665672,1665694,1665697,1665736,1665779,1665976-1665977,1665980-1665981,1665985-1665986,1665989,1665998,1666004,1666008,1666013,1666017,1666024,1666116,1666386-1666387,1666494,1666496,1666552,1666569,1666579,1666637,1
 666649,1666757,1666966,1666972,1666985,1666995,1666997,1667292,1667402,1667406,1667546,1667615,1667630,1667636,1667688,1667764,1667871,1668026,1668135,1668193,1668593,1668596,1668630,1668639,1668843,1669353,1669370,1669451,1669800,1669838,1669876,1669882

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/valves/AbstractAccessLogValve.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/valves/AbstractAccessLogValve.java?rev=1669896&r1=1669895&r2=1669896&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/valves/AbstractAccessLogValve.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/valves/AbstractAccessLogValve.java Sun Mar 29 11:19:29 2015
@@ -142,6 +142,13 @@ public abstract class AbstractAccessLogV
         CLF, SEC, MSEC, MSEC_FRAC, SDF
     }
 
+    /**
+     * The list of our port types.
+     */
+    private static enum PortType {
+        LOCAL, REMOTE
+    }
+
     //------------------------------------------------------ Constructor
     public AbstractAccessLogValve() {
         super(true);
@@ -1091,13 +1098,41 @@ public abstract class AbstractAccessLogV
     }
 
     /**
-     * write local port on which this request was received - %p
+     * write local or remote port for request connection - %p and %{xxx}p
      */
-    protected class LocalPortElement implements AccessLogElement {
+    protected class PortElement implements AccessLogElement {
+
+        /**
+         * Type of port to log
+         */
+        private static final String localPort = "local";
+        private static final String remotePort = "remote";
+
+        private final PortType portType;
+
+        public PortElement() {
+            portType = PortType.LOCAL;
+        }
+
+        public PortElement(String type) {
+            switch (type) {
+            case remotePort:
+                portType = PortType.REMOTE;
+                break;
+            case localPort:
+                portType = PortType.LOCAL;
+                break;
+            default:
+                log.error(sm.getString("accessLogValve.invalidPortType", type));
+                portType = PortType.LOCAL;
+                break;
+            }
+        }
+
         @Override
         public void addElement(CharArrayWriter buf, Date date, Request request,
                 Response response, long time) {
-            if (requestAttributesEnabled) {
+            if (requestAttributesEnabled && portType == PortType.LOCAL) {
                 Object port = request.getAttribute(SERVER_PORT_ATTRIBUTE);
                 if (port == null) {
                     buf.append(Integer.toString(request.getServerPort()));
@@ -1105,7 +1140,11 @@ public abstract class AbstractAccessLogV
                     buf.append(port.toString());
                 }
             } else {
-                buf.append(Integer.toString(request.getServerPort()));
+                if (portType == PortType.LOCAL) {
+                    buf.append(Integer.toString(request.getServerPort()));
+                } else {
+                    buf.append(Integer.toString(request.getRemotePort()));
+                }
             }
         }
     }
@@ -1498,6 +1537,8 @@ public abstract class AbstractAccessLogV
             return new CookieElement(name);
         case 'o':
             return new ResponseHeaderElement(name);
+        case 'p':
+            return new PortElement(name);
         case 'r':
             return new RequestAttributeElement(name);
         case 's':
@@ -1535,7 +1576,7 @@ public abstract class AbstractAccessLogV
         case 'm':
             return new MethodElement();
         case 'p':
-            return new LocalPortElement();
+            return new PortElement();
         case 'q':
             return new QueryElement();
         case 'r':

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/valves/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/valves/LocalStrings.properties?rev=1669896&r1=1669895&r2=1669896&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/valves/LocalStrings.properties (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/valves/LocalStrings.properties Sun Mar 29 11:19:29 2015
@@ -26,6 +26,7 @@ accessLogValve.renameFail=Failed to rena
 accessLogValve.alreadyExists=Failed to rename access log from [{0}] to [{1}], file already exists.
 accessLogValve.invalidLocale=Failed to set locale to [{0}]
 accessLogValve.unsupportedEncoding=Failed to set encoding to [{0}], will use the system default character set.
+accessLogValve.invalidPortType=Invalid port type [{0}], using server (local) port
 
 # Error report valve
 errorReportValve.errorReport=Error report

Modified: tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml?rev=1669896&r1=1669895&r2=1669896&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml Sun Mar 29 11:19:29 2015
@@ -59,6 +59,10 @@
         <bug>57752</bug>: Exclude non-cached resources from the Cache statistics
         for resource lookups. Patch provided by Adam Mlodzinski. (markt)
       </fix>
+      <add>
+        Allow logging of the remote port in the access log using the format
+        pattern <code>%{remote}p</code>. (rjung)
+      </add>
     </changelog>
   </subsection>
   <subsection name="WebSocket">

Modified: tomcat/tc8.0.x/trunk/webapps/docs/config/valve.xml
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/webapps/docs/config/valve.xml?rev=1669896&r1=1669895&r2=1669896&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/webapps/docs/config/valve.xml (original)
+++ tomcat/tc8.0.x/trunk/webapps/docs/config/valve.xml Sun Mar 29 11:19:29 2015
@@ -278,7 +278,8 @@
     <li><b>%l</b> - Remote logical username from identd (always returns
         '-')</li>
     <li><b>%m</b> - Request method (GET, POST, etc.)</li>
-    <li><b>%p</b> - Local port on which this request was received</li>
+    <li><b>%p</b> - Local port on which this request was received.
+        See also <code>%{xxx}p</code> below.</li>
     <li><b>%q</b> - Query string (prepended with a '?' if it exists)</li>
     <li><b>%r</b> - First line of the request (method and request URI)</li>
     <li><b>%s</b> - HTTP status code of the response</li>
@@ -299,15 +300,18 @@
     timestamp formats.
     It is modeled after the
     <a href="http://httpd.apache.org/">Apache HTTP Server</a> log configuration
-    syntax:
+    syntax. Each of them can be used multiple times with different <code>xxx</code> keys:
     </p>
     <ul>
-    <li><b><code>%{xxx}i</code></b> for incoming headers</li>
-    <li><b><code>%{xxx}o</code></b> for outgoing response headers</li>
-    <li><b><code>%{xxx}c</code></b> for a specific cookie</li>
-    <li><b><code>%{xxx}r</code></b> xxx is an attribute in the ServletRequest</li>
-    <li><b><code>%{xxx}s</code></b> xxx is an attribute in the HttpSession</li>
-    <li><b><code>%{xxx}t</code></b> xxx is an enhanced SimpleDateFormat pattern</li>
+    <li><b><code>%{xxx}i</code></b> write value of incoming header with name <code>xxx</code></li>
+    <li><b><code>%{xxx}o</code></b> write value of outgoing header with name <code>xxx</code></li>
+    <li><b><code>%{xxx}c</code></b> write value of cookie with name <code>xxx</code></li>
+    <li><b><code>%{xxx}r</code></b> write value of ServletRequest attribute with name <code>xxx</code></li>
+    <li><b><code>%{xxx}s</code></b> write value of HttpSession attribute with name <code>xxx</code></li>
+    <li><b><code>%{xxx}p</code></b> write local (server) port (<code>xxx==local</code>) or
+        remote (client) port (<code>xxx=remote</code>)</li>
+    <li><b><code>%{xxx}t</code></b> write timestamp at the end of the request formatted using the
+        enhanced SimpleDateFormat pattern <code>xxx</code></li>
     </ul>
 
     <p>All formats supported by SimpleDateFormat are allowed in <code>%{xxx}t</code>.



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org