cleanup, moved to net.wpitchoune package
[pnews.git] / war / src / main / java / net / wpitchoune / pnews / servlet / RequesterLog.java
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 (file)
index 0000000..4dce083
--- /dev/null
@@ -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);
+                }
+        }
+}