Re: Access log Bytes Written when compression is enabled
Mark Thomas <[email protected]> Wed, 8 Apr 2026 17:24:40 +0100
| Newsgroups | gmane.comp.jakarta.tomcat.user |
|---|---|
| Message-ID | <[email protected]> |
On 02/03/2026 21:01, David Cleary wrote: > > > On 2/24/26 8:43 AM, David Cleary wrote: >> A customer is asking why the number of bytes written can appear as - in the access log when compression is enabled. They use this value in one of their monitoring tools. >> >> AI tells me this: >> >> When compression is enabled: >> >> 1. Compressed data is buffered in the compression filter layer >> 2. getBytesWritten(false) returns the count of bytes that have already been written to the socket >> 3. Any compressed data still residing in the buffer is not included because the buffer was never flushed >> 4. This can result in zero or an inaccurate byte count being logged The bit AI missed is that the response is complete by the time the access log valve is called so the bytes should be correct. >> Is there any way to ensure this value gets logged when compression is enabled? > >> It sounds like your report says that only *sometimes* is the value >> appearing as - in the logs. Can you confirm that? Can you tell us >> roughly what percentage of access log entries contain - versus a real value? An answer to the above question would be helpful. >> Is there any pattern to the URLs that are being requested that show - as >> the bytes-written value? And this one. >> My initial reaction is that Tomcat should be flushing that buffer even >> if the application isn't doing it, and should therefore be able to give >> an accurate number. Agreed. >> What version are you using, and are there any unusual things going on >> such as other Filters that might be altering the number of bytes passing >> through the pipeline? Also, - Connector configuration - MIME type of file - size of file before compression I've tried and failed to reproduce this. Without a minimal reproducible test case, there is very little we can do. Mark