Author: ihabunek Date: Sat Aug 18 10:22:19 2012 New Revision: 1374546 URL: http://svn.apache.org/viewvc?rev=1374546&view=rev Log: LoggerAppenderPDO: Fixed reconnect logic. Modified: logging/log4php/trunk/src/main/php/appenders/LoggerAppenderPDO.php Modified: logging/log4php/trunk/src/main/php/appenders/LoggerAppenderPDO.php URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/main/php/appenders/LoggerAppenderPDO.php?rev=1374546&r1=1374545&r2=1374546&view=diff ============================================================================== --- logging/log4php/trunk/src/main/php/appenders/LoggerAppenderPDO.php (original) +++ logging/log4php/trunk/src/main/php/appenders/LoggerAppenderPDO.php Sat Aug 18 10:22:19 2012 @@ -119,7 +119,7 @@ class LoggerAppenderPDO extends LoggerAp try { $this->establishConnection(); } catch (PDOException $e) { - $this->warn("Failed connecting to database: " . $e->getMessage()); + $this->warn("Failed connecting to database. Closing appender. Error: " . $e->getMessage()); $this->close(); return; } @@ -157,27 +157,24 @@ class LoggerAppenderPDO extends LoggerAp * the appender will close. */ public function append(LoggerLoggingEvent $event) { - - for ($attempt = 1; $attempt <= $this->reconnectAttempts; $attempt++) { + + for ($attempt = 1; $attempt <= $this->reconnectAttempts + 1; $attempt++) { try { - // If it's a retry, reestablish the connection - if ($attempt > 1) { - $this->establishConnection(); - } - - // Write to database - @$this->preparedInsert->execute($this->format($event)); - @$this->preparedInsert->closeCursor(); + // Attempt to write to database + $this->preparedInsert->execute($this->format($event)); + $this->preparedInsert->closeCursor(); break; } catch (PDOException $e) { $this->warn("Failed writing to database: ". $e->getMessage()); // Close the appender if it's the last attempt - if ($attempt == $this->reconnectAttempts) { - $this->warn("Failed after {$this->reconnectAttempts} attempts. Closing appender."); + if ($attempt > $this->reconnectAttempts) { + $this->warn("Failed writing to database after {$this->reconnectAttempts} reconnect attempts. Closing appender."); $this->close(); + // Otherwise reconnect and try to write again } else { $this->warn("Attempting a reconnect (attempt $attempt of {$this->reconnectAttempts})."); + $this->establishConnection(); } } }