package com.revolsys.ui.web.servlet;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import com.revolsys.logging.Logs;
import com.revolsys.ui.web.utils.HttpServletUtils;
public final class HttpServletLogUtil {
public static void logRequestException(final Object logCategory, final HttpServletRequest request,
final Throwable exception) {
logRequestException(logCategory, request, exception, null);
}
public static void logRequestException(final Object logCategory, final HttpServletRequest request,
final Throwable exception, final String[] headerNames) {
if (!(exception instanceof IOException) && !exception.getMessage().contains("Broken pipe")) {
if (request.getAttribute("LogException") != exception) {
final StringBuilder text = new StringBuilder();
final String message = exception.getMessage();
if (message != null) {
text.append(message);
}
final String method = request.getMethod();
final StringBuffer requestURL = request.getRequestURL();
final String query = request.getQueryString();
requestURL.insert(0, method + " ");
if (query != null) {
requestURL.append('?').append(query);
}
text.append('\n').append("URL\t").append(requestURL);
final String referer = request.getHeader("Referer");
if (referer != null) {
text.append('\n').append("Referer\t").append(referer);
}
final String remoteUser = request.getRemoteUser();
if (remoteUser != null) {
text.append('\n').append("RemoteUser\t").append(remoteUser);
}
if (headerNames != null) {
for (final String headerName : headerNames) {
final String value = request.getHeader(headerName);
if (value != null) {
text.append('\n').append(headerName).append('\t').append(value);
}
}
}
Logs.error(logCategory, text.toString(), exception);
request.setAttribute("LogException", exception);
}
}
}
public static void logRequestException(final Object logCategory, final Throwable exception) {
final HttpServletRequest request = HttpServletUtils.getRequest();
logRequestException(logCategory, request, exception, null);
}
private HttpServletLogUtil() {
}
}