I'm having a problem where requests made to Tomcat that the client aborts early wind up not producing an access log line. I've reproduced it on Tomcat 7.0.39 and Tomcat 8.0.28.
The repro case is pretty easy. Just use a browser to make a request to any application endpoint and then close the browser tab before the request finishes. Stepping through the Tomcat source code it's pretty clear why the access log is skipped in this case. The CoyoteAdapter calls response.finishResponse() before calling the access log. If the client is gone, the finishResponse method throws an exception when trying to flush its output buffer, which causes the access log line to be skipped. Does anyone have any insight into this problem?