GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  LOG::HANDLER::OUTPUT::DBI (3)

.ds Aq ’

NAME

Log::Handler::Output::DBI - Log messages to a database.

CONTENTS

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:
<B>data_sourceB> Set the dsn (data source name).

You can use this parameter instead of database, driver, host and port.

<B>databaseB> or <B>dbnameB> Pass the database name.
<B>driverB> Pass the database driver.
<B>hostB> Pass the hostname where the database is running.
<B>portB> Pass the port where the database is listened.
<B>userB> Pass the database user for the connect.
<B>passwordB> Pass the users password.
<B>tableB> and <B>columnsB> 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 (?,?,?,?,?,?,?)



<B>statementB> 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 (?,?,?,?,?,?,?)"



<B>valuesB> 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.

<B>persistentB> 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.

<B>dbi_paramsB> 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 }



<B>debugB> 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.

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 LOG::HANDLER::OUTPUT::DBI (3) 2013-11-03

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.