Issue #113
Deletes the deprecated NcsaRequestLog classes Updates modules to use CustomRequestLog by default Move jetty-customrequestlog.xml from home to base Signed-off-by: Greg Wilkins <gregw@webtide.com>
This commit is contained in:
parent
aeb200e583
commit
81ca90b1f6
|
@ -34,8 +34,8 @@ import org.eclipse.jetty.security.HashLoginService;
|
|||
import org.eclipse.jetty.security.authentication.BasicAuthenticator;
|
||||
import org.eclipse.jetty.server.AbstractConnector;
|
||||
import org.eclipse.jetty.server.Connector;
|
||||
import org.eclipse.jetty.server.CustomRequestLog;
|
||||
import org.eclipse.jetty.server.Handler;
|
||||
import org.eclipse.jetty.server.NCSARequestLog;
|
||||
import org.eclipse.jetty.server.Server;
|
||||
import org.eclipse.jetty.server.ServerConnector;
|
||||
import org.eclipse.jetty.server.ShutdownMonitor;
|
||||
|
@ -497,8 +497,7 @@ public class Runner
|
|||
|
||||
if (_logFile!=null)
|
||||
{
|
||||
NCSARequestLog requestLog = new NCSARequestLog(_logFile);
|
||||
requestLog.setExtended(false);
|
||||
CustomRequestLog requestLog = new CustomRequestLog(_logFile);
|
||||
_server.setRequestLog(requestLog);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
|
||||
|
||||
<!-- =============================================================== -->
|
||||
<!-- Configure the Jetty Request Log -->
|
||||
<!-- =============================================================== -->
|
||||
<Configure id="Server" class="org.eclipse.jetty.server.Server">
|
||||
|
||||
<!-- =========================================================== -->
|
||||
<!-- Configure Request Log for Server -->
|
||||
<!-- (Use RequestLogHandler for a context specific RequestLog -->
|
||||
<!-- =========================================================== -->
|
||||
<Set name="RequestLog">
|
||||
<New id="RequestLog" class="org.eclipse.jetty.server.AsyncNCSARequestLog">
|
||||
<Set name="filename"><Property name="jetty.base" default="." />/<Property>
|
||||
<Name>jetty.requestlog.filePath</Name>
|
||||
<Deprecated>requestlog.filename</Deprecated>
|
||||
<Default><Property name="jetty.requestlog.dir" default="logs"/>/yyyy_mm_dd.request.log</Default>
|
||||
</Property>
|
||||
</Set>
|
||||
<Set name="filenameDateFormat"><Property name="jetty.requestlog.filenameDateFormat" default="yyyy_MM_dd"/></Set>
|
||||
<Set name="retainDays"><Property name="jetty.requestlog.retainDays" default="90"/></Set>
|
||||
<Set name="append"><Property name="jetty.requestlog.append" default="false"/></Set>
|
||||
<Set name="extended"><Property name="jetty.requestlog.extended" default="false"/></Set>
|
||||
<Set name="logCookies"><Property name="jetty.requestlog.cookies" default="false"/></Set>
|
||||
<Set name="LogTimeZone"><Property name="jetty.requestlog.timezone" default="GMT"/></Set>
|
||||
<Set name="LogLatency"><Property name="jetty.requestlog.loglatency" default="false"/></Set>
|
||||
</New>
|
||||
</Set>
|
||||
</Configure>
|
|
@ -1,13 +1,14 @@
|
|||
DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html
|
||||
|
||||
[description]
|
||||
Enables a format string style request log.
|
||||
An implementation of requestlog using CustomRequestLog and AsyncRequestLogWriter
|
||||
|
||||
[provides]
|
||||
requestlog
|
||||
requestlog-impl
|
||||
|
||||
[tags]
|
||||
requestlog
|
||||
logging
|
||||
|
||||
[depend]
|
||||
server
|
||||
|
@ -17,8 +18,12 @@ etc/jetty-customrequestlog.xml
|
|||
|
||||
[files]
|
||||
logs/
|
||||
basehome:modules/requestlog/jetty-customrequestlog.xml|etc/jetty-customrequestlog.xml
|
||||
|
||||
[ini-template]
|
||||
## Format string
|
||||
# jetty.customrequestlog.formatString=%a - %u %{dd/MMM/yyyy:HH:mm:ss ZZZ|GMT}t "%r" %s %B "%{Referer}i" "%{User-Agent}i" "%C"
|
||||
|
||||
## Logging directory (relative to $jetty.base)
|
||||
# jetty.requestlog.dir=logs
|
||||
|
||||
|
@ -36,6 +41,3 @@ logs/
|
|||
|
||||
## Timezone of the log file rollover
|
||||
# jetty.requestlog.timezone=GMT
|
||||
|
||||
## Format string
|
||||
# jetty.customrequestlog.formatString=%a - %u %{dd/MMM/yyyy:HH:mm:ss ZZZ|GMT}t "%r" %s %B "%{Referer}i" "%{User-Agent}i" "%C"
|
||||
|
|
|
@ -14,7 +14,7 @@ logback-impl
|
|||
resources
|
||||
|
||||
[provide]
|
||||
requestlog
|
||||
requestlog-impl
|
||||
|
||||
[xml]
|
||||
etc/jetty-logback-access.xml
|
||||
|
|
|
@ -1,44 +1,12 @@
|
|||
DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html
|
||||
|
||||
[description]
|
||||
Enables a NCSA style request log.
|
||||
Enables the default custom request log.
|
||||
|
||||
[tags]
|
||||
requestlog
|
||||
|
||||
[depend]
|
||||
server
|
||||
[depends]
|
||||
customrequestlog
|
||||
|
||||
[xml]
|
||||
etc/jetty-requestlog.xml
|
||||
|
||||
[files]
|
||||
logs/
|
||||
|
||||
[ini-template]
|
||||
## Logging directory (relative to $jetty.base)
|
||||
# jetty.requestlog.dir=logs
|
||||
|
||||
## File path
|
||||
# jetty.requestlog.filePath=${jetty.requestlog.dir}/yyyy_mm_dd.request.log
|
||||
|
||||
## Date format for rollovered files (uses SimpleDateFormat syntax)
|
||||
# jetty.requestlog.filenameDateFormat=yyyy_MM_dd
|
||||
|
||||
## How many days to retain old log files
|
||||
# jetty.requestlog.retainDays=90
|
||||
|
||||
## Whether to append to existing file
|
||||
# jetty.requestlog.append=false
|
||||
|
||||
## Whether to use the extended log output
|
||||
# jetty.requestlog.extended=true
|
||||
|
||||
## Whether to log http cookie information
|
||||
# jetty.requestlog.cookies=true
|
||||
|
||||
## Timezone of the log entries
|
||||
# jetty.requestlog.timezone=GMT
|
||||
|
||||
## Whether to log LogLatency
|
||||
# jetty.requestlog.loglatency=false
|
||||
|
|
|
@ -1,516 +0,0 @@
|
|||
//
|
||||
// ========================================================================
|
||||
// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd.
|
||||
// ------------------------------------------------------------------------
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are made available under the terms of the Eclipse Public License v1.0
|
||||
// and Apache License v2.0 which accompanies this distribution.
|
||||
//
|
||||
// The Eclipse Public License is available at
|
||||
// http://www.eclipse.org/legal/epl-v10.html
|
||||
//
|
||||
// The Apache License v2.0 is available at
|
||||
// http://www.opensource.org/licenses/apache2.0.php
|
||||
//
|
||||
// You may elect to redistribute this code under either of these licenses.
|
||||
// ========================================================================
|
||||
//
|
||||
|
||||
package org.eclipse.jetty.server;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.servlet.http.Cookie;
|
||||
|
||||
import org.eclipse.jetty.http.HttpHeader;
|
||||
import org.eclipse.jetty.http.pathmap.PathMappings;
|
||||
import org.eclipse.jetty.server.handler.StatisticsHandler;
|
||||
import org.eclipse.jetty.util.DateCache;
|
||||
import org.eclipse.jetty.util.annotation.ManagedAttribute;
|
||||
import org.eclipse.jetty.util.component.ContainerLifeCycle;
|
||||
import org.eclipse.jetty.util.log.Log;
|
||||
import org.eclipse.jetty.util.log.Logger;
|
||||
|
||||
/**
|
||||
* Base implementation of the {@link RequestLog} outputs logs in the pseudo-standard NCSA common log format.
|
||||
* Configuration options allow a choice between the standard Common Log Format (as used in the 3 log format) and the
|
||||
* Combined Log Format (single log format). This log format can be output by most web servers, and almost all web log
|
||||
* analysis software can understand these formats.
|
||||
*
|
||||
* @deprecated use {@link CustomRequestLog} given format string {@link CustomRequestLog#EXTENDED_NCSA_FORMAT} with a {@link RequestLog.Writer}
|
||||
*/
|
||||
@Deprecated
|
||||
public class AbstractNCSARequestLog extends ContainerLifeCycle implements RequestLog
|
||||
{
|
||||
protected static final Logger LOG = Log.getLogger(AbstractNCSARequestLog.class);
|
||||
|
||||
private static ThreadLocal<StringBuilder> _buffers = ThreadLocal.withInitial(() -> new StringBuilder(256));
|
||||
|
||||
protected final RequestLog.Writer _requestLogWriter;
|
||||
|
||||
private String[] _ignorePaths;
|
||||
private boolean _extended;
|
||||
private PathMappings<String> _ignorePathMap;
|
||||
private boolean _logLatency = false;
|
||||
private boolean _logCookies = false;
|
||||
private boolean _logServer = false;
|
||||
private boolean _preferProxiedForAddress;
|
||||
private transient DateCache _logDateCache;
|
||||
private String _logDateFormat = "dd/MMM/yyyy:HH:mm:ss Z";
|
||||
private Locale _logLocale = Locale.getDefault();
|
||||
private String _logTimeZone = "GMT";
|
||||
|
||||
public AbstractNCSARequestLog(RequestLog.Writer requestLogWriter)
|
||||
{
|
||||
this._requestLogWriter = requestLogWriter;
|
||||
addBean(_requestLogWriter);
|
||||
}
|
||||
|
||||
/**
|
||||
* Is logging enabled
|
||||
*
|
||||
* @return true if logging is enabled
|
||||
*/
|
||||
protected boolean isEnabled()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write requestEntry out. (to disk or slf4j log)
|
||||
*
|
||||
* @param requestEntry the request entry
|
||||
* @throws IOException if unable to write the entry
|
||||
*/
|
||||
public void write(String requestEntry) throws IOException
|
||||
{
|
||||
_requestLogWriter.write(requestEntry);
|
||||
}
|
||||
|
||||
private void append(StringBuilder buf, String s)
|
||||
{
|
||||
if (s == null || s.length() == 0)
|
||||
buf.append('-');
|
||||
else
|
||||
buf.append(s);
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes the request and response information to the output stream.
|
||||
*
|
||||
* @see org.eclipse.jetty.server.RequestLog#log(Request, Response)
|
||||
*/
|
||||
@Override
|
||||
public void log(Request request, Response response)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (_ignorePathMap != null && _ignorePathMap.getMatch(request.getRequestURI()) != null)
|
||||
return;
|
||||
|
||||
if (!isEnabled())
|
||||
return;
|
||||
|
||||
StringBuilder buf = _buffers.get();
|
||||
buf.setLength(0);
|
||||
|
||||
if (_logServer)
|
||||
{
|
||||
append(buf, request.getServerName());
|
||||
buf.append(' ');
|
||||
}
|
||||
|
||||
String addr = null;
|
||||
if (_preferProxiedForAddress)
|
||||
{
|
||||
addr = request.getHeader(HttpHeader.X_FORWARDED_FOR.toString());
|
||||
}
|
||||
|
||||
if (addr == null)
|
||||
addr = request.getRemoteAddr();
|
||||
|
||||
buf.append(addr);
|
||||
buf.append(" - ");
|
||||
|
||||
String auth = getAuthentication(request);
|
||||
append(buf, auth == null ? "-" : auth);
|
||||
|
||||
buf.append(" [");
|
||||
if (_logDateCache != null)
|
||||
buf.append(_logDateCache.format(request.getTimeStamp()));
|
||||
else
|
||||
buf.append(request.getTimeStamp());
|
||||
|
||||
buf.append("] \"");
|
||||
append(buf, request.getMethod());
|
||||
buf.append(' ');
|
||||
append(buf, request.getOriginalURI());
|
||||
buf.append(' ');
|
||||
append(buf, request.getProtocol());
|
||||
buf.append("\" ");
|
||||
|
||||
int status = response.getCommittedMetaData().getStatus();
|
||||
if (status >= 0)
|
||||
{
|
||||
buf.append((char)('0' + ((status / 100) % 10)));
|
||||
buf.append((char)('0' + ((status / 10) % 10)));
|
||||
buf.append((char)('0' + (status % 10)));
|
||||
}
|
||||
else
|
||||
buf.append(status);
|
||||
|
||||
long written = response.getHttpChannel().getBytesWritten();
|
||||
if (written >= 0)
|
||||
{
|
||||
buf.append(' ');
|
||||
if (written > 99999)
|
||||
buf.append(written);
|
||||
else
|
||||
{
|
||||
if (written > 9999)
|
||||
buf.append((char)('0' + ((written / 10000) % 10)));
|
||||
if (written > 999)
|
||||
buf.append((char)('0' + ((written / 1000) % 10)));
|
||||
if (written > 99)
|
||||
buf.append((char)('0' + ((written / 100) % 10)));
|
||||
if (written > 9)
|
||||
buf.append((char)('0' + ((written / 10) % 10)));
|
||||
buf.append((char)('0' + (written) % 10));
|
||||
}
|
||||
buf.append(' ');
|
||||
}
|
||||
else
|
||||
buf.append(" - ");
|
||||
|
||||
|
||||
if (_extended)
|
||||
logExtended(buf, request, response);
|
||||
|
||||
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 (_logLatency)
|
||||
{
|
||||
long now = System.currentTimeMillis();
|
||||
|
||||
if (_logLatency)
|
||||
{
|
||||
buf.append(' ');
|
||||
buf.append(now - request.getTimeStamp());
|
||||
}
|
||||
}
|
||||
|
||||
String log = buf.toString();
|
||||
write(log);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
LOG.warn(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract the user authentication
|
||||
*
|
||||
* @param request The request to extract from
|
||||
* @return The string to log for authenticated user.
|
||||
*/
|
||||
protected String getAuthentication(Request request)
|
||||
{
|
||||
Authentication authentication = request.getAuthentication();
|
||||
|
||||
if (authentication instanceof Authentication.User)
|
||||
return ((Authentication.User)authentication).getUserIdentity().getUserPrincipal().getName();
|
||||
|
||||
// TODO extract the user name if it is Authentication.Deferred and return as '?username'
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes extended request and response information to the output stream.
|
||||
*
|
||||
* @param b StringBuilder to write to
|
||||
* @param request request object
|
||||
* @param response response object
|
||||
* @throws IOException if unable to log the extended information
|
||||
*/
|
||||
protected void logExtended(StringBuilder b, Request request, Response response) throws IOException
|
||||
{
|
||||
String referer = request.getHeader(HttpHeader.REFERER.toString());
|
||||
if (referer == null)
|
||||
b.append("\"-\" ");
|
||||
else
|
||||
{
|
||||
b.append('"');
|
||||
b.append(referer);
|
||||
b.append("\" ");
|
||||
}
|
||||
|
||||
String agent = request.getHeader(HttpHeader.USER_AGENT.toString());
|
||||
if (agent == null)
|
||||
b.append("\"-\"");
|
||||
else
|
||||
{
|
||||
b.append('"');
|
||||
b.append(agent);
|
||||
b.append('"');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param value true to log dispatch
|
||||
* @deprecated use {@link StatisticsHandler}
|
||||
*/
|
||||
@Deprecated
|
||||
public void setLogDispatch(boolean value)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if logging dispatches
|
||||
* @deprecated use {@link StatisticsHandler}
|
||||
*/
|
||||
@Deprecated
|
||||
public boolean isLogDispatch()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 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
|
||||
*/
|
||||
@ManagedAttribute("use extended NCSA format")
|
||||
public boolean isExtended()
|
||||
{
|
||||
return _extended;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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, _logTimeZone);
|
||||
}
|
||||
|
||||
if (_ignorePaths != null && _ignorePaths.length > 0)
|
||||
{
|
||||
_ignorePathMap = new PathMappings<>();
|
||||
for (int i = 0; i < _ignorePaths.length; i++)
|
||||
_ignorePathMap.put(_ignorePaths[i], _ignorePaths[i]);
|
||||
}
|
||||
else
|
||||
_ignorePathMap = null;
|
||||
|
||||
super.doStart();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doStop() throws Exception
|
||||
{
|
||||
_logDateCache = null;
|
||||
super.doStop();
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
@ManagedAttribute("the timezone")
|
||||
public String getLogTimeZone()
|
||||
{
|
||||
return _logTimeZone;
|
||||
}
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
//
|
||||
// ========================================================================
|
||||
// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd.
|
||||
// ------------------------------------------------------------------------
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are made available under the terms of the Eclipse Public License v1.0
|
||||
// and Apache License v2.0 which accompanies this distribution.
|
||||
//
|
||||
// The Eclipse Public License is available at
|
||||
// http://www.eclipse.org/legal/epl-v10.html
|
||||
//
|
||||
// The Apache License v2.0 is available at
|
||||
// http://www.opensource.org/licenses/apache2.0.php
|
||||
//
|
||||
// You may elect to redistribute this code under either of these licenses.
|
||||
// ========================================================================
|
||||
//
|
||||
|
||||
package org.eclipse.jetty.server;
|
||||
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
|
||||
/**
|
||||
* An asynchronously writing NCSA Request Log
|
||||
* @deprecated use {@link CustomRequestLog} given format string {@link CustomRequestLog#EXTENDED_NCSA_FORMAT} with an {@link AsyncRequestLogWriter}
|
||||
*/
|
||||
@Deprecated
|
||||
public class AsyncNCSARequestLog extends NCSARequestLog
|
||||
{
|
||||
public AsyncNCSARequestLog()
|
||||
{
|
||||
this(null,null);
|
||||
}
|
||||
|
||||
public AsyncNCSARequestLog(String filename, BlockingQueue<String> queue)
|
||||
{
|
||||
super(new AsyncRequestLogWriter(filename, queue));
|
||||
}
|
||||
}
|
|
@ -1,219 +0,0 @@
|
|||
//
|
||||
// ========================================================================
|
||||
// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd.
|
||||
// ------------------------------------------------------------------------
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are made available under the terms of the Eclipse Public License v1.0
|
||||
// and Apache License v2.0 which accompanies this distribution.
|
||||
//
|
||||
// The Eclipse Public License is available at
|
||||
// http://www.eclipse.org/legal/epl-v10.html
|
||||
//
|
||||
// The Apache License v2.0 is available at
|
||||
// http://www.opensource.org/licenses/apache2.0.php
|
||||
//
|
||||
// You may elect to redistribute this code under either of these licenses.
|
||||
// ========================================================================
|
||||
//
|
||||
|
||||
package org.eclipse.jetty.server;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import org.eclipse.jetty.util.RolloverFileOutputStream;
|
||||
import org.eclipse.jetty.util.annotation.ManagedAttribute;
|
||||
import org.eclipse.jetty.util.annotation.ManagedObject;
|
||||
|
||||
/**
|
||||
* This {@link RequestLog} implementation outputs logs in the pseudo-standard
|
||||
* NCSA common log format. Configuration options allow a choice between the
|
||||
* standard Common Log Format (as used in the 3 log format) and the Combined Log
|
||||
* Format (single log format). This log format can be output by most web
|
||||
* servers, and almost all web log analysis software can understand these
|
||||
* formats.
|
||||
*
|
||||
* @deprecated use {@link CustomRequestLog} given format string {@link CustomRequestLog#EXTENDED_NCSA_FORMAT} with a {@link RequestLogWriter}
|
||||
*/
|
||||
@Deprecated
|
||||
@ManagedObject("NCSA standard format request log")
|
||||
public class NCSARequestLog extends AbstractNCSARequestLog
|
||||
{
|
||||
private final RequestLogWriter _requestLogWriter;
|
||||
|
||||
/**
|
||||
* Create request log object with default settings.
|
||||
*/
|
||||
public NCSARequestLog()
|
||||
{
|
||||
this((String)null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
this(new RequestLogWriter(filename));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create request log object given a RequestLogWriter file name.
|
||||
*
|
||||
* @param writer the writer which manages the output of the formatted string
|
||||
* produced by the {@link RequestLog}
|
||||
*/
|
||||
public NCSARequestLog(RequestLogWriter writer)
|
||||
{
|
||||
super(writer);
|
||||
_requestLogWriter = writer;
|
||||
setExtended(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
_requestLogWriter.setFilename(filename);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLogTimeZone(String tz)
|
||||
{
|
||||
super.setLogTimeZone(tz);
|
||||
_requestLogWriter.setTimeZone(tz);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the output file name of the request log.
|
||||
*
|
||||
* @return file name of the request log
|
||||
*/
|
||||
@ManagedAttribute("file of log")
|
||||
public String getFilename()
|
||||
{
|
||||
return _requestLogWriter.getFileName();
|
||||
}
|
||||
|
||||
/**
|
||||
* 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()
|
||||
{
|
||||
return _requestLogWriter.getDatedFilename();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isEnabled()
|
||||
{
|
||||
return _requestLogWriter.isEnabled();
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
_requestLogWriter.setRetainDays(retainDays);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the number of days before rotated log files are deleted.
|
||||
*
|
||||
* @return number of days to keep a log file
|
||||
*/
|
||||
@ManagedAttribute("number of days that log files are kept")
|
||||
public int getRetainDays()
|
||||
{
|
||||
return _requestLogWriter.getRetainDays();
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
_requestLogWriter.setAppend(append);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve append to log flag.
|
||||
*
|
||||
* @return value of the flag
|
||||
*/
|
||||
@ManagedAttribute("existing log files are appends to the new one")
|
||||
public boolean isAppend()
|
||||
{
|
||||
return _requestLogWriter.isAppend();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the log file name date format.
|
||||
*
|
||||
* @param logFileDateFormat format string that is passed to {@link RolloverFileOutputStream}
|
||||
* @see RolloverFileOutputStream#RolloverFileOutputStream(String, boolean, int, TimeZone, String, String)
|
||||
*/
|
||||
public void setFilenameDateFormat(String logFileDateFormat)
|
||||
{
|
||||
_requestLogWriter.setFilenameDateFormat(logFileDateFormat);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the file name date format string.
|
||||
*
|
||||
* @return the log File Date Format
|
||||
*/
|
||||
public String getFilenameDateFormat()
|
||||
{
|
||||
return _requestLogWriter.getFilenameDateFormat();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(String requestEntry) throws IOException
|
||||
{
|
||||
_requestLogWriter.write(requestEntry);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up request logging and open log file.
|
||||
*
|
||||
* @see org.eclipse.jetty.util.component.AbstractLifeCycle#doStart()
|
||||
*/
|
||||
@Override
|
||||
protected synchronized void doStart() throws Exception
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
//
|
||||
// ========================================================================
|
||||
// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd.
|
||||
// ------------------------------------------------------------------------
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are made available under the terms of the Eclipse Public License v1.0
|
||||
// and Apache License v2.0 which accompanies this distribution.
|
||||
//
|
||||
// The Eclipse Public License is available at
|
||||
// http://www.eclipse.org/legal/epl-v10.html
|
||||
//
|
||||
// The Apache License v2.0 is available at
|
||||
// http://www.opensource.org/licenses/apache2.0.php
|
||||
//
|
||||
// You may elect to redistribute this code under either of these licenses.
|
||||
// ========================================================================
|
||||
//
|
||||
|
||||
package org.eclipse.jetty.server;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.eclipse.jetty.util.annotation.ManagedObject;
|
||||
|
||||
/**
|
||||
* Implementation of NCSARequestLog where output is sent as a SLF4J INFO Log message on the named logger "org.eclipse.jetty.server.RequestLog"
|
||||
* @deprecated use {@link CustomRequestLog} given format string {@link CustomRequestLog#EXTENDED_NCSA_FORMAT} with an {@link Slf4jRequestLogWriter}
|
||||
*/
|
||||
@Deprecated
|
||||
@ManagedObject("NCSA standard format request log to slf4j bridge")
|
||||
public class Slf4jRequestLog extends AbstractNCSARequestLog
|
||||
{
|
||||
private final Slf4jRequestLogWriter _requestLogWriter;
|
||||
|
||||
public Slf4jRequestLog()
|
||||
{
|
||||
this(new Slf4jRequestLogWriter());
|
||||
}
|
||||
|
||||
public Slf4jRequestLog(Slf4jRequestLogWriter writer)
|
||||
{
|
||||
super(writer);
|
||||
_requestLogWriter = writer;
|
||||
}
|
||||
|
||||
public void setLoggerName(String loggerName)
|
||||
{
|
||||
_requestLogWriter.setLoggerName(loggerName);
|
||||
}
|
||||
|
||||
public String getLoggerName()
|
||||
{
|
||||
return _requestLogWriter.getLoggerName();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isEnabled()
|
||||
{
|
||||
return _requestLogWriter.isEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(String requestEntry) throws IOException
|
||||
{
|
||||
_requestLogWriter.write(requestEntry);
|
||||
}
|
||||
}
|
|
@ -34,7 +34,6 @@ import javax.servlet.http.HttpServletRequest;
|
|||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.eclipse.jetty.http.BadMessageException;
|
||||
import org.eclipse.jetty.server.AbstractNCSARequestLog;
|
||||
import org.eclipse.jetty.server.CustomRequestLog;
|
||||
import org.eclipse.jetty.server.Handler;
|
||||
import org.eclipse.jetty.server.HttpChannel;
|
||||
|
@ -53,7 +52,6 @@ import org.junit.jupiter.api.BeforeEach;
|
|||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
|
@ -75,13 +73,6 @@ public class NcsaRequestLogTest
|
|||
case "customNCSA":
|
||||
_log = new CustomRequestLog(writer, CustomRequestLog.EXTENDED_NCSA_FORMAT);
|
||||
break;
|
||||
case "NCSA":
|
||||
{
|
||||
AbstractNCSARequestLog logNCSA = new AbstractNCSARequestLog(writer);
|
||||
logNCSA.setExtended(true);
|
||||
_log = logNCSA;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
throw new IllegalStateException("invalid logType");
|
||||
}
|
||||
|
@ -122,42 +113,47 @@ public class NcsaRequestLogTest
|
|||
_server.stop();
|
||||
stacklessLogging.close();
|
||||
}
|
||||
|
||||
|
||||
// TODO include logback?
|
||||
public static Stream<Arguments> ncsaImplementations()
|
||||
{
|
||||
return Stream.of(Arguments.of("customNCSA"));
|
||||
}
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testNotHandled(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
testHandlerServerStart();
|
||||
|
||||
|
||||
_connector.getResponse("GET /foo HTTP/1.0\n\n");
|
||||
String log = _entries.poll(5,TimeUnit.SECONDS);
|
||||
assertThat(log,containsString("GET /foo HTTP/1.0\" 404 "));
|
||||
}
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testRequestLine(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
testHandlerServerStart();
|
||||
|
||||
|
||||
_connector.getResponse("GET /foo?data=1 HTTP/1.0\nhost: host:80\n\n");
|
||||
String log = _entries.poll(5,TimeUnit.SECONDS);
|
||||
assertThat(log,containsString("GET /foo?data=1 HTTP/1.0\" 200 "));
|
||||
|
||||
|
||||
_connector.getResponse("GET //bad/foo?data=1 HTTP/1.0\n\n");
|
||||
log = _entries.poll(5,TimeUnit.SECONDS);
|
||||
assertThat(log,containsString("GET //bad/foo?data=1 HTTP/1.0\" 200 "));
|
||||
|
||||
|
||||
_connector.getResponse("GET http://host:80/foo?data=1 HTTP/1.0\n\n");
|
||||
log = _entries.poll(5,TimeUnit.SECONDS);
|
||||
assertThat(log,containsString("GET http://host:80/foo?data=1 HTTP/1.0\" 200 "));
|
||||
assertThat(log,containsString("GET http://host:80/foo?data=1 HTTP/1.0\" 200 "));
|
||||
}
|
||||
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testHTTP10Host(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -171,9 +167,9 @@ public class NcsaRequestLogTest
|
|||
assertThat(log,containsString("GET /foo?name=value"));
|
||||
assertThat(log,containsString(" 200 "));
|
||||
}
|
||||
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testHTTP11(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -187,9 +183,9 @@ public class NcsaRequestLogTest
|
|||
assertThat(log,containsString("GET /foo?name=value"));
|
||||
assertThat(log,containsString(" 200 "));
|
||||
}
|
||||
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testAbsolute(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -203,9 +199,9 @@ public class NcsaRequestLogTest
|
|||
assertThat(log,containsString("GET http://hostname:8888/foo?name=value"));
|
||||
assertThat(log,containsString(" 200 "));
|
||||
}
|
||||
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testQuery(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -216,9 +212,9 @@ public class NcsaRequestLogTest
|
|||
assertThat(log,containsString("GET /foo?name=value"));
|
||||
assertThat(log,containsString(" 200 "));
|
||||
}
|
||||
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testSmallData(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -229,9 +225,9 @@ public class NcsaRequestLogTest
|
|||
assertThat(log,containsString("GET /foo?"));
|
||||
assertThat(log,containsString(" 200 42 "));
|
||||
}
|
||||
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testBigData(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -242,9 +238,9 @@ public class NcsaRequestLogTest
|
|||
assertThat(log,containsString("GET /foo?"));
|
||||
assertThat(log,containsString(" 200 102400 "));
|
||||
}
|
||||
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testStatus(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -255,9 +251,9 @@ public class NcsaRequestLogTest
|
|||
assertThat(log,containsString("GET /foo?"));
|
||||
assertThat(log,containsString(" 206 0 "));
|
||||
}
|
||||
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testStatusData(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -268,9 +264,9 @@ public class NcsaRequestLogTest
|
|||
assertThat(log,containsString("GET /foo?"));
|
||||
assertThat(log,containsString(" 206 42 "));
|
||||
}
|
||||
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testBadRequest(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -281,9 +277,9 @@ public class NcsaRequestLogTest
|
|||
assertThat(log,containsString("\"- - -\""));
|
||||
assertThat(log,containsString(" 400 "));
|
||||
}
|
||||
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testBadCharacter(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -294,9 +290,9 @@ public class NcsaRequestLogTest
|
|||
assertThat(log,containsString("\"- - -\""));
|
||||
assertThat(log,containsString(" 400 "));
|
||||
}
|
||||
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testBadVersion(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -307,9 +303,9 @@ public class NcsaRequestLogTest
|
|||
assertThat(log,containsString("\"- - -\""));
|
||||
assertThat(log,containsString(" 400 "));
|
||||
}
|
||||
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testLongURI(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -323,9 +319,9 @@ public class NcsaRequestLogTest
|
|||
assertThat(log,containsString("\"- - -\""));
|
||||
assertThat(log,containsString(" 414 "));
|
||||
}
|
||||
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testLongHeader(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -339,9 +335,9 @@ public class NcsaRequestLogTest
|
|||
assertThat(log,containsString("\"METHOD /foo HTTP/1.0\""));
|
||||
assertThat(log,containsString(" 431 "));
|
||||
}
|
||||
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testBadRequestNoHost(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -354,7 +350,7 @@ public class NcsaRequestLogTest
|
|||
}
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testUseragentWithout(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -367,7 +363,7 @@ public class NcsaRequestLogTest
|
|||
}
|
||||
|
||||
@ParameterizedTest()
|
||||
@ValueSource(strings = {"customNCSA", "NCSA"})
|
||||
@MethodSource("ncsaImplementations")
|
||||
public void testUseragentWith(String logType) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -381,12 +377,12 @@ public class NcsaRequestLogTest
|
|||
|
||||
|
||||
// Tests from here use these parameters
|
||||
public static Stream<Arguments> data()
|
||||
public static Stream<Arguments> scenarios()
|
||||
{
|
||||
List<Object[]> data = new ArrayList<>();
|
||||
|
||||
for(String logType : Arrays.asList("customNCSA","NCSA"))
|
||||
ncsaImplementations().forEach(arg->
|
||||
{
|
||||
String logType = String.valueOf(arg.get()[0]);
|
||||
data.add(new Object[]{logType, new NoopHandler(), "/noop", "\"GET /noop HTTP/1.0\" 404"});
|
||||
data.add(new Object[]{logType, new HelloHandler(), "/hello", "\"GET /hello HTTP/1.0\" 200"});
|
||||
data.add(new Object[]{logType, new ResponseSendErrorHandler(), "/sendError", "\"GET /sendError HTTP/1.0\" 599"});
|
||||
|
@ -397,13 +393,13 @@ public class NcsaRequestLogTest
|
|||
data.add(new Object[]{logType, new BadMessageHandler(), "/bad", "\"GET /bad HTTP/1.0\" 499"});
|
||||
data.add(new Object[]{logType, new AbortHandler(), "/bad", "\"GET /bad HTTP/1.0\" 488"});
|
||||
data.add(new Object[]{logType, new AbortPartialHandler(), "/bad", "\"GET /bad HTTP/1.0\" 200"});
|
||||
}
|
||||
});
|
||||
|
||||
return data.stream().map(Arguments::of);
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("data")
|
||||
@MethodSource("scenarios")
|
||||
public void testServerRequestLog(String logType, Handler testHandler, String requestPath, String expectedLogEntry) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -415,7 +411,7 @@ public class NcsaRequestLogTest
|
|||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("data")
|
||||
@MethodSource("scenarios")
|
||||
public void testLogHandlerWrapper(String logType, Handler testHandler, String requestPath, String expectedLogEntry) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -429,7 +425,7 @@ public class NcsaRequestLogTest
|
|||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("data")
|
||||
@MethodSource("scenarios")
|
||||
public void testLogHandlerCollectionFirst(String logType, Handler testHandler, String requestPath, String expectedLogEntry) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -445,7 +441,7 @@ public class NcsaRequestLogTest
|
|||
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("data")
|
||||
@MethodSource("scenarios")
|
||||
public void testLogHandlerCollectionLast(String logType, Handler testHandler, String requestPath, String expectedLogEntry) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -468,7 +464,7 @@ public class NcsaRequestLogTest
|
|||
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("data")
|
||||
@MethodSource("scenarios")
|
||||
public void testErrorHandler(String logType, Handler testHandler, String requestPath, String expectedLogEntry) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -503,7 +499,7 @@ public class NcsaRequestLogTest
|
|||
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("data")
|
||||
@MethodSource("scenarios")
|
||||
public void testOKErrorHandler(String logType, Handler testHandler, String requestPath, String expectedLogEntry) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -531,7 +527,7 @@ public class NcsaRequestLogTest
|
|||
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("data")
|
||||
@MethodSource("scenarios")
|
||||
public void testAsyncDispatch(String logType, Handler testHandler, String requestPath, String expectedLogEntry) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
@ -562,7 +558,7 @@ public class NcsaRequestLogTest
|
|||
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("data")
|
||||
@MethodSource("scenarios")
|
||||
public void testAsyncComplete(String logType, Handler testHandler, String requestPath, String expectedLogEntry) throws Exception
|
||||
{
|
||||
setup(logType);
|
||||
|
|
|
@ -55,7 +55,6 @@ import org.eclipse.jetty.util.thread.QueuedThreadPool;
|
|||
import org.eclipse.jetty.webapp.Configurations;
|
||||
import org.eclipse.jetty.webapp.MetaInfConfiguration;
|
||||
import org.eclipse.jetty.webapp.WebAppContext;
|
||||
import org.eclipse.jetty.webapp.WebInfConfiguration;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
|
||||
@Disabled("Not a test case")
|
||||
|
|
Loading…
Reference in New Issue