Author: chammers
Date: Sat Oct 10 16:31:07 2009
New Revision: 823882
URL: http://svn.apache.org/viewvc?rev=823882&view=rev
Log:
* Keep @ before fsockopen but afterwards test return value and not errno which
can be 0.
* Now __destruct() checks if $this->sp is really set
* If the remote host cannot be reached an LoggerException is raised instead of
silently disabling logging
* Added testcase
Modified:
incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderSocket.php
incubator/log4php/trunk/src/test/php/appenders/LoggerAppenderSocketTest.php
Modified:
incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderSocket.php
URL:
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderSocket.php?rev=823882&r1=823881&r2=823882&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderSocket.php
(original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderSocket.php Sat
Oct 10 16:31:07 2009
@@ -102,31 +102,28 @@
* Create a socket connection using defined parameters
*/
public function activateOptions() {
- $errno = 0;
- $errstr = '';
if(!$this->dry) {
$this->sp = @fsockopen($this->getRemoteHost(),
$this->getPort(), $errno, $errstr, $this->getTimeout());
- }
- if($errno) {
- $this->closed = true;
- } else {
- if($this->getUseXml()) {
- $this->xmlLayout =
LoggerReflectionUtils::createObject('LoggerLayoutXml');
- if($this->xmlLayout === null) {
- $this->setUseXml(false);
- } else {
-
$this->xmlLayout->setLocationInfo($this->getLocationInfo());
-
$this->xmlLayout->setLog4jNamespace($this->getLog4jNamespace());
- $this->xmlLayout->activateOptions();
- }
+ if ($this->sp === false) {
+ throw new LoggerException("Could not open socket to
".$this->getRemoteHost().":".$this->getPort().": $errstr ($errno)");
}
- $this->closed = false;
}
+ if($this->getUseXml()) {
+ $this->xmlLayout =
LoggerReflectionUtils::createObject('LoggerLayoutXml');
+ if($this->xmlLayout === null) {
+ $this->setUseXml(false);
+ } else {
+
$this->xmlLayout->setLocationInfo($this->getLocationInfo());
+
$this->xmlLayout->setLog4jNamespace($this->getLog4jNamespace());
+ $this->xmlLayout->activateOptions();
+ }
+ }
+ $this->closed = false;
}
public function close() {
if($this->closed != true) {
- if(!$this->dry) {
+ if(!$this->dry and $this->sp !== false) {
fclose($this->sp);
}
$this->closed = true;
Modified:
incubator/log4php/trunk/src/test/php/appenders/LoggerAppenderSocketTest.php
URL:
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/test/php/appenders/LoggerAppenderSocketTest.php?rev=823882&r1=823881&r2=823882&view=diff
==============================================================================
--- incubator/log4php/trunk/src/test/php/appenders/LoggerAppenderSocketTest.php
(original)
+++ incubator/log4php/trunk/src/test/php/appenders/LoggerAppenderSocketTest.php
Sat Oct 10 16:31:07 2009
@@ -67,4 +67,18 @@
self::assertEquals($e, $v);
}
+ /** Tests Exception due to unreachable remote host.
+ *
+ * @expectedException LoggerException
+ */
+ public function testSocketProblem() {
+ $appender = new LoggerAppenderSocket("myname ");
+ $appender->setDry(false);
+ $appender->setRemoteHost("does.not.exists");
+ $appender->setPort(1234);
+ $appender->activateOptions();
+ $event = new LoggerLoggingEvent("LoggerAppenderSocketTest", new
Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
+
+ $appender->append($event);
+ }
}