log request info in a file accessible outstide the container
[pnews.git] / war / src / main / java / pnews / servlet / RequesterLog.java
1 package pnews.servlet;
2
3 import java.io.BufferedWriter;
4 import java.io.FileWriter;
5 import java.io.IOException;
6 import java.io.Writer;
7 import java.util.logging.Level;
8 import java.util.logging.Logger;
9
10 import javax.servlet.http.HttpServletRequest;
11
12 public class RequesterLog {
13         public static final RequesterLog singleton = new RequesterLog();
14         private Writer writer;
15         private Logger LOG = Logger.getLogger(RequesterLog.class.getName());
16         
17         public void writeRequest(HttpServletRequest rq) {          
18                 try {
19                         synchronized(this) {
20                                 if (writer == null)
21                                         writer = new BufferedWriter(new FileWriter("access.log", true), 1024);
22                         }
23                 
24                         synchronized (writer) {
25                                 writer.write(rq.getRemoteAddr() + " " + rq.getRequestURI() + " " + rq.getQueryString() + "\n");
26                                 writer.flush();
27                         }
28                 } catch (IOException e) {
29                         LOG.log(Level.SEVERE, "Fails to log requester information", e);
30                 }
31         }
32 }