Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Log::Handler::Output::User3Contributed Perl DocumeLog::Handler::Output::DBI(3)

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",
	   );

       Or you can connect to the database yourself. You	should notice that if
       the database connection lost then the logger can't re-connect to	the
       database	and would return an error. Use "dbi_handle" at your own	risk.

	   my $dbh = DBI->connect(...);

	   my $db = Log::Handler::Output::DBI->new(
	       dbi_handle => $dbh,
	       table	  => "messages",
	       columns	  => [ qw/level	ctime message/ ],
	       values	  => [ qw/%level %time %message/ ],
	   );

   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.

perl v5.24.1			  2013-11-03	  Log::Handler::Output::DBI(3)

NAME | SYNOPSIS | DESCRIPTION | METHODS | PREREQUISITES | EXPORTS | REPORT BUGS | AUTHOR | COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Log::Handler::Output::DBI&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help