From 53d45ac011f81c3905e638442a7eedf6d424a29a Mon Sep 17 00:00:00 2001 From: markt Date: Mon, 11 Jul 2011 16:08:23 +0000 Subject: [PATCH] Improve logging of error conditions git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1145224 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/catalina/connector/CoyoteAdapter.java | 20 ++++++++++++++++++-- .../apache/catalina/core/TestAsyncContextImpl.java | 4 ++-- webapps/docs/changelog.xml | 4 ++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index 789ef8d99..7f6bd4ff0 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -493,8 +493,24 @@ public class CoyoteAdapter implements Adapter { } try { - connector.getService().getContainer().logAccess( - request, response, time, true); + // Log at the lowest level available. logAccess() will be + // automatically called on parent containers. + boolean logged = false; + if (request.mappingData != null) { + if (request.mappingData.context != null) { + logged = true; + ((Context) request.mappingData.context).logAccess( + request, response, time, true); + } else if (request.mappingData.host != null) { + logged = true; + ((Context) request.mappingData.context).logAccess( + request, response, time, true); + } + } + if (!logged) { + connector.getService().getContainer().logAccess( + request, response, time, true); + } } catch (Throwable t) { ExceptionUtils.handleThrowable(t); log.warn(sm.getString("coyoteAdapter.accesslogFail"), t); diff --git a/test/org/apache/catalina/core/TestAsyncContextImpl.java b/test/org/apache/catalina/core/TestAsyncContextImpl.java index efb5fa76f..5d9ff69c8 100644 --- a/test/org/apache/catalina/core/TestAsyncContextImpl.java +++ b/test/org/apache/catalina/core/TestAsyncContextImpl.java @@ -452,10 +452,10 @@ public class TestAsyncContextImpl extends TomcatBaseTest { // Check the access log if (completeOnTimeout && dispatchUrl != null) { - if (!isAccessLogEnabled()) { + //if (!isAccessLogEnabled()) { validateAccessLog(alv, 1, 500, 0, TimeoutServlet.ASYNC_TIMEOUT + TIMEOUT_MARGIN + REQUEST_TIME); - } + //} } else { validateAccessLog(alv, 1, 200, TimeoutServlet.ASYNC_TIMEOUT, TimeoutServlet.ASYNC_TIMEOUT + TIMEOUT_MARGIN + diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 8cedd45e8..1f2f86f68 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -75,6 +75,10 @@ Allow choosing a locale for timestamp formatting in AccessLogValve. (rjung) + + When generating access logs for errors, log at the Context/Host level if + a Context or Host can be identified for the failed request. (markt) + -- 2.11.0