You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4php-dev@logging.apache.org by gr...@apache.org on 2009/08/19 08:51:48 UTC

svn commit: r805681 - in /incubator/log4php/trunk/src/main/php: ./ appenders/ configurators/

Author: grobmeier
Date: Wed Aug 19 06:51:47 2009
New Revision: 805681

URL: http://svn.apache.org/viewvc?rev=805681&view=rev
Log:
extracted pool from LoggerAppender for better readability and possible reusability. Improved Appender instantiation

Added:
    incubator/log4php/trunk/src/main/php/LoggerAppenderPool.php
Modified:
    incubator/log4php/trunk/src/main/php/Logger.php
    incubator/log4php/trunk/src/main/php/LoggerAppender.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderEcho.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderFile.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMail.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMailEvent.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderNull.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPDO.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPhp.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderRollingFile.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderSyslog.php
    incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php
    incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php
    incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php

Modified: incubator/log4php/trunk/src/main/php/Logger.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/Logger.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/Logger.php (original)
+++ incubator/log4php/trunk/src/main/php/Logger.php Wed Aug 19 06:51:47 2009
@@ -65,6 +65,7 @@
 		'LoggerConfiguratorXml' => '/configurators/LoggerConfiguratorXml.php',
 		'LoggerRoot' => '/LoggerRoot.php',
 		'LoggerAppender' => '/LoggerAppender.php',
+		'LoggerAppenderPool' => '/LoggerAppenderPool.php',
 		'LoggerAppenderAdodb' => '/appenders/LoggerAppenderAdodb.php',
 		'LoggerAppenderPDO' => '/appenders/LoggerAppenderPDO.php',
 		'LoggerAppenderConsole' => '/appenders/LoggerAppenderConsole.php',

Modified: incubator/log4php/trunk/src/main/php/LoggerAppender.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/LoggerAppender.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/LoggerAppender.php (original)
+++ incubator/log4php/trunk/src/main/php/LoggerAppender.php Wed Aug 19 06:51:47 2009
@@ -68,53 +68,12 @@
 	 *
 	 * @param string $name appender name
 	 */
-	public function __construct($name) {
+	public function __construct($name = '') {
 		$this->name = $name;
 		$this->clearFilters();
 	}
 
 	/**
-	 * Factory
-	 *
-	 * @param string $name appender name
-	 * @param string $class create an instance of this appender class
-	 * @return LoggerAppender
-	 */
-	public static function factory($name, $class) {
-		$class = basename($class);
-		if(!empty($class)) {
-			return new $class($name);
-		}
-		return null;
-	}
-
-	/**
-	 * Singleton
-	 *
-	 * @param string $name appender name
-	 * @param string $class create or get a reference instance of this class
-	 * @return LoggerAppender 
-	 */
-	public static function singleton($name, $class = '') {
-		static $instances;
-		
-		if(!empty($name)) {
-			if(!isset($instances[$name])) {
-				if(!empty($class)) {
-					$appender = self::factory($name, $class);
-					if($appender !== null) { 
-						$instances[$name] = $appender;
-						return $instances[$name];
-					}
-				}
-				return null;
-			}
-			return $instances[$name];				 
-		}		 
-		return null;		
-	}
-
-	/**
 	 * Add a filter to the end of the filter list.
 	 *
 	 * @param LoggerFilter $newFilter add a new LoggerFilter

Added: incubator/log4php/trunk/src/main/php/LoggerAppenderPool.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/LoggerAppenderPool.php?rev=805681&view=auto
==============================================================================
--- incubator/log4php/trunk/src/main/php/LoggerAppenderPool.php (added)
+++ incubator/log4php/trunk/src/main/php/LoggerAppenderPool.php Wed Aug 19 06:51:47 2009
@@ -0,0 +1,54 @@
+<?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.
+ *
+ */
+
+/**
+ * Pool implmentation for LoggerAppender instances
+ *
+ * @version $Revision: 795727 $
+ * @package log4php
+ */
+class LoggerAppenderPool {
+	/* Appender Pool */
+	public static $appenderPool =  null;
+	
+	/**
+	 * 
+	 *
+	 * @param string $name 
+	 * @param string $class 
+	 * @return LoggerAppender
+	 */
+	public static function getAppenderFromPool($name, $class = '') {
+		if(isset(self::$appenderPool[$name])) {
+			return self::$appenderPool[$name];
+		}
+		
+		if(empty($class)) {
+			return null;
+		}
+		
+		$appender = LoggerReflectionUtils::createObject($class);
+		$appender->setName($name);
+		if($appender !== null) { 
+			self::$appenderPool[$name] = $appender;
+			return self::$appenderPool[$name];
+		}
+		return null;		
+	}
+}

Modified: incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderEcho.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderEcho.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderEcho.php (original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderEcho.php Wed Aug 19 06:51:47 2009
@@ -33,7 +33,7 @@
 	/** boolean used internally to mark first append */
 	private $firstAppend = true;
 	
-	public function __construct($name) {
+	public function __construct($name = '') {
 	    parent::__construct($name);
 	    $this->requiresLayout = true;
 	    $this->firstAppend = true;

Modified: incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderFile.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderFile.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderFile.php (original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderFile.php Wed Aug 19 06:51:47 2009
@@ -45,7 +45,7 @@
 	 */
 	protected $fp = false;
 	
-	public function __construct($name) {
+	public function __construct($name = '') {
 		parent::__construct($name);
 		$this->requiresLayout = true;
 	}

Modified: incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMail.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMail.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMail.php (original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMail.php Wed Aug 19 06:51:47 2009
@@ -58,7 +58,7 @@
 	 *
 	 * @param string $name appender name
 	 */
-	public function __construct($name) {
+	public function __construct($name = '') {
 		parent::__construct($name);
 				$this->requiresLayout = true;
 	}

Modified: incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMailEvent.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMailEvent.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMailEvent.php (original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMailEvent.php Wed Aug 19 06:51:47 2009
@@ -72,7 +72,7 @@
 	 *
 	 * @param string $name appender name
 	 */
-	public function __construct($name) {
+	public function __construct($name = '') {
 		parent::__construct($name);
 	}
 

Modified: incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderNull.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderNull.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderNull.php (original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderNull.php Wed Aug 19 06:51:47 2009
@@ -31,10 +31,6 @@
 
 	protected $requiresLayout = false;
 	
-	public function __construct($name) {
-	    parent::__construct($name);
-	}
-	
 	public function activateOptions() {
 		$this->closed = false;
 	}

Modified: incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPDO.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPDO.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPDO.php (original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPDO.php Wed Aug 19 06:51:47 2009
@@ -57,7 +57,7 @@
      * This apender doesn't require a layout.
      * @param string $name appender name
      */
-    public function __construct($name) {
+    public function __construct($name = '') {
         parent::__construct($name);
         $this->requiresLayout = false;
     }

Modified: incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPhp.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPhp.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPhp.php (original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPhp.php Wed Aug 19 06:51:47 2009
@@ -31,7 +31,7 @@
  */ 
 class LoggerAppenderPhp extends LoggerAppender {
 
-	public function __construct($name) {
+	public function __construct($name = '') {
 		parent::__construct($name);
 		$this->requiresLayout = true;
 	}

Modified: incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderRollingFile.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderRollingFile.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderRollingFile.php (original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderRollingFile.php Wed Aug 19 06:51:47 2009
@@ -70,15 +70,6 @@
 	private $expandedFileName = null;
 
 	/**
-	 * Constructor.
-	 *
-	 * @param string $name appender name
-	 */
-	public function __construct($name) {
-		parent::__construct($name);
-	}
-	
-	/**
 	 * Returns the value of the MaxBackupIndex option.
 	 * @return integer 
 	 */

Modified: incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderSyslog.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderSyslog.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderSyslog.php (original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderSyslog.php Wed Aug 19 06:51:47 2009
@@ -73,7 +73,7 @@
 	 */
 	private $_overridePriority;
 
-	public function __construct($name) {
+	public function __construct($name = '') {
 		parent::__construct($name);
 		$this->requiresLayout = true;
 	}

Modified: incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php (original)
+++ incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php Wed Aug 19 06:51:47 2009
@@ -413,8 +413,8 @@
 			}
 		}
 
-		// Begin by removing all existing appenders.
-		$logger->removeAllAppenders();
+		// TODO: removing should be done by the logger, if necessary and wanted 
+		// $logger->removeAllAppenders();
 		while($appenderName = next($st)) {
 			$appenderName = trim($appenderName);
 			if(empty($appenderName)) {
@@ -434,25 +434,19 @@
 	 * @return LoggerAppender
 	 */
 	private function parseAppender($props, $appenderName) {
-		$appender = LoggerAppender::singleton($appenderName);
-		if($appender !== null) {
-			return $appender;
-		}
-		// Appender was not previously initialized.
+		$appender = LoggerAppenderPool::getAppenderFromPool($appenderName);
 		$prefix = self::APPENDER_PREFIX . $appenderName;
-		$layoutPrefix = $prefix . ".layout";
-		$appenderClass = @$props[$prefix];
-		if(!empty($appenderClass)) {
-			$appender = LoggerAppender::singleton($appenderName, $appenderClass);
+		if($appender === null) {
+			// Appender was not previously initialized.
+			$appenderClass = @$props[$prefix];
+			$appender = LoggerAppenderPool::getAppenderFromPool($appenderName, $appenderClass);
 			if($appender === null) {
 				return null;
 			}
-		} else {
-			return null;
 		}
 		
-		$appender->setName($appenderName);
 		if($appender->requiresLayout() ) {
+			$layoutPrefix = $prefix . ".layout";
 			$layoutClass = @$props[$layoutPrefix];
 			$layoutClass = LoggerOptionConverter::substVars($layoutClass, $props);
 			if(empty($layoutClass)) {

Modified: incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php (original)
+++ incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php Wed Aug 19 06:51:47 2009
@@ -74,7 +74,7 @@
 			
 			foreach($config['appenders'] as $appenderName => $appenderProperties) {
 				
-				$appender = LoggerAppender::singleton($appenderName, $appenderProperties['class']);
+				$appender = LoggerAppenderPool::getAppenderFromPool($appenderName, $appenderProperties['class']);
 				
 				if($appender->requiresLayout()) {
 					
@@ -114,7 +114,7 @@
 				$rootLogger->setLevel(LoggerOptionConverter::toLevel($config['rootLogger']['level'], LoggerLevel::getLevelDebug()));
 				if(isset($config['rootLogger']['appenders'])) {
 					foreach($config['rootLogger']['appenders'] as $appenderName) {
-						$appender = LoggerAppender::singleton($appenderName);
+						$appender = LoggerAppenderPool::getAppenderFromPool($appenderName);
 						if($appender !== null) {
 							$rootLogger->addAppender($appender);
 						}
@@ -133,7 +133,7 @@
 						$logger->setLevel(LoggerOptionConverter::toLevel($loggerProperties['level'], LoggerLevel::getLevelDebug()));
 						if(isset($loggerProperties['appenders'])) {
 							foreach($loggerProperties['appenders'] as $appenderName) {
-								$appender = LoggerAppender::singleton($appenderName);
+								$appender = LoggerAppenderPool::getAppenderFromPool($appenderName);
 								if($appender !== null) {
 									$logger->addAppender($appender);
 								}

Modified: incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php (original)
+++ incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php Wed Aug 19 06:51:47 2009
@@ -218,7 +218,7 @@
                 $name  = $this->subst(@$attribs['NAME']);
                 $class = $this->subst(@$attribs['CLASS']);
                 
-                $this->appender = LoggerAppender::singleton($name, $class);
+                $this->appender = LoggerAppenderPool::getAppenderFromPool($name, $class);
                 $this->state[] = self::APPENDER_STATE;
                 break;
                 
@@ -229,7 +229,7 @@
                 if (isset($attribs['REF']) and !empty($attribs['REF'])) {
                     $appenderName = $this->subst($attribs['REF']);
                     
-                    $appender = LoggerAppender::singleton($appenderName);
+                    $appender = LoggerAppenderPool::getAppenderFromPool($appenderName);
                     if ($appender !== null) {
                         switch (end($this->state)) {
                             case self::LOGGER_STATE: