Java: Dump Servlet Filter

Un simple filtro de Tomcat para hacer Dumps de los parametros:

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;

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 final class DumpFilter implements Filter {
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
	private volatile int id = 0;

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, 
			final FilterChain chain) throws IOException, ServletException {
		final String myId = Integer.toHexString(++id | 0x80000000);
		final String ts = formatLocalDateTime(System.currentTimeMillis());
		final StringBuilder sb = new StringBuilder(1024);
		final Enumeration<String> e = request.getParameterNames();

		while (e.hasMoreElements()) {
			final String key = e.nextElement();
			final String[] values = request.getParameterValues(key);
			sb.setLength(0);
			for (final String value : values) {
				sb.append(ts).append(" DUMP(").append(myId).append(':');
				sb.append(request.getRemoteAddr()).append(':');
				sb.append(request.getRemotePort()).append("): ");
				sb.append(key).append('=').append(value).append('\n');
			}
			System.out.print(sb.toString());
		}
		chain.doFilter(request, response);
	}

	private String formatLocalDateTime(final long millis) {
		synchronized (sdf) {
			return sdf.format(new Date(millis));
		}
	}

	@Override
	public void destroy() {
	}
}

Y la configuracion del web.xml:

    <filter>
        <filter-name>DumpFilter</filter-name>
        <filter-class>com.package.DumpFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>DumpFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

La salida sera algo asi:

2013-07-30 21:00:35,577 DUMP(80000002:127.0.0.1:5203): param1=value1
2013-07-30 21:00:35,577 DUMP(80000002:127.0.0.1:5203): param2=value2

Source code: DumpFilter.java

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: