NAME
   Log::Dispatch::DBI - Class for logging to database via DBI interface

SYNOPSIS
     use Log::Dispatch::DBI;

     my $log = Log::Dispatch::DBI->new(
         name       => 'dbi',
         min_level  => 'info',
         datasource => 'dbi:mysql:log',
         username   => 'user',
         password   => 'password',
         table      => 'logging',
     );

     # Or, if your handle is alreaady connected
     $log = Log::Dispatch::DBI->new(
         name => 'dbi',
         min_level => 'info',
         dbh  => $dbh,
     );

     $log->log(level => 'emergency', messsage => 'something BAD happened');

DESCRIPTION
   Log::Dispatch::DBI is a subclass of Log::Dispatch::Output, which inserts
   logging output into relational database using DBI interface.

METHODS
   new $log = Log::Dispatch::DBI->new(%params);

       This method takes a hash of parameters. The following options are
       valid:

   -- name, min_level, max_level, callbacks
       Same as various Log::Dispatch::* classes.

   -- dbh
       Database handle where Log::Dispatch::DBI throws log message.

   -- datasource, username, password
       If database connection is not yet established, put the DSN, username
       and password for DBI connect method. Destructor method of
       Log::Dispatch::DBI disconnects database handle, if the handle is
       made inside by these parameters. (The method does not disconnect the
       handle if it's supplied with `dbh' parameter.)

   -- table
       Table name for logging. default is log.

   log_message
       inherited from Log::Dispatch::Output.

TABLE SCHEMA
   Maybe something like this for MySQL.

     CREATE TABLE log (
         id        int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
         level     varchar(9) NOT NULL,
         message   text NOT NULL,
         timestamp timestamp
     );

   For example,

     $log->log(level => 'info', message => 'too bad');

   will execute the following SQL:

     INSERT INTO log (level, message) VALUES ('info', 'too bad');

   If you change this behaviour, what you should do is to subclass
   Log::Dispatch::DBI and override `create_statement' and `log_message'
   method.

AUTHOR
   Tatsuhiko Miyagawa <[email protected]>

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

SEE ALSO
   the Log::Dispatch manpage, the DBI manpage, the Log::Dispatch::Config
   manpage