home *** CD-ROM | disk | FTP | other *** search
- package Log::Log4perl::JavaMap::JDBCAppender;
-
- use Carp;
- use strict;
- use Log::Dispatch::File;
-
-
- sub new {
- my ($class, $appender_name, $data) = @_;
- my $stderr;
-
- my $pwd = $data->{password}{value} ||
- die "'password' not supplied for appender '$appender_name', required for a '$data->{value}'\n";
-
- my $username = $data->{user}{value} ||
- $data->{username}{value} ||
- die "'user' not supplied for appender '$appender_name', required for a '$data->{value}'\n";
-
-
- my $sql = $data->{sql}{value} ||
- die "'sql' not supplied for appender '$appender_name', required for a '$data->{value}'\n";
-
-
- my $dsn;
-
- my $databaseURL = $data->{URL}{value};
- if ($databaseURL) {
- $databaseURL =~ m|^jdbc:(.+?):(.+?)://(.+?):(.+?);(.+)|;
- my $driverName = $1;
- my $databaseName = $2;
- my $hostname = $3;
- my $port = $4;
- my $params = $5;
- $dsn = "dbi:$driverName:database=$databaseName;host=$hostname;port=$port;$params";
- }elsif ($data->{datasource}{value}){
- $dsn = $data->{datasource}{value};
- }else{
- die "'databaseURL' not supplied for appender '$appender_name', required for a '$data->{value}'\n";
- }
-
-
- #this part isn't supported by log4j, it's my Log4perl
- #hack, but I think it's so useful I'm going to implement it
- #anyway
- my %bind_value_params;
- foreach my $p (keys %{$data->{params}}){
- $bind_value_params{$p} = $data->{params}{$p}{value};
- }
-
- return Log::Log4perl::Appender->new("Log::Log4perl::Appender::DBI",
- datasource => $dsn,
- username => $username,
- password => $pwd,
- sql => $sql,
- params => \%bind_value_params,
- #warp_message also not a log4j thing, but see above
- warp_message=> $data->{warp_message}{value},
- );
- }
-
- 1;
-
- =head1 NAME
-
- Log::Log4perl::JavaMap::JDBCAppender - wraps Log::Log4perl::Appender::DBI
-
- =head1 SYNOPSIS
-
-
- =head1 DESCRIPTION
-
- Possible config properties for log4j JDBCAppender are
-
- bufferSize
- sql
- password
- user
- URL - attempting to translate a JDBC URL into DBI parameters,
- let me know if you find problems
-
- Possible config properties for Log::Log4perl::Appender::DBI are
-
- bufferSize
- sql
- password
- username
- datasource
-
- usePreparedStmt 0|1
-
- (patternLayout).dontCollapseArrayRefs 0|1
-
-
- =head1 AUTHORS
-
- Kevin Goess, <cpan@goess.org>
-
- December, 2002
-
- =head1 SEE ALSO
-
- http://jakarta.apache.org/log4j/docs/
-
- Log::Log4perl::Javamap
-
- Log::Log4perl::Appender::DBI
-
- =cut
-