logging-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ihabu...@apache.org
Subject svn commit: r1187892 - in /logging/log4php/trunk/src: changes/changes.xml main/php/Logger.php main/php/layouts/LoggerLayoutSerialized.php test/php/layouts/LoggerLayoutSerializedTest.php
Date Sun, 23 Oct 2011 14:21:01 GMT
Author: ihabunek
Date: Sun Oct 23 14:21:01 2011
New Revision: 1187892

URL: http://svn.apache.org/viewvc?rev=1187892&view=rev
Log:
LOG4PHP-155: New layout LoggerLayoutSerialized

Added:
    logging/log4php/trunk/src/main/php/layouts/LoggerLayoutSerialized.php
    logging/log4php/trunk/src/test/php/layouts/LoggerLayoutSerializedTest.php
Modified:
    logging/log4php/trunk/src/changes/changes.xml
    logging/log4php/trunk/src/main/php/Logger.php

Modified: logging/log4php/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/changes/changes.xml?rev=1187892&r1=1187891&r2=1187892&view=diff
==============================================================================
--- logging/log4php/trunk/src/changes/changes.xml (original)
+++ logging/log4php/trunk/src/changes/changes.xml Sun Oct 23 14:21:01 2011
@@ -21,6 +21,7 @@
 	</properties>
 	<body>
 	    <release version="2.2.0" date="SVN">
+	    	<action date="2011-10-23" type="add" issue="LOG4PHP-155" dev="Ivan Habunek">Created
a new layout LoggerLayoutSerialized which formats events as serialized objects.</action>
 	    	<action date="2011-10-23" type="fix" issue="LOG4PHP-159" dev="Ivan Habunek" due-to="Justin
Cherniak" due-to-email="justin dot cherniak at gmail dot com">Appenders do not close gracefully
if a fatal error occurs.</action>
 	    	<action date="2011-10-15" type="update" issue="LOG4PHP-152" dev="Ivan Habunek">A
rewrite of the configurator.</action>
 	    	<action date="2011-09-03" type="fix" issue="LOG4PHP-145" dev="Ivan Habunek">The
syslog appender does not correctly parse options</action>

Modified: logging/log4php/trunk/src/main/php/Logger.php
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/main/php/Logger.php?rev=1187892&r1=1187891&r2=1187892&view=diff
==============================================================================
--- logging/log4php/trunk/src/main/php/Logger.php (original)
+++ logging/log4php/trunk/src/main/php/Logger.php Sun Oct 23 14:21:01 2011
@@ -97,6 +97,7 @@ class Logger {
 		'LoggerLayoutSimple' => '/layouts/LoggerLayoutSimple.php',
 		'LoggerLayoutTTCC' => '/layouts/LoggerLayoutTTCC.php',
 		'LoggerLayoutPattern' => '/layouts/LoggerLayoutPattern.php',
+		'LoggerLayoutSerialized' => '/layouts/LoggerLayoutSerialized.php',
 		'LoggerLayoutXml' => '/layouts/LoggerLayoutXml.php',
 		'LoggerRendererDefault' => '/renderers/LoggerRendererDefault.php',
 		'LoggerRendererObject' => '/renderers/LoggerRendererObject.php',

Added: logging/log4php/trunk/src/main/php/layouts/LoggerLayoutSerialized.php
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/main/php/layouts/LoggerLayoutSerialized.php?rev=1187892&view=auto
==============================================================================
--- logging/log4php/trunk/src/main/php/layouts/LoggerLayoutSerialized.php (added)
+++ logging/log4php/trunk/src/main/php/layouts/LoggerLayoutSerialized.php Sun Oct 23 14:21:01
2011
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ *
+ * @package log4php
+ */
+
+/**
+ * Layout which formats the events using PHP's serialize() function.
+ * 
+ * Available options:
+ * - locationInfo - If set to true, the event's location information will also
+ *                  be serialized (slow, defaults to false).
+ * 
+ * @version $Revision: 1059292 $
+ * @package log4php
+ * @subpackage layouts
+ * @since 2.2
+ */  
+class LoggerLayoutSerialized extends LoggerLayout {
+	
+	/** Whether to include the event's location information (slow). */
+	private $locationInfo = false;
+	
+	/** Sets the location information flag. */
+	public function setLocationInfo($value) {
+		try {
+			$this->locationInfo = LoggerOptionConverter::toBooleanEx($value);
+		} catch (Exception $ex) {
+			$strVal = var_export($value, true);
+			$default = var_export($this->locationInfo, true);
+			$this->warn("Invalid value provided for locationInfo: [$strVal]. Expected a boolean.
Using default value: [$default].");
+		}
+	}
+	
+	/** Returns the location information flag. */
+	public function getLocationInfo() {
+		return $this->locationInfo;
+	}
+	
+	public function format(LoggerLoggingEvent $event) {
+		// If required, initialize the location data
+		if($this->locationInfo) {
+			$event->getLocationInformation();
+		}
+		return serialize($event) . PHP_EOL;
+	}
+}

Added: logging/log4php/trunk/src/test/php/layouts/LoggerLayoutSerializedTest.php
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/test/php/layouts/LoggerLayoutSerializedTest.php?rev=1187892&view=auto
==============================================================================
--- logging/log4php/trunk/src/test/php/layouts/LoggerLayoutSerializedTest.php (added)
+++ logging/log4php/trunk/src/test/php/layouts/LoggerLayoutSerializedTest.php Sun Oct 23 14:21:01
2011
@@ -0,0 +1,107 @@
+<?php
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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   
+ * @package    log4php
+ * @subpackage appenders
+ * @license    http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
+ * @version    SVN: $Id$
+ * @link       http://logging.apache.org/log4php
+ */
+
+/**
+ * @group layouts
+ */
+class LoggerLayoutSerializedTest extends PHPUnit_Framework_TestCase {
+
+	public function testLocationInfo() {
+		$layout = new LoggerLayoutSerialized();
+		self::assertFalse($layout->getLocationInfo());
+		$layout->setLocationInfo(true);
+		self::assertTrue($layout->getLocationInfo());
+		$layout->setLocationInfo(false);
+		self::assertFalse($layout->getLocationInfo());
+	}
+	
+	/**
+ 	 * @expectedException PHPUnit_Framework_Error
+ 	 * @expectedExceptionMessage log4php: [LoggerLayoutSerialized]: Invalid value provided
for locationInfo: ['foo']. Expected a boolean. Using default value: [false].
+	 */
+	public function testLocationInfoFail() {
+		$layout = new LoggerLayoutSerialized();
+		$layout->setLocationInfo('foo');
+	}
+	
+	public function testLayout() {
+		Logger::configure(array(
+			'appenders' => array(
+				'default' => array(
+					'class' => 'LoggerAppenderEcho',
+					'layout' => array(
+						'class' => 'LoggerLayoutSerialized'
+					)
+				)
+			),
+			'rootLogger' => array(
+				'appenders' => array('default')
+			)
+		));
+
+		ob_start();
+		$foo = Logger::getLogger('foo');
+		$foo->info("Interesting message.");
+		$actual = ob_get_contents();
+		ob_end_clean();
+		
+		$event = unserialize($actual);
+		
+		self::assertInstanceOf('LoggerLoggingEvent', $event);
+		self::assertEquals('Interesting message.', $event->getMessage());
+		self::assertEquals(LoggerLevel::getLevelInfo(), $event->getLevel());
+	}
+	
+	public function testLayoutWithLocationInfo() {
+		Logger::configure(array(
+			'appenders' => array(
+				'default' => array(
+					'class' => 'LoggerAppenderEcho',
+					'layout' => array(
+						'class' => 'LoggerLayoutSerialized',
+						'params' => array(
+							'locationInfo' => true
+						)
+					)
+				)
+			),
+			'rootLogger' => array(
+				'appenders' => array('default')
+			)
+		));
+	
+		ob_start();
+		$foo = Logger::getLogger('foo');
+		$foo->info("Interesting message.");
+		$actual = ob_get_contents();
+		ob_end_clean();
+	
+		$event = unserialize($actual);
+	
+		self::assertInstanceOf('LoggerLoggingEvent', $event);
+		self::assertEquals('Interesting message.', $event->getMessage());
+		self::assertEquals(LoggerLevel::getLevelInfo(), $event->getLevel());
+	}
+}



Mime
View raw message