Commit 20e3d60c by Juho Juopperi

Populate MDC logging context variables directly in HostnameFilter so no separate…

… MDCInsertingServletFilter is necessary. Also remove unused filters.
1 parent 0192b041
...@@ -29,17 +29,6 @@ ...@@ -29,17 +29,6 @@
<param-value>Development</param-value> <param-value>Development</param-value>
</context-param> </context-param>
<!-- Add req.remoteHost, req.xForwardedFor, req.requestURI, req.requestURL,
req.queryString and req.userAgent to logger MDC -->
<filter>
<filter-name>MDCInsertingServletFilter</filter-name>
<filter-class>ch.qos.logback.classic.helpers.MDCInsertingServletFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>MDCInsertingServletFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter> <filter>
<display-name>PrimefacesFileupload</display-name> <display-name>PrimefacesFileupload</display-name>
......
...@@ -112,13 +112,24 @@ public class HostnameFilter implements Filter { ...@@ -112,13 +112,24 @@ public class HostnameFilter implements Filter {
MDC.put("user", "null"); MDC.put("user", "null");
MDC.put("authtype", "null"); MDC.put("authtype", "null");
} }
MDC.put("req.remoteHost", request.getRemoteHost());
MDC.put("req.requestURI", request.getRequestURI());
MDC.put("req.queryString", request.getQueryString());
MDC.put("req.userAgent", request.getHeader("User-Agent"));
MDC.put("req.xForwardedFor", request.getHeader("X-Forwarded-For"));
} }
/** /**
* Remove user info from SLF4J MDC context. * Remove user info from SLF4J MDC context.
*/ */
void removeLoggingContext() { void removeLoggingContext() {
MDC.remove("authtype");
MDC.remove("user"); MDC.remove("user");
MDC.remove("req.xForwardedFor");
MDC.remove("req.userAgent");
MDC.remove("req.queryString");
MDC.remove("req.requestURI");
MDC.remove("req.remoteHost");
} }
/** /**
......
package fi.codecrew.moya;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class LoggingContextFilter implements Filter {
public LoggingContextFilter() {
// TODO Auto-generated constructor stub
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
package fi.codecrew.moya;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Allows defining a filter in web.xml so, that deployment doesn't blow up if
* the class is not found. E.g. Logback specific filters when logback is a
* provided dependency.
*
* @author jkj
*
*/
public class RobustFilterProxy implements Filter {
Logger log = LoggerFactory.getLogger(RobustFilterProxy.class);
private Filter wrapped = null;
public RobustFilterProxy() {
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
try {
String filterClassName = filterConfig.getInitParameter("wrapped-class");
if (filterClassName == null) {
throw new ServletException("wrapped-class init-param required");
}
log.info("Wrapped class: " + filterClassName);
Class<?> wrappedFilterClass = this.getClass().getClassLoader().loadClass(filterClassName);
// Class<?> wrapperFilterClass = Class.forName(filterClassName);
log.debug("Wrapped filter class: " + wrappedFilterClass);
wrapped = (Filter) wrappedFilterClass.newInstance();
log.debug("Wrapped filter instance: " + wrapped);
wrapped.init(filterConfig);
} catch (ClassNotFoundException e) {
log.warn("Wrapped filter class not found", e);
} catch (InstantiationException e) {
log.warn("Could not instantiate wrapper filter class", e);
} catch (IllegalAccessException e) {
log.warn("Could not wrap filter", e);
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if (wrapped != null) {
// Use the wrapped filter if available.
wrapped.doFilter(request, response, chain);
} else {
// Otherwise just work as a no-op filter calling the next filter in
// chain.
chain.doFilter(request, response);
}
}
@Override
public void destroy() {
if (wrapped != null) {
wrapped.destroy();
}
wrapped = null;
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!