Rechercher une page de manuel
Log::Handler::Output::DBI.3pm
Langue: en
Version: 2010-05-11 (ubuntu - 24/10/10)
Section: 3 (Bibliothèques de fonctions)
Sommaire
NAME
Log::Handler::Output::DBI - Log messages to a database.SYNOPSIS
use Log::Handler::Output::DBI; my $db = Log::Handler::Output::DBI->new( # database source database => "database", driver => "mysql", host => "127.0.0.1", port => 3306, # or with "dbname" instead of "database" dbname => "database", driver => "Pg", host => "127.0.0.1", port => 5432, # or with data_source data_source => "dbi:mysql:database=database;host=127.0.0.1;port=3306", # Username and password user => "user", password => "password", # debugging debug => 1, # table, columns and values (as string) table => "messages", columns => "level ctime cdate pid hostname progname message", values => "%level %time %date %pid %hostname %progname %message", # table, columns and values (as array reference) table => "messages", columns => [ qw/level ctime cdate pid hostname progname message/ ], values => [ qw/%level %time %date %pid %hostname %progname %message/ ], # table, columns and values (your own statement) statement => "insert into messages (level,ctime,cdate,pid,hostname,progname,message) values (?,?,?,?,?,?,?)", values => [ qw/%level %time %date %pid %hostname %progname %message/ ], # if you like persistent connections and want to re-connect persistent => 1, ); my %message = ( level => "ERROR", time => "10:12:13", date => "1999-12-12", pid => $$, hostname => "localhost", progname => $0, message => "an error here" ); $db->log(\%message);
DESCRIPTION
With this output you can insert messages into a database table.METHODS
new()
Call "new()" to create a new Log::Handler::Output::DBI object.The following options are possible:
- data_source
- Set the dsn (data source name).
You can use this parameter instead of "database", "driver", "host" and "port".
- database or dbname
- Pass the database name.
- driver
- Pass the database driver.
- host
- Pass the hostname where the database is running.
- port
- Pass the port where the database is listened.
- user
- Pass the database user for the connect.
- password
- Pass the users password.
- table and columns
- 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, progname, message", # columns as array columns => [ qw/level ctime cdate pid hostname progname message/ ],
The statement would created as follows
insert into message (level, ctime, cdate, pid, hostname, progname, mtime, message) values (?,?,?,?,?,?,?)
- statement
- With this option you can pass your own statement if you don't want to you the options "table" and "columns".
statement => "insert into message (level, ctime, cdate, pid, hostname, progname, mtime, message)" ." values (?,?,?,?,?,?,?)"
- values
- With this option you have to set the values for the insert.
values => "%level, %time, %date, %pid, %hostname, %progname, %message", # or values => [ qw/%level %time %date %pid %hostname %progname %message/ ],
The placeholders are identical with the pattern names that you have to pass with the option "message_pattern" from Log::Handler.
%L level %T time %D date %P pid %H hostname %N newline %C caller %p package %f filename %l line %s subroutine %S progname %r runtime %t mtime %m message
Take a look to the documentation of Log::Handler for all possible patterns.
- persistent
- With this option you can enable or disable a persistent database connection and re-connect if the connection was lost.
This option is set to 1 on default.
- dbi_params
- 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.
You can pass your own arguments - and overwrite it - with
dbi_params => { PrintError => 1, AutoCommit => 0 }
- debug
- With this option it's possible to enable debugging. The information can be intercepted with $SIG{__WARN__}.
log()
Log a message to the database.my $db = Log::Handler::Output::DBI->new( database => "database", driver => "mysql", user => "user", password => "password", host => "127.0.0.1", port => 3306, table => "messages", columns => [ qw/level ctime message/ ], values => [ qw/%level %time %message/ ], persistent => 1, ); $db->log( message => "your message", level => "INFO", time => "2008-10-10 10:12:23", );
connect()
Connect to the database.disconnect()
Disconnect from the database.validate()
Validate a configuration.reload()
Reload with a new configuration.errstr()
This function returns the last error message.PREREQUISITES
Carp Params::Validate DBI your DBI driver you want to use
EXPORTS
No exports.REPORT BUGS
Please report all bugs to <jschulz.cpan(at)bloonix.de>.If you send me a mail then add Log::Handler into the subject.
AUTHOR
Jonny Schulz <jschulz.cpan(at)bloonix.de>.COPYRIGHT
Copyright (C) 2007-2009 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.
Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre