NAME

Apache::AppWrap::DBILogConfig - Logs access information in a DBI database


SYNOPSIS

In httpd.conf

    PerlLogHandler     Apache::DBILogConfig
    PerlSetVar         DBILogConfig_table            mysite_log
    PerlSetVar         DBILogConfig_log_format  "%b=bytes_sent %f=filename %h=remote_host %r=request %s=status"


DESCRIPTION

This module replicates the functionality of the standard Apache module, mod_log_config, but logs information in a DBI-compliant database instead of a file. (Some documentation has been borrowed from the mod_log_config documentation. The core module is derived from the original to be found on CPAN. This version is not compatible with the CPAN version.)

The existing database handle is reused, so a connect string, user name and password need not be supplied.

If 'DBILogConfig_table' is specified in httpd.conf it is used. Otherwise a table name may be specified in table my_defaults. If neither is defined, the table for logging accesses by default is called 'accesses'.


LIST OF TOKENS

DBILogConfig_table
Table in the database for logging

DBILogConfig_log_format
A string consisting of formats separated by white space that define the data to be logged (see FORMAT STRING below)


FORMAT STRING

A format string consists of a string with the following syntax:

%[conditions][{parameter}]format=field

format

Formats specify the type of data to be logged. The following formats are accepted:

a Remote IP-address
A Local IP-address (not yet supported)
B Bytes sent, excluding HTTP headers.
b Bytes sent, excluding HTTP headers. In CLF format i.e. a '-' rather than a 0 when no bytes are sent.
c Connection status when response is completed. 'X' = connection aborted before the response completed. '+' = connection may be kept alive after the response is sent. '-' = connection will be closed after the response is sent. (not yet supported)
e The contents of the environment variable specified by parameter
f Filename
h Remote host
H The request protocol
i The contents of the header (specified by parameter) in the request sent to the server.
l Remote logname (from identd, if supplied)
m The request method
n The contents of note (specified by parameter) from another module.
o The contents of the header (specified by parameter) in the reply.
p The canonical Port of the server serving the request
P The process ID of the child that serviced the request.
q The query string (prepended with a ? if a query string exists, otherwise an empty string)
r First line of request
s Status. For requests that got internally redirected, this is the status of the *original* request.
t Time, in common log format time format or the format specified by parameter, which should be in strftime(3) format.
T The time taken to serve the request, in seconds.
u Remote user (from auth; may be bogus if return status (%s) is 401)
U The URL path requested.
v The canonical ServerName of the server serving the request.
V The server name according to the UseCanonicalName setting (not yet supported).

field

A database column to log the data to

parameter

For formats that take a parameter

Example: %{DOCUMENT_ROOT}e

conditions

Conditions are a comma-separated list of status codes. If the status of the request being logged equals one of the status codes in the condition the data specified by the format will be logged. By placing a '!' in front of the conditions, data will be logged if the request status does not match any of the conditions.

Example: %!200,304,302s=status will log the status of all requests that did not return some sort of normal status


DEBUGGING

Debugging statements will be written to the error log if LOGLEVEL is set to 'warn' or higher


PREREQUISITES


NOTE

After installing and configuring this module, Apache will continue to log to your regular access log file (if it was previously configured that way). To log accesses only to your database comment out CustomLog or TransferLog or set them to /dev/null.


AUTHOR

Copyright (C) 1998, Jason Bodnar <jason@shakabuku.org>. All rights reserved.

This module is free software; you may redistribute it and/or modify it under the same terms as Perl itself.


SEE ALSO

perl(1), mod_perl(3)