Log::Handler::Output::DBI - Log messages to a database.
use Log::Handler::Output::DBI; my $log = Log::Handler::Output::DBI->new( # database connection database => 'database', driver => 'mysql', user => 'user', password => 'password', host => '127.0.0.1', port => 3306, # debugging debug => 1, # table, columns and values (as string) table => 'messages', columns => 'level, ctime, cdate, pid, hostname, caller, progname, mtime, message', values => '%level, %time, %date, %pid, %hostname, %caller, %progname, %mtime, %message', # table, columns and values (as array reference) table => 'messages', columns => [ qw/level ctime cdate pid hostname caller progname mtime message/ ], values => [ qw/%level %time %date %pid %hostname %caller %progname %mtime %message/ ], # table, columns and values (your own statement) statement => 'insert into messages (level,ctime,cdate,pid,hostname,caller,progname,mtime,message) values (?,?,?,?,?,?,?,?,?)', values => [ qw/%level %time %date %pid %hostname %caller %progname %mtime %message/ ], # if you like persistent connections and want to re-connect persistent => 1, reconnect => 1, ); $db_output->log(\%message);
This output module makes it possible to forward messages to sub routines.
Call new() to create a new Log::Handler::Output::DBI object.
new()
This function returns the last error message.
Pass the database name.
Pass the database driver.
Pass the database user for the connect.
Pass the users password.
Pass the hostname where the database is running.
Pass the port where the database is listened.
With this options you can pass the table name for the insert and the columns. You can pass the columns as string or as array. Example:
# the table name table => 'messages', # columns as string columns => 'level, ctime, cdate, pid, hostname, caller, progname, mtime, message', # columns as array columns => [ qw/level ctime cdate pid hostname caller progname mtime message/ ],
The statement would look like:
insert into message (level, ctime, cdate, pid, hostname, caller, progname, mtime, message) values (?,?,?,?,?,?,?,?,?)
With this option you can pass your own statement instead with the options table and columns.
table
columns
statement => 'insert into message (level, ctime, cdate, pid, hostname, caller, progname, mtime, message)' .' values (?,?,?,?,?,?,?,?,?)'
With this option you have to set the values for the insert.
values => '%level, %time, %date, %pid, %hostname, %caller, %progname, %mtime, %message', # or values => [ qw/%level %time %date %pid %hostname %caller %progname %mtime %message/ ],
The placeholders are identical with the pattern names that you have to pass with the option message_keys.
message_keys
%L level %T time %D date %P pid %H hostname %N newline %C caller %p progname %t mtime %m message
Take a look to the patter documentation in Log::Handler.
With this option you can enable or disable a persistent database connection and re-connect if the connection was lost.
Both options are set to 1 on default.
This option is useful if you want to pass arguments to DBI. The default is set to
{ PrintError => 0, AutoCommit => 1 }
PrintError is deactivated because this would print error messages as warnings to STDERR.
PrintError
You can pass your own arguments - and overwrite it - with
dbi_params => { PrintError => 1, AutoCommit => 0 }
With this option it's possible to enable debugging. The informations can be intercepted with $SIG{__WARN__}, otherwise they will be printed to STDERR.
Carp Params::Validate DBI your DBI driver you want to use
No exports.
Please report all bugs to <jschulz.cpan(at)bloonix.de>.
Jonny Schulz <jschulz.cpan(at)bloonix.de>.
Do you have any questions or ideas?
MAIL: <jschulz.cpan(at)bloonix.de>
If you send me a mail then add Log::Handler into the subject.
Copyright (C) 2007 by Jonny Schulz. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
To install Log::Handler, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Log::Handler
CPAN shell
perl -MCPAN -e shell install Log::Handler
For more information on module installation, please visit the detailed CPAN module installation guide.