#native_company# #native_desc#
#native_cta#

Creating your own logfile Page 2

By Mattias Nilsson
on July 30, 2000

The next problem I ran into was that I would get inacurate (or no) filesize specifications in the log
because it’s not possible to find out how much content that gets generated from your PHP script. I
ended up recording the original size of the PHP3 file, as this would at least give me a hint about
how much data is actually sent each day/week/month (it’s an option – use it or don’t).
Well, not much more to say except “Here’s the code, use it!” Just include this file the first
thing you do in all your PHP scripts.

<?php

/*

 * Common Logfile Format script.

 * 

 * Author: Mattias Nilsson <mattias_at_coolt.nu>

 *

 */ 

/* User definable variables */ 

$logfile =  "clf.log";    /* Filename of log to write to */ 

$timezone =  "+0100";     /* Timezone correction */ 

$lookup_size true;     /* Set to true to enable filesize lookup */ 

$document_root =  "/usr/local/apache/share/htdocs";

/* A note about the lookup_size directive:

 * This will make this script lookup the size of the original file on disk,

 * which may or may not be the same amount of data sent to the client.

 * It does give you a hint though..

 * Oh, you have to set $document_root aswell if this should work..

 */ 

function write_to_log($str) {

    if(
$fd = @fopen($GLOBALS"logfile"],  "a")) {

    
fputs($fd$str);

    
fclose($fd);

    }

}

function get_var($name,$default) {

    if(
$var getenv($name)) {

    return 
$var;

    } else {

    return 
$default;

    }

}

if($remote_host get_var"REMOTE_HOST"false)) {

    
$remote_host get_var"REMOTE_ADDR",  "-");

}

$remote_user get_var"REMOTE_USER",  "-");

$remote_ident get_var"REMOTE_IDENT",  "-");

$server_port get_var"SERVER_PORT"80);

if(
$server_port!=80) {

    
$server_port =  ":" $server_port;

} else {

    
$server_port =  "";

}

$server_name get_var"SERVER_NAME",  "-");

$request_method get_var"REQUEST_METHOD",  "GET");

$request_uri get_var"REQUEST_URI",  "");

$user_agent get_var"HTTP_USER_AGENT",  "");

if(
$lookup_size == true && $document_root) {

    
$filename ereg_replace"?.*",  ""$request_uri);

    
$filename =  "$document_root$filename";

    if(!
$size filesize($filename)) {

    
$size 0;

    }

} else {

    
$size 0;

}

$date gmdate"d/M/Y:H:i:s");

$log "$remote_host $remote_ident $remote_user [$date $timezone] "".

    
"$request_method http://$server_name$server_port$request_uri" 200 $sizen";

write_to_log($log);

?>



–Mattias