@PreMatching
@Priority(value=-2147483648)
public final class LoggingFilter
extends java.lang.Object
implements javax.ws.rs.container.ContainerRequestFilter, javax.ws.rs.client.ClientRequestFilter, javax.ws.rs.container.ContainerResponseFilter, javax.ws.rs.client.ClientResponseFilter, javax.ws.rs.ext.WriterInterceptor
org.glassfish.jersey.logging.LoggingFeature}
Modifier and Type | Class and Description |
---|---|
private class |
LoggingFilter.LoggingStream |
Modifier and Type | Field and Description |
---|---|
private java.util.concurrent.atomic.AtomicLong |
_id |
private static java.util.Comparator<java.util.Map.Entry<java.lang.String,java.util.List<java.lang.String>>> |
COMPARATOR |
private static java.util.List<java.lang.String> |
CONFIDENTIALS_HEADERS |
private static int |
DEFAULT_MAX_ENTITY_SIZE |
private static java.lang.String |
ENTITY_LOGGER_PROPERTY |
private org.slf4j.Logger |
logger |
private static java.lang.String |
LOGGING_ID_PROPERTY |
private int |
maxEntitySize |
private static java.lang.String |
NOTIFICATION_PREFIX |
private boolean |
printEntity |
private static java.lang.String |
REQUEST_PREFIX |
private static java.lang.String |
RESPONSE_PREFIX |
private static java.nio.charset.Charset |
UTF8 |
Constructor and Description |
---|
LoggingFilter(org.slf4j.Logger logger,
boolean printEntity)
Create a logging filter with custom logger and custom settings of entity
logging.
|
Modifier and Type | Method and Description |
---|---|
void |
aroundWriteTo(javax.ws.rs.ext.WriterInterceptorContext writerInterceptorContext) |
void |
filter(javax.ws.rs.client.ClientRequestContext context) |
void |
filter(javax.ws.rs.client.ClientRequestContext requestContext,
javax.ws.rs.client.ClientResponseContext responseContext) |
void |
filter(javax.ws.rs.container.ContainerRequestContext context) |
void |
filter(javax.ws.rs.container.ContainerRequestContext requestContext,
javax.ws.rs.container.ContainerResponseContext responseContext) |
private static java.nio.charset.Charset |
getCharset(javax.ws.rs.core.MediaType mediaType)
Get the character set from a media type.
|
private static java.util.Set<java.util.Map.Entry<java.lang.String,java.util.List<java.lang.String>>> |
getSortedHeaders(java.util.Set<java.util.Map.Entry<java.lang.String,java.util.List<java.lang.String>>> headers) |
java.lang.String |
joinHeaderValuesAsCommaSeparatedString(java.util.Map.Entry<java.lang.String,java.util.List<java.lang.String>> headerEntry) |
private void |
log(java.lang.StringBuilder b) |
private java.io.InputStream |
logInboundEntity(java.lang.StringBuilder b,
java.io.InputStream stream,
java.nio.charset.Charset charset) |
private static java.lang.StringBuilder |
prefixId(java.lang.StringBuilder b,
long id) |
private void |
printPrefixedHeaders(java.lang.StringBuilder b,
long id,
java.lang.String prefix,
javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> headers) |
private static void |
printRequestLine(java.lang.StringBuilder b,
java.lang.String note,
long id,
java.lang.String method,
java.net.URI uri) |
private static void |
printResponseLine(java.lang.StringBuilder b,
java.lang.String note,
long id,
int status) |
private static final java.nio.charset.Charset UTF8
private static final java.lang.String NOTIFICATION_PREFIX
private static final java.lang.String REQUEST_PREFIX
private static final java.lang.String RESPONSE_PREFIX
private static final java.lang.String ENTITY_LOGGER_PROPERTY
private static final java.lang.String LOGGING_ID_PROPERTY
private static final java.util.Comparator<java.util.Map.Entry<java.lang.String,java.util.List<java.lang.String>>> COMPARATOR
private static final int DEFAULT_MAX_ENTITY_SIZE
private static final java.util.List<java.lang.String> CONFIDENTIALS_HEADERS
private final org.slf4j.Logger logger
private final java.util.concurrent.atomic.AtomicLong _id
private final boolean printEntity
private final int maxEntitySize
public LoggingFilter(org.slf4j.Logger logger, boolean printEntity)
logger
- the logger to log requests and responses.printEntity
- if true, entity will be logged as well up to the default
maxEntitySize, which is 8KBprivate void log(java.lang.StringBuilder b)
private static java.lang.StringBuilder prefixId(java.lang.StringBuilder b, long id)
private static void printRequestLine(java.lang.StringBuilder b, java.lang.String note, long id, java.lang.String method, java.net.URI uri)
private static void printResponseLine(java.lang.StringBuilder b, java.lang.String note, long id, int status)
private void printPrefixedHeaders(java.lang.StringBuilder b, long id, java.lang.String prefix, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> headers)
public java.lang.String joinHeaderValuesAsCommaSeparatedString(java.util.Map.Entry<java.lang.String,java.util.List<java.lang.String>> headerEntry)
private static java.util.Set<java.util.Map.Entry<java.lang.String,java.util.List<java.lang.String>>> getSortedHeaders(java.util.Set<java.util.Map.Entry<java.lang.String,java.util.List<java.lang.String>>> headers)
private java.io.InputStream logInboundEntity(java.lang.StringBuilder b, java.io.InputStream stream, java.nio.charset.Charset charset) throws java.io.IOException
java.io.IOException
public void filter(javax.ws.rs.client.ClientRequestContext context) throws java.io.IOException
filter
in interface javax.ws.rs.client.ClientRequestFilter
java.io.IOException
public void filter(javax.ws.rs.client.ClientRequestContext requestContext, javax.ws.rs.client.ClientResponseContext responseContext) throws java.io.IOException
filter
in interface javax.ws.rs.client.ClientResponseFilter
java.io.IOException
public void filter(javax.ws.rs.container.ContainerRequestContext context) throws java.io.IOException
filter
in interface javax.ws.rs.container.ContainerRequestFilter
java.io.IOException
public void filter(javax.ws.rs.container.ContainerRequestContext requestContext, javax.ws.rs.container.ContainerResponseContext responseContext) throws java.io.IOException
filter
in interface javax.ws.rs.container.ContainerResponseFilter
java.io.IOException
public void aroundWriteTo(javax.ws.rs.ext.WriterInterceptorContext writerInterceptorContext) throws java.io.IOException, javax.ws.rs.WebApplicationException
aroundWriteTo
in interface javax.ws.rs.ext.WriterInterceptor
java.io.IOException
javax.ws.rs.WebApplicationException
private static java.nio.charset.Charset getCharset(javax.ws.rs.core.MediaType mediaType)
The character set is obtained from the media type parameter "charset".
If the parameter is not present the UTF8
charset is utilized.
m
- the media type.