$Id: CHANGELOG,v 1.18 2004/03/22 20:32:16 urkle Exp $ ?: ? * fixed apache.m4 to work with apache 2 setups with different include directories for APR and APU then core Apache 1.96: 2004-03-04 * fixed LogSQLPreserveFile config parameter * reworked safe_create_tables and core SQL insert routine. * renamed log_sql_* variables and typedefs to logsql_* * separated all mysql specific code to separate code module (DB abstraction) * separated TODO from Changelog * fixed default value of socket file. it's really /var/lib/mysql/mysql.sock not /tmp/mysql.sock * Documentation completely converted to Docbook * Documentation updated. (still needs more work done) * LogSQLDelayedInserts config option removed * Added DB generic LogSQLDBParam. Usage is LogSQLDBParam param value example: LogSQLDBParam tcpport 12345 * notes, cookes, headersin, headersout tables are no longer created unless they are used. 1.95: 2004-02-05 * audit and update of extract_* functions to acheive same output as mod_log_config. 1.94: 2004-02-03 * ssl loggin back in as separate module under 1.3 and 2.0 * preparsing of format tags is now done to speed up main logging loop. * fixed a nasty bug with pointer arithmetic (ick) that caused a segfault with LogSQLWhichCookies 1.93: 2004-01-20 * Compiles for apache 1.3 AND 2.0 * split apache version specific functions to seperate header files * split apache version specific includes to seperate header files * added wrapper defines for apache 1.3 * updated configure m4 scripts to detect both apache versions at the same time and assign defines as to which version was found. * made install default to not activate module in configuration files. use make activate instead * split SSL logging to separate module (still needs to be finished) 1.92: 2004-01-05 * fixed compilation issue with mysql 4.x where mysql_error returns const char * * Have SSL support compiling (though not really tested) * updated configure macros to detect mod_ssl.h * configure now uses --with-apxs instead of --with-apache * Added documentation from 1.19b (needs to be update) * Fixed an issue with dependencies in Makefile.in 1.91: 2003-12-23 * Added checks for MySQL to autoconf * fixed merge code to work correctly. * Merged in 1.19b1 changes * Hostnames are now converted to lowercase in the mass-virtual naming section. The loop that converts dots to underscores has been optimized as well. * New directive LogSQLTableType allows one to specify the kind of table that the module makes during table creation (e.g. InnoDB, MyISAM). Thanks to Jim Turner for the suggestion and patch. If your MySQL server does not support the specified type, it will create a MyISAM table instead. * Directives can now be placed in the 'main' server config and will be inherited by the virtual hosts. This means a LOT less repetition: you only specify the item once to have it inherited, but it can still be overridden on a virtualhost level. These can be specified in this manner: LogSQLTransferLogTable LogSQLTransferLogFormat LogSQLPreserveFile LogSQLNotesLogTable LogSQLHeadersInLogTable LogSQLHeadersOutLogTable LogSQLCookieLogTable LogSQLRemhostIgnore LogSQLRequestIgnore LogSQLRequestAccept LogSQLWhichNotes LogSQLWhichHeadersOut LogSQLWhichHeadersIn LogSQLWhichCookies LogSQLWhichCookie 1.90: 2003-12-22 * updated code to compile under apache 2.0 * rewrote and consolidate configuration handler routines * made all functions static. * made delayed insert configurable, instead of compile time * moved to my autoconfigure support 1.18: * Delayed inserts (a MySQL extension) are now available at compile-time. THIS IS UGLY because there seems to be a bug in the way MySQL returns errors on failed INSERT DELAYED queries. See the FAQ. * Reworked the Makefile a tad. * Added stdlib.h to the includes, some systems need it for atoi(). Added string.h to the includes just to be safe. * Reworked table creation (again). Inserts are attempted and tables are made only on ER_NO_SUCH_TABLE. This should solve all the multiple- creation-attempt issues as well as reduce overhead. * safe_mysql_query reworked; it now can be counted on to preserve_entry() if the query doesn't succeed. [Before, preserve_entry() was called separately.] * Always reset SIGPIPE to handler before leaving safe_mysql_query(). * New directive LogSQLRequestAccept, another filter for excluding things from being logged. * Alphabetized the directives in the reference section of the docs. * New format char 'a' lets one log the request arguments, i.e. the part of a CGI request after the ? character. Also put a column for this in the create_tables.sql file. Thanks to Dave Wilson for this. * Reorganized the FAQ by section. * Renamed global variables (e.g. tcp_port -> logsql_tcpport) throughout the code in order to ensure against naming conflicts. tcp_port, in particular, seemed to be causing problems / segfaults on certain systems. * Renamed safe_mysql_query() to safe_sql_query(). * Now check for minimum configuration info to establish db link and log an error if it's insufficient. 1.17: * Renamed the module mod_log_sql to conform to the project goal of database-inspecificity. * Added capability of logging Notes field. This is useful for folks using custom modules that provide loggable info in the notes, e.g. mod_gzip. A new directive LogSQLWhichNotes configures which notes to log to the notes_log table. * Added capability of logging inbound and outbound headers. New directives LogSQLWhichHeadersIn and LogSQLWhichHeadersOut configure which headers to capture. Headers are stored in their own table or tables. * Fixed potential segfault in preserve file function due to silly pfclose placement. (Only affected user if the preserve file couldn't be opened.) * Changed default socket file to /tmp/mysql.sock because that's the default on a compiled MySQL. * Put back-quotes (`) around table name so that names with dashes are legal. * Took away the prepend of /tmp to the preserve filename. Now the user can specify whatever local path they want. I figure that filesystem permissions will prevent people from doing anything really dumb, and people have requested this change. * Better checking in the extract_cookie routine. Before, it could segfault if a person specified "c" but didn't define MySQLWhichCookie. * Some code reorg/renaming for clarity and to support the new direction of database inspecificity. More to come. * Simplified error messages. * Table creation now uses safe_mysql_query and checks the result. * Config directives used to begin with MySQL, now begin with LogSQL. This is for database inspecificity. In your httpd.conf just do a search-and-replace. * More robust table-creation code with error checking. [The race condition that several users have reported may still exist, but this will go a long way toward debugging the condition.] * Fixed bug whereby a MySQL connection was abandoned on reopen; the old connection is now properly closed first. * Minor: remind user not to set createtables when massvirtual is on. * If Apache started but MySQL was unavailable, the module would do everything it was supposed to (preserve entries, etc.) but not notify the sysadmin. Added a log message to alert sysadmin if MySQL is unreachable at startup. * New config key 'I' to extract & log unique_id, provided by mod_unique_id. unique_id is the key that links separate tables (access, notes, etc.) * Migrated to the Artistic License (as used by Perl). * Moved table creation into its own callable function * Robustifying table creation * In make_combined_log.pl, backtick-quoted the table name and added an order-by clause within the select statement. * TCP port number for db connection is now configurable using LogSqlTCPPort * New directive LogSQLForcePreserve sends all log entries directly to the preserve file and *entirely bypasses* the db. Useful for debugging, but can be dangerous if you forget it's set! * Table names are now quoted in all cases with backticks in order to permit names containing dashes (since many hostnames contain dashes). * The request_method field is now created as a varchar(10) instead of (6), after it was pointed out to me that some methods can be longer than 6. * New directive LogSQLMachineID sets a string identifier for the webserver machine. This is useful if you have a cluster of many webservers and you want to differentiate between them in the logs: you can tell which log entries came from each machine and thereby analyze your loadbalacing performance. Activate with the TransferLogFormat character 'M'. Much faster than doing some sort of wacky IP addr lookup via local_addr(). * Added an alternative way of logging cookies. If you need to associate multiple cookies with each request, the new way involves using LogSQLWhichCookies (note the plural) and LogSQLCookieLogTable. * Removed LogSQLRefererIgnore references, since it was never actually activated anyway and the idea probably was of minimal value. 1.16: * Moved all the user DEFINEs inside the .c file -- splitting them between the C and the Makefile was getting just too cumbersome. * A new MySQLPreserveFile runtime config directive. In the last version the name of the preserve-file was hardcoded and therefore global across all Apache virtual servers. Now the user can configure this on a per-virthost basis. It defaults to a hardcoded value if the user does not define it. The module *always* prepends /tmp/ to the user-supplied value for security reasons. * A new MySQLSocketFile runtime config directive. In the last version the name of the MySQL socket was hardcoded. Now the user can configure this at Apache runtime. However, it is a global setting (set once) just like the rest of the actual database info is. It defaults to a hardcoded value if the user does not define it. * A new MySQLCreateTables runtime config directive. Module can now create the access table on-the-fly. Table creation takes place during the virtual server's first request and is flagged after that to avoid repetition. * A new MySQLMassVirtualHosting runtime config directive. T2002-12-18 * Delayed inserts, includes, better table creation, renamed global vars,Gravatar Christopher Powell 2002-12-18 * *** empty log message ***Gravatar Christopher Powell 2002-12-10 * Changes on route to 1.18 release (better table creation logic and workarounds...Gravatar Christopher Powell 2002-12-10 * Further Makefile reorg/cleanup, a new option to support delayed insertsGravatar Christopher Powell 2002-11-27 * More documentation work on the way to final 1.17 release.Gravatar Christopher Powell 2002-11-14 * Monster changes en route to 1.17. Esp. with new documentation.Gravatar Christopher Powell 2002-11-14 * *** empty log message ***1.17pre2Gravatar Christopher Powell 2002-09-04 * Lots of changes & bugfixes as requested on the list. Pre-1 of 1.17.1.17pre1Gravatar Christopher Powell 2002-06-27 * More effort toward next release. Now include headers in/out.Gravatar Christopher Powell 2002-05-24 * Further changes on the way to 1.17, big one was the segfault fix.Gravatar Christopher Powell 2002-05-16 * Added notes logging capability. This is a commit prior to a lot of workGravatar Christopher Powell 2002-05-14 * Moved the create_tables flag to the 'main server' and out of virtual-host1.16Gravatar Christopher Powell 2002-04-23 * Significant headway toward a releasable 1.16, passed ab testing and myGravatar Christopher Powell 2002-04-23 * Significant bugfixes and feature additions on the way to 1.16...Gravatar Christopher Powell 2002-04-21 * Fixed buglet with preserve file (needed semicolon) and updated README.1.15Gravatar Christopher Powell 2002-04-08 * Added - but did not activate - routines to handle proxy environment variables.Gravatar Christopher Powell 2002-04-08 * This is a "pre" snapshot of 1.15. Numerous changes emphasizing how SQLGravatar Christopher Powell 2002-04-02 * Ported to mysql_real_connect, made a change for the mass-virtual-hosting1.13Gravatar Christopher Powell 2002-01-15 * Added a mysql_close mechanism to the child ex