da1cdf95cf6d14b31f3e48111b6fabe340b70e8d
[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.text.SimpleDateFormat;
8 import java.util.Date;
9 import java.util.Locale;
10 import java.util.logging.Level;
11 import java.util.logging.Logger;
12
13 import javax.servlet.http.HttpServletRequest;
14
15 public class RequesterLog {
16         public static final RequesterLog singleton = new RequesterLog();
17         private Writer writer;
18         private Logger LOG = Logger.getLogger(RequesterLog.class.getName());
19         private SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss Z", Locale.US);
20         
21         public void writeRequest(HttpServletRequest rq) {          
22                 try {
23                         synchronized(this) {
24                                 if (writer == null)
25                                         writer = new BufferedWriter(new FileWriter("access.log", true), 1024);
26                         }
27                 
28                         synchronized (writer) {
29                                 writer.write("[" + dateFormat.format(new Date()) + "] ");
30                                 writer.write(rq.getRemoteAddr() + " " + rq.getRequestURI() + " " + rq.getQueryString());
31                                 writer.write(" " + rq.getHeader("User-Agent"));
32                                 writer.write("\n");
33                                 writer.flush();
34                         }
35                 } catch (IOException e) {
36                         LOG.log(Level.SEVERE, "Fails to log requester information", e);
37                 }
38         }
39 }