Annotation of java/classes/org/w3c/jigsaw/http/ExtendedCommonLogger.java, revision 1.3.4.1

1.1       ylafon      1: // ExtendedCommonLogger.java
1.3.4.1 ! ylafon      2: // $Id: ExtendedCommonLogger.java,v 1.4 2000/02/25 10:19:07 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 ;
                      7: 
                      8: import java.io.* ;
                      9: import java.util.Date ;
                     10: 
                     11: import org.w3c.jigsaw.daemon.*;
                     12: import org.w3c.jigsaw.auth.AuthFilter;
                     13: import org.w3c.util.*;
                     14: 
                     15: /**
                     16:  * The ExtendedCommonLogger class implements the abstract Logger class.
                     17:  * It just rotates the log every month and use the extended log format
                     18:  * @see org.w3c.jigsaw.http.CommonLogger
                     19:  */
                     20: 
                     21: 
                     22: public class ExtendedCommonLogger extends CommonLogger {
                     23: 
                     24:     private   byte                 msgbuf[] = null ;
                     25: 
                     26:     /**
                     27:      * Log the given HTTP transaction.
                     28:      * This is shamelessly slow.
                     29:      */
                     30: 
                     31:     public void log (Request request, Reply reply, int nbytes, long duration) {
                     32:        Client client = request.getClient() ;
                     33:        String entry  = null ;
                     34:        long   date   = reply.getDate();
                     35:        // Compute the time zone offset, first call only.
                     36:        if ( tz == -1 ) {
                     37:            tz = new Date().getTimezoneOffset();
                     38:        }
                     39:        Date   now    = (date < 0) ? new Date() : new Date(date+(tz*60*1000));
                     40: 
1.3.4.1 ! ylafon     41:        if (rotateLevel > 0) {
        !            42:            checkLogFile(now);
1.1       ylafon     43:        }
1.3.4.1 ! ylafon     44: 
1.1       ylafon     45:        String user = (String) request.getState(AuthFilter.STATE_AUTHUSER);
                     46: 
                     47:        entry = client.getInetAddress().getHostAddress()
                     48:            + " " + "-"                            // user name
                     49:            + " " + ((user == null ) ? "-" : user) // auth user name
                     50:            + ((now.getDate() < 10) ? " [0" : " [")
                     51:            + (now.getDate()                       // current date
                     52:               + "/" + monthnames[now.getMonth()]
                     53:               + "/" + (now.getYear() + 1900)
                     54:               + ((now.getHours() < 10)
                     55:                  ? (":0" + now.getHours())
                     56:                  : (":" + now.getHours()))
                     57:               + ((now.getMinutes() < 10)
                     58:                  ? (":0" + now.getMinutes())
                     59:                  : (":" + now.getMinutes()))
                     60:               + ((now.getSeconds() < 10)
                     61:                  ? (":0" + now.getSeconds())
                     62:                  : (":" + now.getSeconds()))
                     63:               + ((date<0) ?
                     64:                  ((now.getTimezoneOffset() < 0)
                     65:                   ? " " + (now.getTimezoneOffset() / 60)
                     66:                   : " +" + (now.getTimezoneOffset() / 60))
                     67:                  : " +0")
                     68:               + "]")
                     69:            + " \"" + request.getMethod()       // request line
                     70:            + " " + request.getURL()
                     71:            + " " + request.getVersion()
                     72:            + "\" " + reply.getStatus()         // reply status
                     73:            + " " + nbytes                      // # of emited bytes
1.2       ylafon     74:            + " \"" + 
1.3       ylafon     75:            ((request.getReferer() == null) ? "-" : request.getReferer())
1.2       ylafon     76:            + "\"" // the referer (ext log)
                     77:            + " \"" + 
1.3       ylafon     78:            ((request.getUserAgent() == null) ? "-" : request.getUserAgent())
1.2       ylafon     79:            + "\"" // User agent
1.1       ylafon     80:            + "\n" ;
                     81:        logmsg (entry) ;
                     82:     }
                     83:     
                     84:     /**
                     85:      * Construct a new Logger instance.
                     86:      */
                     87:      
                     88:     ExtendedCommonLogger () {
                     89:        this.msgbuf = new byte[128] ;
                     90:     }   
                     91:     
                     92: }

Webmaster