Annotation of java/classes/org/w3c/jigsaw/http/ExtendedCommonLogger.java, revision 1.13
1.1 ylafon 1: // ExtendedCommonLogger.java
1.13 ! ylafon 2: // $Id: ExtendedCommonLogger.java,v 1.12 2001/02/14 17:44:27 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.13 ! ylafon 65: int minutes = now.getMinutes();
! 66: int seconds = now.getSeconds();
! 67: StringBuffer sb = new StringBuffer(512);
! 68: sb.append(client.getInetAddress().getHostAddress());
! 69: sb.append(" - ");
! 70: if (user == null) {
! 71: sb.append("- [");
! 72: } else {
! 73: sb.append(user);
! 74: sb.append(" [");
! 75: }
! 76: if (now.getDate() < 10) {
! 77: sb.append('0');
! 78: }
! 79: sb.append(now.getDate());
! 80: sb.append('/');
! 81: sb.append(monthnames[now.getMonth()]);
! 82: sb.append('/');
! 83: sb.append(now.getYear() + 1900);
! 84: sb.append(':');
! 85: if (hour < 10) {
! 86: sb.append('0');
! 87: }
! 88: sb.append(hour);
! 89: sb.append(':');
! 90: if (minutes < 10) {
! 91: sb.append('0');
! 92: }
! 93: sb.append(minutes);
! 94: sb.append(':');
! 95: if (seconds < 10) {
! 96: sb.append('0');
! 97: }
! 98: sb.append(seconds);
! 99: sb.append(" +0000] \"");
! 100: sb.append(request.getMethod());
! 101: sb.append(' ');
! 102: sb.append(requrl);
! 103: sb.append(' ');
! 104: sb.append(request.getVersion());
! 105: sb.append("\" ");
! 106: sb.append(reply.getStatus());
! 107: sb.append(' ');
! 108: if (nbytes < 0) {
! 109: sb.append('-');
! 110: } else {
! 111: sb.append(nbytes);
! 112: }
! 113: if (request.getReferer() == null) {
! 114: if (request.getUserAgent() == null) {
! 115: sb.append(" \"-\" \"-\"");
! 116: } else {
! 117: sb.append(" \"-\" \"");
! 118: sb.append(request.getUserAgent());
! 119: sb.append('\"');
! 120: }
! 121: } else {
! 122: if (request.getUserAgent() == null) {
! 123: sb.append(" \"");
! 124: sb.append(request.getReferer());
! 125: sb.append("\" \"-\"");
! 126: } else {
! 127: sb.append(" \"");
! 128: sb.append(request.getReferer());
! 129: sb.append("\" \"");
! 130: sb.append(request.getUserAgent());
! 131: sb.append('\"');
! 132: }
! 133: }
! 134: sb.append('\n');
! 135: logmsg (new String(sb)) ;
1.1 ylafon 136: }
1.8 ylafon 137:
1.1 ylafon 138: /**
139: * Construct a new Logger instance.
140: */
1.8 ylafon 141:
1.1 ylafon 142: ExtendedCommonLogger () {
143: this.msgbuf = new byte[128] ;
144: }
1.8 ylafon 145:
1.1 ylafon 146: }
Webmaster