--- /dev/null
+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);
+ }
+ }
+}