You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ih...@apache.org on 2012/12/31 11:56:33 UTC

[2/3] git commit: LOG4PHP-144: LoggerAppenderMail should set Content-type header

LOG4PHP-144: LoggerAppenderMail should set Content-type header

Modified appender to set the Content-type header which it retrieves
from the layout.

Also improved tests, and removed the dry mode testing. It's better to get
the appender to actually send an email. For this I used the
log4php@gmail.com address which is accessible by the Logging Services PMC.


Project: http://git-wip-us.apache.org/repos/asf/logging-log4php/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4php/commit/ae11f080
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4php/tree/ae11f080
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4php/diff/ae11f080

Branch: refs/heads/develop
Commit: ae11f080a47f0580750013cc10f1efb6c2764adb
Parents: 81ab4e1
Author: Ivan Habunek <ih...@apache.org>
Authored: Mon Dec 31 11:39:15 2012 +0100
Committer: Ivan Habunek <ih...@apache.org>
Committed: Mon Dec 31 11:47:53 2012 +0100

----------------------------------------------------------------------
 src/changes/changes.xml                           |    3 +-
 src/main/php/appenders/LoggerAppenderMail.php     |   13 ++-
 src/test/php/appenders/LoggerAppenderMailTest.php |   62 +++++++++-------
 3 files changed, 45 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4php/blob/ae11f080/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 0d60b44..03eabc2 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -20,7 +20,8 @@
 		<title>Apache log4php changelog</title>
 	</properties>
 	<body>
-		<release version="2.3.1" date="SVN">
+		<release version="develop">
+			<action date="2012-12-31" type="update" issue="LOG4PHP-144" dev="Ivan Habunek">Improved LoggerAppenderMail to set the Content-type header as defined in layout.</action>
 		</release>
 		<release version="2.3.0" date="2012-10-13">
 			<action date="2012-10-07" type="fix" issue="LOG4PHP-163" dev="Ivan Habunek" due-to="Daniel Wong" due-to-email="dan at dsmwong dot com">LoggerPatternConverter formats max incorrectly</action>

http://git-wip-us.apache.org/repos/asf/logging-log4php/blob/ae11f080/src/main/php/appenders/LoggerAppenderMail.php
----------------------------------------------------------------------
diff --git a/src/main/php/appenders/LoggerAppenderMail.php b/src/main/php/appenders/LoggerAppenderMail.php
index 9e34b40..29d88c2 100644
--- a/src/main/php/appenders/LoggerAppenderMail.php
+++ b/src/main/php/appenders/LoggerAppenderMail.php
@@ -84,12 +84,15 @@ class LoggerAppenderMail extends LoggerAppender {
 			$to = $this->to;
 	
 			if(!empty($this->body) and $from !== null and $to !== null and $this->layout !== null) {
-				$subject = $this->subject;
 				if(!$this->dry) {
-					mail(
-						$to, $subject, 
-						$this->layout->getHeader() . $this->body . $this->layout->getFooter(),
-						"From: {$from}\r\n");
+					$message = $this->layout->getHeader() . $this->body . $this->layout->getFooter();
+					$subject = $this->subject;
+					$contentType = $this->layout->getContentType();
+					
+					$headers = "From: {$from}\r\n";
+					$headers .= "Content-Type: {$contentType}\r\n";
+					
+					mail($to, $subject, $message, $headers);
 				} else {
 				    echo "DRY MODE OF MAIL APP.: Send mail to: ".$to." with content: ".$this->body;
 				}

http://git-wip-us.apache.org/repos/asf/logging-log4php/blob/ae11f080/src/test/php/appenders/LoggerAppenderMailTest.php
----------------------------------------------------------------------
diff --git a/src/test/php/appenders/LoggerAppenderMailTest.php b/src/test/php/appenders/LoggerAppenderMailTest.php
index 8dffd8c..a08c4c2 100644
--- a/src/test/php/appenders/LoggerAppenderMailTest.php
+++ b/src/test/php/appenders/LoggerAppenderMailTest.php
@@ -6,16 +6,16 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- * 
- * @category   tests   
+ *
+ * @category   tests
  * @package    log4php
  * @subpackage appenders
  * @license    http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
@@ -26,34 +26,42 @@
  * @group appenders
  */
 class LoggerAppenderMailTest extends PHPUnit_Framework_TestCase {
-        
+
 	public function testRequiresLayout() {
-		$appender = new LoggerAppenderMail(); 
+		$appender = new LoggerAppenderMail();
 		self::assertTrue($appender->requiresLayout());
 	}
-	
+
 	public function testMail() {
-		$appender = new LoggerAppenderMail("myname ");
-		
-		$layout = new LoggerLayoutSimple();
-		$appender->setLayout($layout);
-		$appender->setDry(true);
-		$appender->setTo('test@example.com');
-		$appender->setFrom('Testsender');
-		
+		$appender = new LoggerAppenderMail("testAppender");
+		$appender->setTo('log4php@gmail.com');
+		$appender->setFrom('log4php@localhost');
+		$appender->setSubject("Testing text/plain " . date('Y-m-d H:i:s'));
 		$appender->activateOptions();
-		$event = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
-		$event2 = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage2");
-		 
-		ob_start();
-		$appender->append($event);
-		$appender->append($event2);
+
+		$appender->append(LoggerTestHelper::getTraceEvent('tracing'));
+		$appender->append(LoggerTestHelper::getDebugEvent('debugging'));
+		$appender->append(LoggerTestHelper::getInfoEvent('informing'));
+		$appender->append(LoggerTestHelper::getWarnEvent('warning'));
+		$appender->append(LoggerTestHelper::getErrorEvent('erring'));
+		$appender->append(LoggerTestHelper::getFatalEvent('fatality!'));
 		$appender->close();
-		$v = ob_get_contents();
-		ob_end_clean();
+	}
 
-		$e = "DRY MODE OF MAIL APP.: Send mail to: test@example.com with content: ERROR - testmessage".PHP_EOL."ERROR - testmessage2".PHP_EOL;
-		self::assertEquals($e, $v);
-    }
-    
+	public function testMailHTML() {
+		$appender = new LoggerAppenderMail("testAppender");
+		$appender->setLayout(new LoggerLayoutHtml());
+		$appender->setTo('log4php@gmail.com');
+		$appender->setFrom('log4php@localhost');
+		$appender->setSubject("Testing text/html " . date('Y-m-d H:i:s'));
+		$appender->activateOptions();
+
+		$appender->append(LoggerTestHelper::getTraceEvent('tracing'));
+		$appender->append(LoggerTestHelper::getDebugEvent('debugging'));
+		$appender->append(LoggerTestHelper::getInfoEvent('informing'));
+		$appender->append(LoggerTestHelper::getWarnEvent('warning'));
+		$appender->append(LoggerTestHelper::getErrorEvent('erring'));
+		$appender->append(LoggerTestHelper::getFatalEvent('fatality!'));
+		$appender->close();
+	}
 }