import org.apache.catalina.connector.Response;
import org.apache.catalina.util.LifecycleSupport;
import org.apache.catalina.util.StringManager;
+import org.apache.coyote.RequestInfo;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
* <li><b>%v</b> - Local server name
* <li><b>%D</b> - Time taken to process the request, in millis
* <li><b>%T</b> - Time taken to process the request, in seconds
+ * <li><b>%I</b> - current Request thread name (can compare later with stacktraces)
* </ul>
* <p>In addition, the caller can specify one of the following aliases for
* commonly utilized patterns:</p>
.getString("accessLogValve.notStarted"));
lifecycle.fireLifecycleEvent(STOP_EVENT, null);
started = false;
+
close();
}
}
/**
+ * write thread name - %I
+ */
+ protected class ThreadNameElement implements AccessLogElement {
+ public void addElement(StringBuffer buf, Date date, Request request,
+ Response response, long time) {
+ RequestInfo info = request.getCoyoteRequest().getRequestProcessor();
+ if(info != null) {
+ buf.append(info.getWorkerThreadName());
+ } else {
+ buf.append("-");
+ }
+ }
+ }
+
+ /**
* write local IP address - %A
*/
protected class LocalAddrElement implements AccessLogElement {
return new RequestURIElement();
case 'v':
return new LocalServerNameElement();
+ case 'I':
+ return new ThreadNameElement();
default:
return new StringElement("???" + pattern + "???");
}
<li><b>%v</b> - Local server name</li>
<li><b>%D</b> - Time taken to process the request, in millis</li>
<li><b>%T</b> - Time taken to process the request, in seconds</li>
+ <li><b>%I</b> - current request thread name (can compare later with stacktraces)</li>
</ul>
<p>