Annotation of java/classes/org/w3c/jigsaw/http/ExtendedCommonLogger.java, revision 1.12
1.1 ylafon 1: // ExtendedCommonLogger.java
1.12 ! ylafon 2: // $Id: ExtendedCommonLogger.java,v 1.11 2001/01/07 21:50:26 ylafon Exp $
1.1 ylafon 3: // (c) COPYRIGHT MIT and INRIA, 1999.
4: // Please first read the full copyright statement in file COPYRIGHT.html
5:
6: package org.w3c.jigsaw.http ;
1.11 ylafon 7:
8: import java.net.URL;
1.1 ylafon 9:
10: import java.util.Date ;
11:
12: import org.w3c.jigsaw.auth.AuthFilter;
13:
14: /**
15: * The ExtendedCommonLogger class implements the abstract Logger class.
16: * It just rotates the log every month and use the extended log format
17: * @see org.w3c.jigsaw.http.CommonLogger
18: */
19:
20: public class ExtendedCommonLogger extends CommonLogger {
21:
22: private byte msgbuf[] = null ;
23:
24: /**
25: * Log the given HTTP transaction.
26: * This is shamelessly slow.
27: */
28:
29: public void log (Request request, Reply reply, int nbytes, long duration) {
30: Client client = request.getClient() ;
31: String entry = null ;
32: long date = reply.getDate();
33: // Compute the time zone offset, first call only.
34: if ( tz == -1 ) {
35: tz = new Date().getTimezoneOffset();
36: }
1.5 ylafon 37: Date now;
38: if (date < 0 ) {
39: now = new Date((new Date()).getTime() + tz*60*1000);
40: } else {
41: now = new Date(date + (tz*60*1000));
42: }
1.12 ! ylafon 43: // check if we need to reset the timezone
! 44: if (hour == -1) {
! 45: hour = now.getHours();
! 46: } else {
! 47: int nhour = now.getHours();
! 48: if (nhour != hour) {
! 49: hour = nhour;
! 50: tz = -1;
! 51: }
! 52: }
1.4 ylafon 53: if (rotateLevel > 0) {
54: checkLogFile(now);
1.1 ylafon 55: }
1.4 ylafon 56:
1.1 ylafon 57: String user = (String) request.getState(AuthFilter.STATE_AUTHUSER);
1.10 ylafon 58: URL urlst = (URL) request.getState(Request.ORIG_URL_STATE);
59: String requrl;
60: if (urlst == null) {
1.9 ylafon 61: requrl = request.getURL().toExternalForm();
1.10 ylafon 62: } else {
63: requrl = urlst.toExternalForm();
1.9 ylafon 64: }
1.1 ylafon 65: entry = client.getInetAddress().getHostAddress()
66: + " " + "-" // user name
67: + " " + ((user == null ) ? "-" : user) // auth user name
68: + ((now.getDate() < 10) ? " [0" : " [")
69: + (now.getDate() // current date
70: + "/" + monthnames[now.getMonth()]
71: + "/" + (now.getYear() + 1900)
1.12 ! ylafon 72: + ((hour < 10)
! 73: ? (":0" + hour)
! 74: : (":" + hour))
1.1 ylafon 75: + ((now.getMinutes() < 10)
76: ? (":0" + now.getMinutes())
77: : (":" + now.getMinutes()))
78: + ((now.getSeconds() < 10)
79: ? (":0" + now.getSeconds())
80: : (":" + now.getSeconds()))
1.6 ylafon 81: + " +0000]") // we always use GMT because of some old jdk...
1.1 ylafon 82: + " \"" + request.getMethod() // request line
1.9 ylafon 83: + " " + requrl
1.1 ylafon 84: + " " + request.getVersion()
85: + "\" " + reply.getStatus() // reply status
1.7 ylafon 86: + " " + ((nbytes < 0 ) ? "-" :
87: Integer.toString(nbytes)) // # of emited bytes
1.2 ylafon 88: + " \"" +
1.3 ylafon 89: ((request.getReferer() == null) ? "-" : request.getReferer())
1.2 ylafon 90: + "\"" // the referer (ext log)
91: + " \"" +
1.3 ylafon 92: ((request.getUserAgent() == null) ? "-" : request.getUserAgent())
1.2 ylafon 93: + "\"" // User agent
1.1 ylafon 94: + "\n" ;
95: logmsg (entry) ;
96: }
1.8 ylafon 97:
1.1 ylafon 98: /**
99: * Construct a new Logger instance.
100: */
1.8 ylafon 101:
1.1 ylafon 102: ExtendedCommonLogger () {
103: this.msgbuf = new byte[128] ;
104: }
1.8 ylafon 105:
1.1 ylafon 106: }
Webmaster