X-Git-Url: http://git.wpitchoune.net/gitweb/?p=pnews.git;a=blobdiff_plain;f=war%2Fsrc%2Fmain%2Fjava%2Fnet%2Fwpitchoune%2Fpnews%2Fservlet%2FRequesterLog.java;fp=war%2Fsrc%2Fmain%2Fjava%2Fnet%2Fwpitchoune%2Fpnews%2Fservlet%2FRequesterLog.java;h=4dce08342b06cfbec46f45b679a454153f06d491;hp=0000000000000000000000000000000000000000;hb=a0c6addfd9ac6ac45f37b4202e787602c40e6bf7;hpb=aff83c8798602b535d13edeaffdb8f4238e2bbf5 diff --git a/war/src/main/java/net/wpitchoune/pnews/servlet/RequesterLog.java b/war/src/main/java/net/wpitchoune/pnews/servlet/RequesterLog.java new file mode 100644 index 0000000..4dce083 --- /dev/null +++ b/war/src/main/java/net/wpitchoune/pnews/servlet/RequesterLog.java @@ -0,0 +1,39 @@ +package net.wpitchoune.pnews.servlet; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Writer; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.servlet.http.HttpServletRequest; + +public class RequesterLog { + public static final RequesterLog singleton = new RequesterLog(); + private Writer writer; + private Logger LOG = Logger.getLogger(RequesterLog.class.getName()); + private SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss Z", Locale.US); + + public void writeRequest(HttpServletRequest rq) { + try { + synchronized(this) { + if (writer == null) + writer = new BufferedWriter(new FileWriter("access.log", true), 1024); + } + + synchronized (writer) { + writer.write("[" + dateFormat.format(new Date()) + "] "); + writer.write(rq.getRemoteAddr() + " " + rq.getRequestURI() + " " + rq.getQueryString()); + writer.write(" " + rq.getHeader("User-Agent")); + writer.write("\n"); + writer.flush(); + } + } catch (IOException e) { + LOG.log(Level.SEVERE, "Fails to log requester information", e); + } + } +}