Log::Dispatch::DBI - Class for logging to database via DBI interface
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');
Log::Dispatch::DBI is a subclass of Log::Dispatch::Output, which inserts logging output into relational database using DBI interface.
$log = Log::Dispatch::DBI->new(%params);
This method takes a hash of parameters. The following options are valid:
Same as various Log::Dispatch::* classes.
Database handle where Log::Dispatch::DBI throws log message.
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
Table name for logging. default is log.
inherited from Log::Dispatch::Output.
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 );
$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
Tatsuhiko Miyagawa <firstname.lastname@example.org>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.