package Log::Log4perl::JavaMap::JDBCAppender; use Carp; use strict; 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, December, 2002 =head1 SEE ALSO http://jakarta.apache.org/log4j/docs/ Log::Log4perl::Javamap Log::Log4perl::Appender::DBI =cut