public class BasicRestLogger extends Object implements RestLogger
Subclasses can override these methods to tailor logging of HTTP requests.
Subclasses MUST implement a no-arg public constructor.
RestLogger.Null
Constructor and Description |
---|
BasicRestLogger() |
Modifier and Type | Method and Description |
---|---|
protected Logger |
getLogger()
Returns the Java logger used for logging.
|
void |
log(Level level,
String msg,
Object... args)
Log a message.
|
void |
log(Level level,
Throwable cause,
String msg,
Object... args)
Log a message to the logger.
|
void |
logObjects(Level level,
String msg,
Object... args)
Same as
log(Level, String, Object...) excepts runs the arguments through JsonSerializer.DEFAULT_LAX_READABLE . |
void |
onError(javax.servlet.http.HttpServletRequest req,
javax.servlet.http.HttpServletResponse res,
RestException e)
Callback method for logging errors during HTTP requests.
|
protected boolean |
shouldLog(javax.servlet.http.HttpServletRequest req,
javax.servlet.http.HttpServletResponse res,
RestException e)
Returns
|
protected boolean |
shouldLogStackTrace(javax.servlet.http.HttpServletRequest req,
javax.servlet.http.HttpServletResponse res,
RestException e)
Returns
|
public BasicRestLogger()
protected Logger getLogger()
Subclasses can provide their own logger.
The default implementation returns the logger created using Logger.getLogger(getClass())
.
public void log(Level level, Throwable cause, String msg, Object... args)
Subclasses can override this method if they wish to log messages using a library other than Java Logging (e.g. Apache Commons Logging).
log
in interface RestLogger
level
- The log level.cause
- The cause.msg
- The message to log.args
- Optional MessageFormat
-style arguments.public void log(Level level, String msg, Object... args)
Equivalent to calling log(level,
log
in interface RestLogger
level
- The log level.msg
- The message to log.args
- Optional MessageFormat
-style arguments.public void logObjects(Level level, String msg, Object... args)
log(Level, String, Object...)
excepts runs the arguments through JsonSerializer.DEFAULT_LAX_READABLE
.
Serialization of arguments do not occur if message is not logged, so it's safe to use this method from within debug log statements.
logObjects(
logObjects
in interface RestLogger
level
- The log level.msg
- The message to log.args
- Optional MessageFormat
-style arguments.public void onError(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res, RestException e)
Typically, subclasses will override this method and log errors themselves.
The default implementation simply logs errors to the RestServlet
logger.
Here's a typical implementation showing how stack trace hashing can be used to reduce log file sizes...
onError
in interface RestLogger
req
- The servlet request object.res
- The servlet response object.e
- Exception indicating what error occurred.protected boolean shouldLog(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res, RestException e)
Subclasses can override this method to provide their own logic for determining when exceptions are logged.
The default implementation will return No-Trace: true
is specified in the header.
req
- The HTTP request.res
- The HTTP response.e
- The exception.protected boolean shouldLogStackTrace(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res, RestException e)
Subclasses can override this method to provide their own logic for determining when stack traces are logged.
The default implementation will only log a stack trace if RestException.getOccurrence()
returns
1
and the exception is not one of the following:
HttpServletResponse.SC_UNAUTHORIZED
HttpServletResponse.SC_FORBIDDEN
HttpServletResponse.SC_NOT_FOUND
req
- The HTTP request.res
- The HTTP response.e
- The exception.Copyright © 2018 Apache. All rights reserved.