diff src/org/eclipse/jetty/server/NCSARequestLog.java @ 813:f8f7cb485c25

remove UserIdentity
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 08 Sep 2016 22:01:33 -0600
parents 3428c60d7cfc
children 07c82fabc46b
line wrap: on
line diff
--- a/src/org/eclipse/jetty/server/NCSARequestLog.java	Thu Sep 08 21:44:37 2016 -0600
+++ b/src/org/eclipse/jetty/server/NCSARequestLog.java	Thu Sep 08 22:01:33 2016 -0600
@@ -52,675 +52,672 @@
  */
 public class NCSARequestLog extends AbstractLifeCycle implements RequestLog
 {
-    private static final Logger LOG = Log.getLogger(NCSARequestLog.class);
-    private static ThreadLocal<StringBuilder> _buffers = new ThreadLocal<StringBuilder>()
-            {
-                @Override
-                protected StringBuilder initialValue()
-                {
-                    return new StringBuilder(256);
-                }
-            };
+	private static final Logger LOG = Log.getLogger(NCSARequestLog.class);
+	private static ThreadLocal<StringBuilder> _buffers = new ThreadLocal<StringBuilder>()
+			{
+				@Override
+				protected StringBuilder initialValue()
+				{
+					return new StringBuilder(256);
+				}
+			};
 
-    private String _filename;
-    private boolean _extended;
-    private boolean _append;
-    private int _retainDays;
-    private boolean _closeOut;
-    private boolean _preferProxiedForAddress;
-    private String _logDateFormat = "dd/MMM/yyyy:HH:mm:ss Z";
-    private String _filenameDateFormat = null;
-    private Locale _logLocale = Locale.getDefault();
-    private String _logTimeZone = "GMT";
-    private String[] _ignorePaths;
-    private boolean _logLatency = false;
-    private boolean _logCookies = false;
-    private boolean _logServer = false;
-    private boolean _logDispatch = false;
+	private String _filename;
+	private boolean _extended;
+	private boolean _append;
+	private int _retainDays;
+	private boolean _closeOut;
+	private boolean _preferProxiedForAddress;
+	private String _logDateFormat = "dd/MMM/yyyy:HH:mm:ss Z";
+	private String _filenameDateFormat = null;
+	private Locale _logLocale = Locale.getDefault();
+	private String _logTimeZone = "GMT";
+	private String[] _ignorePaths;
+	private boolean _logLatency = false;
+	private boolean _logCookies = false;
+	private boolean _logServer = false;
+	private boolean _logDispatch = false;
 
-    private transient OutputStream _out;
-    private transient OutputStream _fileOut;
-    private transient DateCache _logDateCache;
-    private transient PathMap _ignorePathMap;
-    private transient Writer _writer;
+	private transient OutputStream _out;
+	private transient OutputStream _fileOut;
+	private transient DateCache _logDateCache;
+	private transient PathMap _ignorePathMap;
+	private transient Writer _writer;
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Create request log object with default settings.
-     */
-    public NCSARequestLog()
-    {
-        _extended = true;
-        _append = true;
-        _retainDays = 31;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Create request log object with default settings.
+	 */
+	public NCSARequestLog()
+	{
+		_extended = true;
+		_append = true;
+		_retainDays = 31;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Create request log object with specified output file name.
-     * 
-     * @param filename the file name for the request log.
-     *                 This may be in the format expected
-     *                 by {@link RolloverFileOutputStream}
-     */
-    public NCSARequestLog(String filename)
-    {
-        _extended = true;
-        _append = true;
-        _retainDays = 31;
-        setFilename(filename);
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Create request log object with specified output file name.
+	 * 
+	 * @param filename the file name for the request log.
+	 *                 This may be in the format expected
+	 *                 by {@link RolloverFileOutputStream}
+	 */
+	public NCSARequestLog(String filename)
+	{
+		_extended = true;
+		_append = true;
+		_retainDays = 31;
+		setFilename(filename);
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Set the output file name of the request log.
-     * The file name may be in the format expected by
-     * {@link RolloverFileOutputStream}.
-     * 
-     * @param filename file name of the request log
-     *                
-     */
-    public void setFilename(String filename)
-    {
-        if (filename != null)
-        {
-            filename = filename.trim();
-            if (filename.length() == 0)
-                filename = null;
-        }
-        _filename = filename;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Set the output file name of the request log.
+	 * The file name may be in the format expected by
+	 * {@link RolloverFileOutputStream}.
+	 * 
+	 * @param filename file name of the request log
+	 *                
+	 */
+	public void setFilename(String filename)
+	{
+		if (filename != null)
+		{
+			filename = filename.trim();
+			if (filename.length() == 0)
+				filename = null;
+		}
+		_filename = filename;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Retrieve the output file name of the request log.
-     * 
-     * @return file name of the request log
-     */
-    public String getFilename()
-    {
-        return _filename;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Retrieve the output file name of the request log.
+	 * 
+	 * @return file name of the request log
+	 */
+	public String getFilename()
+	{
+		return _filename;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Retrieve the file name of the request log with the expanded
-     * date wildcard if the output is written to the disk using
-     * {@link RolloverFileOutputStream}.
-     * 
-     * @return file name of the request log, or null if not applicable
-     */
-    public String getDatedFilename()
-    {
-        if (_fileOut instanceof RolloverFileOutputStream)
-            return ((RolloverFileOutputStream)_fileOut).getDatedFilename();
-        return null;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Retrieve the file name of the request log with the expanded
+	 * date wildcard if the output is written to the disk using
+	 * {@link RolloverFileOutputStream}.
+	 * 
+	 * @return file name of the request log, or null if not applicable
+	 */
+	public String getDatedFilename()
+	{
+		if (_fileOut instanceof RolloverFileOutputStream)
+			return ((RolloverFileOutputStream)_fileOut).getDatedFilename();
+		return null;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Set the timestamp format for request log entries in the file.
-     * If this is not set, the pre-formated request timestamp is used.
-     * 
-     * @param format timestamp format string 
-     */
-    public void setLogDateFormat(String format)
-    {
-        _logDateFormat = format;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Set the timestamp format for request log entries in the file.
+	 * If this is not set, the pre-formated request timestamp is used.
+	 * 
+	 * @param format timestamp format string 
+	 */
+	public void setLogDateFormat(String format)
+	{
+		_logDateFormat = format;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Retrieve the timestamp format string for request log entries.
-     * 
-     * @return timestamp format string.
-     */
-    public String getLogDateFormat()
-    {
-        return _logDateFormat;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Retrieve the timestamp format string for request log entries.
+	 * 
+	 * @return timestamp format string.
+	 */
+	public String getLogDateFormat()
+	{
+		return _logDateFormat;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Set the locale of the request log.
-     * 
-     * @param logLocale locale object
-     */
-    public void setLogLocale(Locale logLocale)
-    {
-        _logLocale = logLocale;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Set the locale of the request log.
+	 * 
+	 * @param logLocale locale object
+	 */
+	public void setLogLocale(Locale logLocale)
+	{
+		_logLocale = logLocale;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Retrieve the locale of the request log.
-     * 
-     * @return locale object
-     */
-    public Locale getLogLocale()
-    {
-        return _logLocale;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Retrieve the locale of the request log.
+	 * 
+	 * @return locale object
+	 */
+	public Locale getLogLocale()
+	{
+		return _logLocale;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Set the timezone of the request log.
-     * 
-     * @param tz timezone string
-     */
-    public void setLogTimeZone(String tz)
-    {
-        _logTimeZone = tz;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Set the timezone of the request log.
+	 * 
+	 * @param tz timezone string
+	 */
+	public void setLogTimeZone(String tz)
+	{
+		_logTimeZone = tz;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Retrieve the timezone of the request log.
-     * 
-     * @return timezone string
-     */
-    public String getLogTimeZone()
-    {
-        return _logTimeZone;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Retrieve the timezone of the request log.
+	 * 
+	 * @return timezone string
+	 */
+	public String getLogTimeZone()
+	{
+		return _logTimeZone;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Set the number of days before rotated log files are deleted.
-     * 
-     * @param retainDays number of days to keep a log file
-     */
-    public void setRetainDays(int retainDays)
-    {
-        _retainDays = retainDays;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Set the number of days before rotated log files are deleted.
+	 * 
+	 * @param retainDays number of days to keep a log file
+	 */
+	public void setRetainDays(int retainDays)
+	{
+		_retainDays = retainDays;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Retrieve the number of days before rotated log files are deleted.
-     * 
-     * @return number of days to keep a log file
-     */
-    public int getRetainDays()
-    {
-        return _retainDays;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Retrieve the number of days before rotated log files are deleted.
+	 * 
+	 * @return number of days to keep a log file
+	 */
+	public int getRetainDays()
+	{
+		return _retainDays;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Set the extended request log format flag.
-     * 
-     * @param extended true - log the extended request information,
-     *                 false - do not log the extended request information
-     */
-    public void setExtended(boolean extended)
-    {
-        _extended = extended;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Set the extended request log format flag.
+	 * 
+	 * @param extended true - log the extended request information,
+	 *                 false - do not log the extended request information
+	 */
+	public void setExtended(boolean extended)
+	{
+		_extended = extended;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Retrieve the extended request log format flag.
-     * 
-     * @return value of the flag
-     */
-    public boolean isExtended()
-    {
-        return _extended;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Retrieve the extended request log format flag.
+	 * 
+	 * @return value of the flag
+	 */
+	public boolean isExtended()
+	{
+		return _extended;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Set append to log flag.
-     * 
-     * @param append true - request log file will be appended after restart,
-     *               false - request log file will be overwritten after restart
-     */
-    public void setAppend(boolean append)
-    {
-        _append = append;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Set append to log flag.
+	 * 
+	 * @param append true - request log file will be appended after restart,
+	 *               false - request log file will be overwritten after restart
+	 */
+	public void setAppend(boolean append)
+	{
+		_append = append;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Retrieve append to log flag.
-     * 
-     * @return value of the flag
-     */
-    public boolean isAppend()
-    {
-        return _append;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Retrieve append to log flag.
+	 * 
+	 * @return value of the flag
+	 */
+	public boolean isAppend()
+	{
+		return _append;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Set request paths that will not be logged.
-     * 
-     * @param ignorePaths array of request paths
-     */
-    public void setIgnorePaths(String[] ignorePaths)
-    {
-        _ignorePaths = ignorePaths;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Set request paths that will not be logged.
+	 * 
+	 * @param ignorePaths array of request paths
+	 */
+	public void setIgnorePaths(String[] ignorePaths)
+	{
+		_ignorePaths = ignorePaths;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Retrieve the request paths that will not be logged.
-     * 
-     * @return array of request paths
-     */
-    public String[] getIgnorePaths()
-    {
-        return _ignorePaths;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Retrieve the request paths that will not be logged.
+	 * 
+	 * @return array of request paths
+	 */
+	public String[] getIgnorePaths()
+	{
+		return _ignorePaths;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Controls logging of the request cookies.
-     * 
-     * @param logCookies true - values of request cookies will be logged,
-     *                   false - values of request cookies will not be logged
-     */
-    public void setLogCookies(boolean logCookies)
-    {
-        _logCookies = logCookies;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Controls logging of the request cookies.
+	 * 
+	 * @param logCookies true - values of request cookies will be logged,
+	 *                   false - values of request cookies will not be logged
+	 */
+	public void setLogCookies(boolean logCookies)
+	{
+		_logCookies = logCookies;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Retrieve log cookies flag
-     * 
-     * @return value of the flag
-     */
-    public boolean getLogCookies()
-    {
-        return _logCookies;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Retrieve log cookies flag
+	 * 
+	 * @return value of the flag
+	 */
+	public boolean getLogCookies()
+	{
+		return _logCookies;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Controls logging of the request hostname.
-     * 
-     * @param logServer true - request hostname will be logged,
-     *                  false - request hostname will not be logged
-     */
-    public void setLogServer(boolean logServer)
-    {
-        _logServer = logServer;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Controls logging of the request hostname.
+	 * 
+	 * @param logServer true - request hostname will be logged,
+	 *                  false - request hostname will not be logged
+	 */
+	public void setLogServer(boolean logServer)
+	{
+		_logServer = logServer;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Retrieve log hostname flag.
-     * 
-     * @return value of the flag
-     */
-    public boolean getLogServer()
-    {
-        return _logServer;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Retrieve log hostname flag.
+	 * 
+	 * @return value of the flag
+	 */
+	public boolean getLogServer()
+	{
+		return _logServer;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Controls logging of request processing time.
-     * 
-     * @param logLatency true - request processing time will be logged
-     *                   false - request processing time will not be logged
-     */
-    public void setLogLatency(boolean logLatency)
-    {
-        _logLatency = logLatency;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Controls logging of request processing time.
+	 * 
+	 * @param logLatency true - request processing time will be logged
+	 *                   false - request processing time will not be logged
+	 */
+	public void setLogLatency(boolean logLatency)
+	{
+		_logLatency = logLatency;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Retrieve log request processing time flag.
-     * 
-     * @return value of the flag
-     */
-    public boolean getLogLatency()
-    {
-        return _logLatency;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Retrieve log request processing time flag.
+	 * 
+	 * @return value of the flag
+	 */
+	public boolean getLogLatency()
+	{
+		return _logLatency;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Controls whether the actual IP address of the connection or
-     * the IP address from the X-Forwarded-For header will be logged.
-     * 
-     * @param preferProxiedForAddress true - IP address from header will be logged,
-     *                                false - IP address from the connection will be logged
-     */
-    public void setPreferProxiedForAddress(boolean preferProxiedForAddress)
-    {
-        _preferProxiedForAddress = preferProxiedForAddress;
-    }
-    
-    /* ------------------------------------------------------------ */
-    /**
-     * Retrieved log X-Forwarded-For IP address flag.
-     * 
-     * @return value of the flag
-     */
-    public boolean getPreferProxiedForAddress()
-    {
-        return _preferProxiedForAddress;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Controls whether the actual IP address of the connection or
+	 * the IP address from the X-Forwarded-For header will be logged.
+	 * 
+	 * @param preferProxiedForAddress true - IP address from header will be logged,
+	 *                                false - IP address from the connection will be logged
+	 */
+	public void setPreferProxiedForAddress(boolean preferProxiedForAddress)
+	{
+		_preferProxiedForAddress = preferProxiedForAddress;
+	}
+	
+	/* ------------------------------------------------------------ */
+	/**
+	 * Retrieved log X-Forwarded-For IP address flag.
+	 * 
+	 * @return value of the flag
+	 */
+	public boolean getPreferProxiedForAddress()
+	{
+		return _preferProxiedForAddress;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Set the log file name date format.
-     * @see RolloverFileOutputStream#RolloverFileOutputStream(String, boolean, int, TimeZone, String, String)
-     * 
-     * @param logFileDateFormat format string that is passed to {@link RolloverFileOutputStream}
-     */
-    public void setFilenameDateFormat(String logFileDateFormat)
-    {
-        _filenameDateFormat = logFileDateFormat;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Set the log file name date format.
+	 * @see RolloverFileOutputStream#RolloverFileOutputStream(String, boolean, int, TimeZone, String, String)
+	 * 
+	 * @param logFileDateFormat format string that is passed to {@link RolloverFileOutputStream}
+	 */
+	public void setFilenameDateFormat(String logFileDateFormat)
+	{
+		_filenameDateFormat = logFileDateFormat;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Retrieve the file name date format string.
-     * 
-     * @return the log File Date Format
-     */
-    public String getFilenameDateFormat()
-    {
-        return _filenameDateFormat;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Retrieve the file name date format string.
+	 * 
+	 * @return the log File Date Format
+	 */
+	public String getFilenameDateFormat()
+	{
+		return _filenameDateFormat;
+	}
 
-    /* ------------------------------------------------------------ */
-    /** 
-     * Controls logging of the request dispatch time
-     * 
-     * @param value true - request dispatch time will be logged
-     *              false - request dispatch time will not be logged
-     */
-    public void setLogDispatch(boolean value)
-    {
-        _logDispatch = value;
-    }
+	/* ------------------------------------------------------------ */
+	/** 
+	 * Controls logging of the request dispatch time
+	 * 
+	 * @param value true - request dispatch time will be logged
+	 *              false - request dispatch time will not be logged
+	 */
+	public void setLogDispatch(boolean value)
+	{
+		_logDispatch = value;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Retrieve request dispatch time logging flag
-     * 
-     * @return value of the flag
-     */
-    public boolean isLogDispatch()
-    {
-        return _logDispatch;
-    }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Retrieve request dispatch time logging flag
+	 * 
+	 * @return value of the flag
+	 */
+	public boolean isLogDispatch()
+	{
+		return _logDispatch;
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Writes the request and response information to the output stream.
-     * 
-     * @see org.eclipse.jetty.server.RequestLog#log(org.eclipse.jetty.server.Request, org.eclipse.jetty.server.Response)
-     */
-    public void log(Request request, Response response)
-    {
-        try
-        {
-            if (_ignorePathMap != null && _ignorePathMap.getMatch(request.getRequestURI()) != null)
-                return;
+	/* ------------------------------------------------------------ */
+	/**
+	 * Writes the request and response information to the output stream.
+	 * 
+	 * @see org.eclipse.jetty.server.RequestLog#log(org.eclipse.jetty.server.Request, org.eclipse.jetty.server.Response)
+	 */
+	public void log(Request request, Response response)
+	{
+		try
+		{
+			if (_ignorePathMap != null && _ignorePathMap.getMatch(request.getRequestURI()) != null)
+				return;
 
-            if (_fileOut == null)
-                return;
+			if (_fileOut == null)
+				return;
 
-            StringBuilder buf= _buffers.get();
-            buf.setLength(0);
+			StringBuilder buf= _buffers.get();
+			buf.setLength(0);
 
-            if (_logServer)
-            {
-                buf.append(request.getServerName());
-                buf.append(' ');
-            }
+			if (_logServer)
+			{
+				buf.append(request.getServerName());
+				buf.append(' ');
+			}
+
+			String addr = null;
+			if (_preferProxiedForAddress)
+			{
+				addr = request.getHeader(HttpHeaders.X_FORWARDED_FOR);
+			}
 
-            String addr = null;
-            if (_preferProxiedForAddress)
-            {
-                addr = request.getHeader(HttpHeaders.X_FORWARDED_FOR);
-            }
+			if (addr == null)
+				addr = request.getRemoteAddr();
 
-            if (addr == null)
-                addr = request.getRemoteAddr();
+			buf.append(addr);
+			buf.append(" - ");
+			Authentication authentication=request.getAuthentication();
+			buf.append(" - ");
 
-            buf.append(addr);
-            buf.append(" - ");
-            Authentication authentication=request.getAuthentication();
-            if (authentication instanceof Authentication.User)
-                buf.append(((Authentication.User)authentication).getUserIdentity().getUserPrincipal().getName());
-            else
-                buf.append(" - ");
+			buf.append(" [");
+			if (_logDateCache != null)
+				buf.append(_logDateCache.format(request.getTimeStamp()));
+			else
+				buf.append(request.getTimeStampBuffer().toString());
 
-            buf.append(" [");
-            if (_logDateCache != null)
-                buf.append(_logDateCache.format(request.getTimeStamp()));
-            else
-                buf.append(request.getTimeStampBuffer().toString());
-
-            buf.append("] \"");
-            buf.append(request.getMethod());
-            buf.append(' ');
-            buf.append(request.getUri().toString());
-            buf.append(' ');
-            buf.append(request.getProtocol());
-            buf.append("\" ");
-            if (request.getAsyncContinuation().isInitial())
-            {
-                int status = response.getStatus();
-                if (status <= 0)
-                    status = 404;
-                buf.append((char)('0' + ((status / 100) % 10)));
-                buf.append((char)('0' + ((status / 10) % 10)));
-                buf.append((char)('0' + (status % 10)));
-            }
-            else
-                buf.append("Async");
+			buf.append("] \"");
+			buf.append(request.getMethod());
+			buf.append(' ');
+			buf.append(request.getUri().toString());
+			buf.append(' ');
+			buf.append(request.getProtocol());
+			buf.append("\" ");
+			if (request.getAsyncContinuation().isInitial())
+			{
+				int status = response.getStatus();
+				if (status <= 0)
+					status = 404;
+				buf.append((char)('0' + ((status / 100) % 10)));
+				buf.append((char)('0' + ((status / 10) % 10)));
+				buf.append((char)('0' + (status % 10)));
+			}
+			else
+				buf.append("Async");
 
-            long responseLength = response.getContentCount();
-            if (responseLength >= 0)
-            {
-                buf.append(' ');
-                if (responseLength > 99999)
-                    buf.append(responseLength);
-                else
-                {
-                    if (responseLength > 9999)
-                        buf.append((char)('0' + ((responseLength / 10000) % 10)));
-                    if (responseLength > 999)
-                        buf.append((char)('0' + ((responseLength / 1000) % 10)));
-                    if (responseLength > 99)
-                        buf.append((char)('0' + ((responseLength / 100) % 10)));
-                    if (responseLength > 9)
-                        buf.append((char)('0' + ((responseLength / 10) % 10)));
-                    buf.append((char)('0' + (responseLength) % 10));
-                }
-                buf.append(' ');
-            }
-            else
-                buf.append(" - ");
+			long responseLength = response.getContentCount();
+			if (responseLength >= 0)
+			{
+				buf.append(' ');
+				if (responseLength > 99999)
+					buf.append(responseLength);
+				else
+				{
+					if (responseLength > 9999)
+						buf.append((char)('0' + ((responseLength / 10000) % 10)));
+					if (responseLength > 999)
+						buf.append((char)('0' + ((responseLength / 1000) % 10)));
+					if (responseLength > 99)
+						buf.append((char)('0' + ((responseLength / 100) % 10)));
+					if (responseLength > 9)
+						buf.append((char)('0' + ((responseLength / 10) % 10)));
+					buf.append((char)('0' + (responseLength) % 10));
+				}
+				buf.append(' ');
+			}
+			else
+				buf.append(" - ");
 
-            
-            if (_extended)
-                logExtended(request, response, buf);
+			
+			if (_extended)
+				logExtended(request, response, buf);
 
-            if (_logCookies)
-            {
-                Cookie[] cookies = request.getCookies();
-                if (cookies == null || cookies.length == 0)
-                    buf.append(" -");
-                else
-                {
-                    buf.append(" \"");
-                    for (int i = 0; i < cookies.length; i++)
-                    {
-                        if (i != 0)
-                            buf.append(';');
-                        buf.append(cookies[i].getName());
-                        buf.append('=');
-                        buf.append(cookies[i].getValue());
-                    }
-                    buf.append('\"');
-                }
-            }
+			if (_logCookies)
+			{
+				Cookie[] cookies = request.getCookies();
+				if (cookies == null || cookies.length == 0)
+					buf.append(" -");
+				else
+				{
+					buf.append(" \"");
+					for (int i = 0; i < cookies.length; i++)
+					{
+						if (i != 0)
+							buf.append(';');
+						buf.append(cookies[i].getName());
+						buf.append('=');
+						buf.append(cookies[i].getValue());
+					}
+					buf.append('\"');
+				}
+			}
 
-            if (_logDispatch || _logLatency)
-            {
-                long now = System.currentTimeMillis();
+			if (_logDispatch || _logLatency)
+			{
+				long now = System.currentTimeMillis();
 
-                if (_logDispatch)
-                {   
-                    long d = request.getDispatchTime();
-                    buf.append(' ');
-                    buf.append(now - (d==0 ? request.getTimeStamp():d));
-                }
+				if (_logDispatch)
+				{   
+					long d = request.getDispatchTime();
+					buf.append(' ');
+					buf.append(now - (d==0 ? request.getTimeStamp():d));
+				}
 
-                if (_logLatency)
-                {
-                    buf.append(' ');
-                    buf.append(now - request.getTimeStamp());
-                }
-            }
+				if (_logLatency)
+				{
+					buf.append(' ');
+					buf.append(now - request.getTimeStamp());
+				}
+			}
 
-            buf.append(StringUtil.__LINE_SEPARATOR);
-            
-            String log = buf.toString();
-            write(log);
-        }
-        catch (IOException e)
-        {
-            LOG.warn(e);
-        }
-    }
+			buf.append(StringUtil.__LINE_SEPARATOR);
+			
+			String log = buf.toString();
+			write(log);
+		}
+		catch (IOException e)
+		{
+			LOG.warn(e);
+		}
+	}
 
-    /* ------------------------------------------------------------ */
-    protected void write(String log) throws IOException 
-    {
-        synchronized(this)
-        {
-            if (_writer==null)
-                return;
-            _writer.write(log);
-            _writer.flush();
-        }
-    }
+	/* ------------------------------------------------------------ */
+	protected void write(String log) throws IOException 
+	{
+		synchronized(this)
+		{
+			if (_writer==null)
+				return;
+			_writer.write(log);
+			_writer.flush();
+		}
+	}
 
-    
-    /* ------------------------------------------------------------ */
-    /**
-     * Writes extended request and response information to the output stream.
-     * 
-     * @param request request object
-     * @param response response object
-     * @param b StringBuilder to write to
-     * @throws IOException
-     */
-    protected void logExtended(Request request,
-                               Response response,
-                               StringBuilder b) throws IOException
-    {
-        String referer = request.getHeader(HttpHeaders.REFERER);
-        if (referer == null)
-            b.append("\"-\" ");
-        else
-        {
-            b.append('"');
-            b.append(referer);
-            b.append("\" ");
-        }
+	
+	/* ------------------------------------------------------------ */
+	/**
+	 * Writes extended request and response information to the output stream.
+	 * 
+	 * @param request request object
+	 * @param response response object
+	 * @param b StringBuilder to write to
+	 * @throws IOException
+	 */
+	protected void logExtended(Request request,
+							   Response response,
+							   StringBuilder b) throws IOException
+	{
+		String referer = request.getHeader(HttpHeaders.REFERER);
+		if (referer == null)
+			b.append("\"-\" ");
+		else
+		{
+			b.append('"');
+			b.append(referer);
+			b.append("\" ");
+		}
 
-        String agent = request.getHeader(HttpHeaders.USER_AGENT);
-        if (agent == null)
-            b.append("\"-\" ");
-        else
-        {
-            b.append('"');
-            b.append(agent);
-            b.append('"');
-        }
-    }
+		String agent = request.getHeader(HttpHeaders.USER_AGENT);
+		if (agent == null)
+			b.append("\"-\" ");
+		else
+		{
+			b.append('"');
+			b.append(agent);
+			b.append('"');
+		}
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Set up request logging and open log file.
-     * 
-     * @see org.eclipse.jetty.util.component.AbstractLifeCycle#doStart()
-     */
-    @Override
-    protected synchronized void doStart() throws Exception
-    {
-        if (_logDateFormat != null)
-        {
-            _logDateCache = new DateCache(_logDateFormat,_logLocale);
-            _logDateCache.setTimeZoneID(_logTimeZone);
-        }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Set up request logging and open log file.
+	 * 
+	 * @see org.eclipse.jetty.util.component.AbstractLifeCycle#doStart()
+	 */
+	@Override
+	protected synchronized void doStart() throws Exception
+	{
+		if (_logDateFormat != null)
+		{
+			_logDateCache = new DateCache(_logDateFormat,_logLocale);
+			_logDateCache.setTimeZoneID(_logTimeZone);
+		}
 
-        if (_filename != null)
-        {
-            _fileOut = new RolloverFileOutputStream(_filename,_append,_retainDays,TimeZone.getTimeZone(_logTimeZone),_filenameDateFormat,null);
-            _closeOut = true;
-            LOG.info("Opened " + getDatedFilename());
-        }
-        else
-            _fileOut = System.err;
+		if (_filename != null)
+		{
+			_fileOut = new RolloverFileOutputStream(_filename,_append,_retainDays,TimeZone.getTimeZone(_logTimeZone),_filenameDateFormat,null);
+			_closeOut = true;
+			LOG.info("Opened " + getDatedFilename());
+		}
+		else
+			_fileOut = System.err;
 
-        _out = _fileOut;
+		_out = _fileOut;
 
-        if (_ignorePaths != null && _ignorePaths.length > 0)
-        {
-            _ignorePathMap = new PathMap();
-            for (int i = 0; i < _ignorePaths.length; i++)
-                _ignorePathMap.put(_ignorePaths[i],_ignorePaths[i]);
-        }
-        else
-            _ignorePathMap = null;
+		if (_ignorePaths != null && _ignorePaths.length > 0)
+		{
+			_ignorePathMap = new PathMap();
+			for (int i = 0; i < _ignorePaths.length; i++)
+				_ignorePathMap.put(_ignorePaths[i],_ignorePaths[i]);
+		}
+		else
+			_ignorePathMap = null;
 
-        synchronized(this)
-        {
-            _writer = new OutputStreamWriter(_out);
-        }
-        super.doStart();
-    }
+		synchronized(this)
+		{
+			_writer = new OutputStreamWriter(_out);
+		}
+		super.doStart();
+	}
 
-    /* ------------------------------------------------------------ */
-    /**
-     * Close the log file and perform cleanup.
-     * 
-     * @see org.eclipse.jetty.util.component.AbstractLifeCycle#doStop()
-     */
-    @Override
-    protected void doStop() throws Exception
-    {
-        synchronized (this)
-        {
-            super.doStop();
-            try
-            {
-                if (_writer != null)
-                    _writer.flush();
-            }
-            catch (IOException e)
-            {
-                LOG.ignore(e);
-            }
-            if (_out != null && _closeOut)
-                try
-                {
-                    _out.close();
-                }
-                catch (IOException e)
-                {
-                    LOG.ignore(e);
-                }
+	/* ------------------------------------------------------------ */
+	/**
+	 * Close the log file and perform cleanup.
+	 * 
+	 * @see org.eclipse.jetty.util.component.AbstractLifeCycle#doStop()
+	 */
+	@Override
+	protected void doStop() throws Exception
+	{
+		synchronized (this)
+		{
+			super.doStop();
+			try
+			{
+				if (_writer != null)
+					_writer.flush();
+			}
+			catch (IOException e)
+			{
+				LOG.ignore(e);
+			}
+			if (_out != null && _closeOut)
+				try
+				{
+					_out.close();
+				}
+				catch (IOException e)
+				{
+					LOG.ignore(e);
+				}
 
-            _out = null;
-            _fileOut = null;
-            _closeOut = false;
-            _logDateCache = null;
-            _writer = null;
-        }
-    }
+			_out = null;
+			_fileOut = null;
+			_closeOut = false;
+			_logDateCache = null;
+			_writer = null;
+		}
+	}
 }