If you feel like giving me an example that accomplishes what I want to do 
below, I'd be glad to use yours too. :-)

Jim
Perl Learner

"David Davis" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
> There are quite a few DBI components for POE.  You could use one of
> those.  I'm partial to mine, but you should judge for yourself.
>
> http://cpan.teknikill.net/?poe*dbi
>
> -- 
> David Davis
> Perl Programmer
> http://teknikill.net/
>
> $7.95 per month hosting
> WITH ssh access
> http://hosting.teknikill.net/
>
> On Thu, 31 Mar 2005 11:41:28 -0500, Jim <[EMAIL PROTECTED]> wrote:
>> I have a perl Syslog server setup on a windows box because it's connected 
>> to
>> a RAID Array.  I'm using POE as the Syslog server code and I'm storing 
>> the
>> syslog data into a DB2 database.  Here is what I currently have:
>>
>> use warnings;
>> use strict;
>>
>> use POE;
>> use POE::Component::Server::Syslog;
>> use DBI;     # library for performing database functions
>> use DBD::DB2;
>> use DBD::DB2::Constants;
>> # use Mail::SendMail;
>>
>> POE::Component::Server::Syslog->spawn(
>>     BindAddress => '129.37.2.201',
>>     InputState => \&client_input,
>>     ErrorState => \&client_error,
>> );
>>
>> my $debug = 1;
>>
>> $poe_kernel->run();
>>
>> ######################################
>>
>> sub client_input {
>>
>>   # Get the syslog hash
>>   my $msg = $_[ARG0];
>>   my $databaseHandle;
>>   my $connectFailureFlag = 0;
>>   my $search;
>>   my $sth;
>>   my $dbName = "vpn";
>>   # Parse the data for DB entry
>>   $msg->{'msg'} =~ /^(.*?) (\d+)\/(\d+)\/(\d+) (\d+):(\d+):(\d+)\.(\d+)
>> SEV=. (.*?)$/;
>>
>>   if ($debug) {
>>    print "    Host: ".$msg->{'host'}."\n";
>>    print "Severity: ".$msg->{'severity'}."\n";
>>    print "     Msg: ".$msg->{'msg'}."\n";
>>    my $databaseHandle = DBI->connect("DBI:DB2:$dbName","xxxxx","xxxxxx") 
>> or
>> $connectFailureFlag = 1;
>>     if ($connectFailureFlag == 1){ warn "Unable to establish with
>> DB2:$dbName due to $DBI::errstr\n"; }
>>     elsif ($connectFailureFlag == 0){     # connected to DB
>>      $search = "INSERT INTO VPN.SYSLOG_C3K (DATE_TIME, DEVICE, SEV, MSG)
>> values('$4-$2-$3-$5.$6.$7.$8', '".$msg->{'host'}."', 
>> ".$msg->{'severity'}.",
>> '$9')";
>>       $sth = $databaseHandle->prepare("$search"); # prepare the statement 
>> to
>> read from the DB
>>       $sth->execute(); # execute the query
>>     $sth->finish;
>>      $databaseHandle->disconnect or warn "Disconnection failed:
>> $DBI::errstr\n";
>>    }
>>    print "$2.$3.$4.$5.$6.$7.$8 $1 $9\n\n";
>>   } # if ($debug)
>> }
>>
>> sub client_error {
>>   # Something went wrong with the syslog message
>>   # Figure out what to do, if anything, in this case later
>>     warn "BAD MESSAGE: $_[ARG0]";
>> }
>>
>> What I'd like to do is collect the syslog data into an array while having
>> another process pull the data out of that array and put into the 
>> database.
>> That way, I'm not creating database connections everytime I get a syslog
>> message.  Hopefully I'm clear in what I'm asking for. :-)
>>
>> 


Reply via email to