@Priority(value=-2147483648) public class MaskingLoggingFilter extends Object implements javax.ws.rs.client.ClientRequestFilter, javax.ws.rs.client.ClientResponseFilter, javax.ws.rs.ext.WriterInterceptor
| Modifier and Type | Class and Description |
|---|---|
protected class |
MaskingLoggingFilter.LoggingStream
This class is responsible for logging the request entities, it will truncate at maxEntitySize
and add "...more..." to the end of the entity log string.
|
| Modifier and Type | Field and Description |
|---|---|
protected AtomicLong |
_id |
static List<String> |
DEFAULT_MASKED_HEADER_NAMES
Default list of header names that should be masked.
|
protected static String |
ENTITY_STREAM_PROPERTY
Property name for the entity stream property
|
protected Level |
level |
protected Logger |
logger |
protected static String |
LOGGING_ID_PROPERTY
Property name for the logging record id property
|
protected Set<String> |
maskedHeaderNames |
protected int |
maxEntitySize |
protected static String |
REQUEST_PREFIX
Prefix for request log entries.
|
protected static String |
RESPONSE_PREFIX
Prefix for response log entries.
|
protected static String |
SECTION_PREFIX
Prefix that marks the beginning of a request or response section.
|
| Constructor and Description |
|---|
MaskingLoggingFilter(Logger logger,
Level level)
Creates a masking logging filter for the specified logger with entity logging disabled.
|
MaskingLoggingFilter(Logger logger,
Level level,
int maxEntitySize)
Creates a masking logging filter for the specified logger.
|
MaskingLoggingFilter(Logger logger,
Level level,
int maxEntitySize,
List<String> maskedHeaderNames)
Creates a masking logging filter for the specified logger.
|
MaskingLoggingFilter(Logger logger,
Level level,
List<String> maskedHeaderNames)
Creates a masking logging filter for the specified logger with entity logging disabled.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addMaskedHeaderName(String maskedHeaderName)
Add a header name to the list of masked header names.
|
protected StringBuilder |
appendId(StringBuilder sb,
long id) |
void |
aroundWriteTo(javax.ws.rs.ext.WriterInterceptorContext context) |
protected void |
buildEntityLogString(StringBuilder sb,
byte[] entity,
int entitySize,
Charset charset) |
void |
filter(javax.ws.rs.client.ClientRequestContext requestContext) |
void |
filter(javax.ws.rs.client.ClientRequestContext requestContext,
javax.ws.rs.client.ClientResponseContext responseContext) |
protected Set<Map.Entry<String,List<String>>> |
getSortedHeaders(Set<Map.Entry<String,List<String>>> headers) |
protected void |
log(StringBuilder sb) |
protected void |
printHeaders(StringBuilder sb,
long id,
String prefix,
javax.ws.rs.core.MultivaluedMap<String,String> headers)
Logs each of the HTTP headers, masking the value of the header if the header key is
in the list of masked header names.
|
protected void |
printRequestLine(StringBuilder sb,
String note,
long id,
String method,
URI uri) |
protected void |
printResponseLine(StringBuilder sb,
String note,
long id,
int status) |
void |
setMaskedHeaderNames(List<String> maskedHeaderNames)
Set the list of header names to mask values for.
|
public static final List<String> DEFAULT_MASKED_HEADER_NAMES
protected static final String REQUEST_PREFIX
protected static final String RESPONSE_PREFIX
protected static final String SECTION_PREFIX
protected static final String ENTITY_STREAM_PROPERTY
protected static final String LOGGING_ID_PROPERTY
protected final Logger logger
protected final Level level
protected final int maxEntitySize
protected final AtomicLong _id
public MaskingLoggingFilter(Logger logger, Level level)
logger - the logger to log messages tolevel - level at which the messages will be loggedpublic MaskingLoggingFilter(Logger logger, Level level, int maxEntitySize)
logger - the logger to log messages tolevel - level at which the messages will be loggedmaxEntitySize - maximum number of entity bytes to be logged. When logging if the maxEntitySize
is reached, the entity logging will be truncated at maxEntitySize and "...more..." will be added at
the end of the log entry. If maxEntitySize is <= 0, entity logging will be disabledpublic MaskingLoggingFilter(Logger logger, Level level, List<String> maskedHeaderNames)
logger - the logger to log messages tolevel - level at which the messages will be loggedmaskedHeaderNames - a list of header names that should have the values maskedpublic MaskingLoggingFilter(Logger logger, Level level, int maxEntitySize, List<String> maskedHeaderNames)
logger - the logger to log messages tolevel - level at which the messages will be loggedmaxEntitySize - maximum number of entity bytes to be logged. When logging if the maxEntitySize
is reached, the entity logging will be truncated at maxEntitySize and "...more..." will be added at
the end of the log entry. If maxEntitySize is <= 0, entity logging will be disabledmaskedHeaderNames - a list of header names that should have the values maskedpublic void setMaskedHeaderNames(List<String> maskedHeaderNames)
maskedHeaderNames - a list of header names that should have the values masked, if null, will clear
the header names to maskpublic void addMaskedHeaderName(String maskedHeaderName)
maskedHeaderName - the masked header name to addprotected void log(StringBuilder sb)
protected StringBuilder appendId(StringBuilder sb, long id)
protected void printRequestLine(StringBuilder sb, String note, long id, String method, URI uri)
protected void printResponseLine(StringBuilder sb, String note, long id, int status)
protected Set<Map.Entry<String,List<String>>> getSortedHeaders(Set<Map.Entry<String,List<String>>> headers)
protected void printHeaders(StringBuilder sb, long id, String prefix, javax.ws.rs.core.MultivaluedMap<String,String> headers)
sb - the StringBuilder to build up the logging info inid - the ID for the logging lineprefix - the logging line prefix characterheaders - a MultiValue map holding the header keys and valuesprotected void buildEntityLogString(StringBuilder sb, byte[] entity, int entitySize, Charset charset)
public void filter(javax.ws.rs.client.ClientRequestContext requestContext)
throws IOException
filter in interface javax.ws.rs.client.ClientRequestFilterIOExceptionpublic void filter(javax.ws.rs.client.ClientRequestContext requestContext,
javax.ws.rs.client.ClientResponseContext responseContext)
throws IOException
filter in interface javax.ws.rs.client.ClientResponseFilterIOExceptionpublic void aroundWriteTo(javax.ws.rs.ext.WriterInterceptorContext context)
throws IOException,
javax.ws.rs.WebApplicationException
aroundWriteTo in interface javax.ws.rs.ext.WriterInterceptorIOExceptionjavax.ws.rs.WebApplicationExceptionCopyright © 2021. All rights reserved.