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