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