diff --git a/thirdparty/apache-log4php/CHANGELOG b/thirdparty/apache-log4php/CHANGELOG
new file mode 100644
index 0000000..2311a62
--- /dev/null
+++ b/thirdparty/apache-log4php/CHANGELOG
@@ -0,0 +1,111 @@
+log4php Change Log
+==================
+
+Version 2.0 to be released
+--------------------------
+- Bug #1: removed all @author tags. All contributors are named (with task) in the changelog file (Christian Grobmeier)
+- Bug #4: Fatal error for constructor in LoggerAppenderRollingFile (Michael Aichler)
+- Bug #5: LoggerAppenderRollingFile unable to open file and append logs (Michael Aichler)
+- Bug #7: Change copyright notices to conform to the Source Header and Copyright Notice Policy (Curt Arnold)
+- Bug #9: log4php.dtd should be reviewed (Christian Grobmeier)
+- Bug #11: trailing "\n" (Hiroaki Kawai)
+- Bug #12: LoggerAppenderFile does not create missing directories (Knut Urdalen)
+- Bug #13: LoggerPropertyConfigurator: Only variables should be assigned by reference (Michael Aichler)
+- Bug #14: LoggerPropertySetter: warnings about is_a() and non-static method (Michael Aichler)
+- Bug #15: Logger: warnings about is_a() (Michael Aichler)
+- Bug #16: Patch for LoggerAppenderSyslog to use Layouts (Gary Richardson)
+- Bug #17: %l Pattern layout raises a protected property access error (Yomei Komiya)
+- Bug #18: Date pattern %d conversion is invalid (Yomei Komiya)
+- Bug #19: Logger location info is invalid in log outputs of Logger's subclasses (Yomei Komiya)
+- Bug #20: Custom layout for LoggerAppenderPhp (Corin Lawson)
+- Bug #22: log4php.dtd invalid (Christian Grobmeier)
+- Bug #24: LoggerAppenderRollingFile unable to rollover (Dennis Korbar)
+- Bug #25: Allow to set environment variables in LoggerOptionConverter (Christian Hammers, Knut Urdalen)
+- Bug #28: LoggerAppenderConsole doesn't write to STDERR (Michael Kuenzli, Knut Urdalen)
+- Bug #33: Appenders is not properly closed upon destruction (Knut Urdalen)
+- Enh #29: Load classes through autoload instead of explicitly include them (Knut Urdalen)
+- Enh #30: Implement LoggerAppenderPDO (Christian Grobmeier)
+- Enh #31: Removing unnecessary use of LOG4PHP_DIR (Knut Urdalen)
+- Enh #34: Remove all internal debugging (Christian Grobmeier)
+- Enh #35: Replace LOG4PHP_LINE_SEP with PHP_EOL (Knut Urdalen)
+- Enh #37: removed LoggerAppenderDB in favour to LoggerAppenderPDO (Christian Grobmeier)
+- Enh #38: Replace is_a() with instanceof (Knut Urdalen)
+- Enh #39: Remove deprecated methods (Knut Urdalen)
+- Enh #40: Merge LoggerAppender and LoggerAppenderSkeleton (Christian Grobmeier)
+- Enh #44: PEAR package (Knut Urdalen)
+- Enh: Initial port to PHP 5 (Knut Urdalen)
+- Enh: Established new unit test suite (Knut Urdalen)
+- Enh: Added a range of examples (Knut Urdalen)
+- Enh: Created common ReflectionUtils class and moved factory calls to there (Christian Grobmeier)
+
+Version 0.9 December 10th, 2003
+-------------------------------
+- Enh: Added LoggerDOMConfigurator APPENDER-REF element as an APPENDER_REF alias (Marco Vassura)
+- Enh: Various changes to obtain PHP5 compatibility (not fully tested) (Marco Vassura)
+
+Version 0.8 October 28th, 2003
+------------------------------
+- Bug: Fixed LoggerDOMConfigurator CONFIGURATOR element's namespace handling (Sergio Strampelli)
+- Bug: Fixed AppenderSkeleton::setThreshold() threshold assignment (Sergio Strampelli)
+- Bug: Fixed LoggerAppenderMail::close() mail() 'to' param (Marco Vassura)
+- Bug: Fixed remoteHostname and port params getter/setter in LoggerAppenderSocket (Marco Vassura)
+
+Version 0.7 September 24th, 2003
+--------------------------------
+- Enh: Added "log4jNamespace" option to LoggerAppenderSocket (Marco Vassura)
+- Bug: Fixed LoggerXmlLayout CDATA rendering (Marco Vassura)
+- Enh: Added new tests (Marco Vassura)
+
+Version 0.6 September 15th, 2003
+--------------------------------
+- Enh: Fixed bugs and malfunctions (Marco Vassura)
+- Enh: Now LoggerDatePatternConverter supports microseconds (Marco Vassura)
+- Enh: Now Appenders report errors via LoggerLog::debug() (Marco Vassura)
+- New: Added LoggerLevelMatchFilter and LoggerLevelRangeFilter (Marco Vassura)
+- New: Added experimental hierarchy serialization support (Marco Vassura)
+
+Version 0.5 September 10th, 2003
+--------------------------------
+- New: Included LGPL License (Marco Vassura)
+- New: Added Basic and Property Configurators (Marco Vassura)
+- Enh: Rechanged init configuration system (now a log4j clone) (Marco Vassura)
+- Enh: Recoded LoggerLevel class (Marco Vassura)
+- Enh: Added Logger factory support (Marco Vassura)
+- Enh: Fixed some bugs (Marco Vassura)
+
+Version 0.4 September 2nd, 2003
+-------------------------------
+- Enh: Fixed a lot of bugs (Marco Vassura)
+- Enh: Changed configuration system (used log4j paradigma) (Marco Vassura)
+- Enh: Recoded test subdir. Now it's easy to test new classes (Marco Vassura)
+- Enh: Classes are more and better documented (Marco Vassura)
+- Enh: A new build system with apache ant (Marco Vassura)
+
+Version 0.3 August 27th, 2003
+-----------------------------
+- New: Integrated thresholds on appenders (Sergio Strampelli)
+- New: Added LoggerAppenderDailyFile (Abel Gonzalez)
+- New: Added LoggerAppenderMailEvent (Domenico Lordi)
+- New: Added LoggerAppenderDb (Marco Vassura)
+- New: Added LoggerAppenderEcho (Marco Vassura)
+- New: Added LoggerAppenderMail (Marco Vassura)
+- New: Added LoggerAppenderNull (Marco Vassura)
+- New: Added LoggerPatternLayout (Marco Vassura)
+- New: Added LoggerXmlLayout (Marco Vassura)
+- New: Object Renderer Implementation (Marco Vassura)
+- New: NDC and MDC (with extended functionalities) support (Marco Vassura)
+- Enh: Filters support with LoggerDenyAllFilter, LoggerStringMatchFilter (Marco Vassura)
+- Enh: Back trace of caller location (file,line,method) (only with PHP >= 4.3.0) (Marco Vassura)
+
+Version 0.2 February 20th, 2003
+-------------------------------
+- New: Added LoggerAppenderConsole (Marco Vassura)
+- New: Added LoggerAppenderFile (Marco Vassura)
+- New: Added LoggerAppenderPhp (Marco Vassura)
+- New: Added LoggerAppenderRollingFile (Marco Vassura)
+- New: Added LoggerAppenderSocket (Marco Vassura)
+- New: Added LoggerAppenderSyslog (Marco Vassura)
+- New: Added LoggerLayoutHtml (Marco Vassura)
+- New: Added LoggerLayoutSimple (Marco Vassura)
+- New: Added LoggerLayoutTTCC (Marco Vassura)
+- New: XML configuration file support (Marco Vassura)
diff --git a/thirdparty/apache-log4php/build.xml b/thirdparty/apache-log4php/build.xml
index 4d44299..1fe8d8c 100644
--- a/thirdparty/apache-log4php/build.xml
+++ b/thirdparty/apache-log4php/build.xml
@@ -21,8 +21,6 @@
-
-
@@ -32,6 +30,7 @@
+
@@ -40,6 +39,7 @@
+
@@ -60,10 +60,8 @@
See http://www.phpunit.de -->
-
-
-
-
+
+
@@ -127,6 +125,7 @@
+
@@ -142,5 +141,31 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/thirdparty/apache-log4php/package-config.php b/thirdparty/apache-log4php/package-config.php
new file mode 100644
index 0000000..693bb66
--- /dev/null
+++ b/thirdparty/apache-log4php/package-config.php
@@ -0,0 +1,82 @@
+ 'Apache License 2.0',
+ //'filelistgenerator' => 'svn',
+ 'ignore' => array('package.php', 'package-config.php'),
+ 'simpleoutput' => true,
+ 'baseinstalldir' => '/',
+ 'packagedirectory' => '.',
+ 'dir_roles' => array(
+ 'examples' => 'doc',
+ ),
+ 'exceptions' => array(
+ 'CHANGELOG' => 'doc',
+ 'LICENSE' => 'doc',
+ 'README' => 'doc',
+ ),
+);
+
+$license = array(
+ 'name' => 'Apache License 2.0',
+ 'url' => 'http://www.apache.org/licenses/LICENSE-2.0'
+);
+
+$maintainer = array();
+$maintainer[] = array(
+ 'role' => 'lead',
+ 'handle' => 'kurdalen',
+ 'name' => 'Knut Urdalen',
+ 'email' => 'kurdalen@apache.org',
+ 'active' => 'yes'
+);
+$maintainer[] = array(
+ 'role' => 'lead',
+ 'handle' => 'grobmeier',
+ 'name' => 'Christian Grobmeier',
+ 'email' => 'grobmeier@gmail.com',
+ 'active' => 'yes'
+);
+
+$dependency = array();
+
+$channel = 'pear.php.net';
+$require = array(
+ 'php' => '5.2.0',
+ 'pear_installer' => '1.8.0',
+);
diff --git a/thirdparty/apache-log4php/package.php b/thirdparty/apache-log4php/package.php
new file mode 100644
index 0000000..1ce1b28
--- /dev/null
+++ b/thirdparty/apache-log4php/package.php
@@ -0,0 +1,71 @@
+setOptions($options);
+if(PEAR::isError($result)) {
+ echo $result->getMessage();
+ die( __LINE__ . "\n" );
+}
+
+$package->setPackage($name);
+$package->setSummary($summary);
+$package->setDescription($description);
+
+$package->setChannel($channel);
+$package->setAPIVersion($apiVersion);
+$package->setReleaseVersion($version);
+$package->setReleaseStability($state);
+$package->setAPIStability($apiStability);
+$package->setNotes($notes);
+$package->setPackageType('php'); // this is a PEAR-style php script package
+$package->setLicense($license['name'], $license['url']);
+
+foreach($maintainer as $m) {
+ $package->addMaintainer($m['role'], $m['handle'], $m['name'], $m['email'], $m['active']);
+}
+
+foreach($dependency as $d) {
+ $package->addPackageDepWithChannel($d['type'], $d['package'], $d['channel'], $d['version']);
+}
+
+$package->setPhpDep( $require['php'] );
+$package->setPearinstallerDep($require['pear_installer']);
+
+$package->generateContents();
+
+$package->debugPackageFile();
+
+$result = $package->writePackageFile();
+if(PEAR::isError($result)) {
+ echo $result->getMessage();
+ die();
+}
+exit(0);
diff --git a/thirdparty/apache-log4php/pom.xml b/thirdparty/apache-log4php/pom.xml
index 994bb6b..a5681b4 100644
--- a/thirdparty/apache-log4php/pom.xml
+++ b/thirdparty/apache-log4php/pom.xml
@@ -1,234 +1,241 @@
-
+
+ 4.0.0
+ log4j
+ apache-log4php
+ jar
+ 2.0-SNAPSHOT
+ Apache log4php.
+ Logging framework for PHP.
+ http://incubator.apache.org:80/log4php
+
+ JIRA
+ http://issues.apache.org/jira/
+
+
+
+ log4php-user
+ log4php-user-subscribe@logging.apache.org
+ log4php-user-unsubscribe@logging.apache.org
+ log4php-user@logging.apache.org
+ http://mail-archives.apache.org/mod_mbox/logging-log4php-user/
+
+ http://markmail.org/search/list:org.apache.logging.log4php-user
+
+
+
+ log4php-dev
+ log4php-dev-subscribe@logging.apache.org
+ log4php-dev-unsubscribe@logging.apache.org
+ log4php-dev@logging.apache.org
+ http://mail-archives.apache.org/mod_mbox/logging-log4php-dev/
+
+ http://markmail.org/search/list:org.apache.logging.log4php-dev
+
+
+
+
+
+ Apache License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+ scm:svn:http://svn.apache.org/repos/asf/incubator/log4php
+ scm:svn:https://svn.apache.org/repos/asf/incubator/log4php
+ http://svn.apache.org/viewcvs.cgi/incubator/log4php
+
+
+ Apache Software Foundation
+ http://www.apache.org
+
+
+
+
+ maven-surefire-plugin
+
+ target
+
+
+
+ maven-antrun-plugin
+
+
+ compile
+ compile
+
+
+
+
+
+
+ run
+
+
+
+ test-compile
+ test-compile
+
+
+
+
+
+
+ run
+
+
+
+ test
+ test
+
+
+
+
+
+
+ run
+
+
+
+ site
+ site
+
+
+
+
+
+
+
+
--->
-
- 4.0.0
- log4j
- apache-log4php
- jar
- 2.0-SNAPSHOT
- Apache log4php.
- Logging framework for PHP.
- http://incubator.apache.org:80/log4php
-
- JIRA
- http://issues.apache.org/jira/
-
-
-
- log4php-user
- log4php-user-subscribe@logging.apache.org
- log4php-user-unsubscribe@logging.apache.org
- log4php-user@logging.apache.org
- http://mail-archives.apache.org/mod_mbox/logging-log4php-user/
-
- http://markmail.org/search/list:org.apache.logging.log4php-user
-
-
-
- log4php-dev
- log4php-dev-subscribe@logging.apache.org
- log4php-dev-unsubscribe@logging.apache.org
- log4php-dev@logging.apache.org
- http://mail-archives.apache.org/mod_mbox/logging-log4php-dev/
-
- http://markmail.org/search/list:org.apache.logging.log4php-dev
-
-
-
-
-
- Apache License, Version 2.0
- http://www.apache.org/licenses/LICENSE-2.0.txt
- repo
-
-
-
- scm:svn:http://svn.apache.org/repos/asf/incubator/log4php
- scm:svn:https://svn.apache.org/repos/asf/incubator/log4php
- http://svn.apache.org/viewcvs.cgi/incubator/log4php
-
-
- Apache Software Foundation
- http://www.apache.org
-
-
-
-
- maven-surefire-plugin
-
- target
+
+
+
+ run
+
+
+
+ post-site
+ post-site
+
+
+
+
+
+
+ run
+
+
+
+ site-deploy
+ site-deploy
+
+
+
+
+
+
+ run
+
+
+
+
+
+ ant
+ ant-nodeps
+ 1.6.5
+
+
+ ant-contrib
+ ant-contrib
+ 1.0b2
+
+
+
+
+ maven-assembly-plugin
+
+
+ src/assembly/bin.xml
+
+ false
+
+
+
+
+ assembly
+
+
+
+
+
+ org.codehaus.mojo
+ rat-maven-plugin
+
+
+
+
+
+
+ true
+
+
+ maven-project-info-reports-plugin
+
+
+
+ scm
+ dependencies
+ issue-tracking
+ mailing-list
+ license
+
+
+
+
+
+ maven-release-plugin
+
+ site-deploy
+
+
+
+ maven-changes-plugin
+
+
+
+ changes-report
+
+
+
+
+ %URL%/browse/%ISSUE%
- maven-antrun-plugin
-
-
- compile
- compile
-
-
-
-
-
-
- run
-
-
-
- test-compile
- test-compile
-
-
-
-
-
-
- run
-
-
-
- test
- test
-
-
-
-
-
-
- run
-
-
-
- site
- site
-
-
-
-
-
-
-
-
-
-
-
-
- run
-
-
-
- post-site
- post-site
-
-
-
-
-
-
- run
-
-
-
- site-deploy
- site-deploy
-
-
-
-
-
-
- run
-
-
-
-
-
- ant
- ant-nodeps
- 1.6.5
-
-
- ant-contrib
- ant-contrib
- 1.0b2
-
-
-
-
- maven-assembly-plugin
-
-
- src/assembly/bin.xml
-
- false
-
-
-
-
- assembly
-
-
-
-
-
- org.codehaus.mojo
- rat-maven-plugin
-
-
-
-
-
-
- true
-
-
- maven-project-info-reports-plugin
-
-
-
- scm
- dependencies
- issue-tracking
- mailing-list
- license
-
-
-
+ org.apache.rat
+ apache-rat-plugin
-
- maven-release-plugin
-
- site-deploy
-
-
-
- maven-changes-plugin
-
-
-
- changes-report
-
-
-
-
- %URL%/browse/%ISSUE%
-
-
diff --git a/thirdparty/apache-log4php/src/examples/php/cache.php b/thirdparty/apache-log4php/src/examples/php/cache.php
new file mode 100644
index 0000000..4229cc7
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/cache.php
@@ -0,0 +1,38 @@
+getRootLogger();
+
+$logger->debug('Debug message from cached logger');
+?>
diff --git a/thirdparty/apache-log4php/src/examples/php/client.php b/thirdparty/apache-log4php/src/examples/php/client.php
new file mode 100644
index 0000000..c0adc08
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/client.php
@@ -0,0 +1,24 @@
+info("Hello World!");
+?>
diff --git a/thirdparty/apache-log4php/src/examples/php/console.php b/thirdparty/apache-log4php/src/examples/php/console.php
new file mode 100644
index 0000000..c10be83
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/console.php
@@ -0,0 +1,24 @@
+debug("Hello World!");
+?>
diff --git a/thirdparty/apache-log4php/src/examples/php/dailyfile.php b/thirdparty/apache-log4php/src/examples/php/dailyfile.php
new file mode 100644
index 0000000..4d9f610
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/dailyfile.php
@@ -0,0 +1,24 @@
+debug("Hello World!");
+?>
diff --git a/thirdparty/apache-log4php/src/examples/php/echo.php b/thirdparty/apache-log4php/src/examples/php/echo.php
new file mode 100644
index 0000000..85e03ce
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/echo.php
@@ -0,0 +1,24 @@
+debug("Hello World!");
+?>
diff --git a/thirdparty/apache-log4php/src/examples/php/file.php b/thirdparty/apache-log4php/src/examples/php/file.php
new file mode 100644
index 0000000..7ebc20e
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/file.php
@@ -0,0 +1,24 @@
+debug("Hello World!");
+?>
diff --git a/thirdparty/apache-log4php/src/examples/php/levelmatchfilter.php b/thirdparty/apache-log4php/src/examples/php/levelmatchfilter.php
new file mode 100644
index 0000000..d003067
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/levelmatchfilter.php
@@ -0,0 +1,25 @@
+debug("Matching and will be rejected");
+$logger->info("Not matching and will be accepted");
+?>
diff --git a/thirdparty/apache-log4php/src/examples/php/levelrangefilter.php b/thirdparty/apache-log4php/src/examples/php/levelrangefilter.php
new file mode 100644
index 0000000..4c31f57
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/levelrangefilter.php
@@ -0,0 +1,28 @@
+debug("This is a debug message");
+$logger->info("This is an info message");
+$logger->warn("This is a warning");
+$logger->error("This is an error");
+$logger->fatal("This is a fatal error");
+?>
diff --git a/thirdparty/apache-log4php/src/examples/php/mail.php b/thirdparty/apache-log4php/src/examples/php/mail.php
new file mode 100644
index 0000000..157560b
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/mail.php
@@ -0,0 +1,24 @@
+fatal("Some critical message!");
+?>
diff --git a/thirdparty/apache-log4php/src/examples/php/mdc.php b/thirdparty/apache-log4php/src/examples/php/mdc.php
new file mode 100644
index 0000000..d29d0e8
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/mdc.php
@@ -0,0 +1,27 @@
+debug("Testing MDC");
+?>
diff --git a/thirdparty/apache-log4php/src/examples/php/ndc.php b/thirdparty/apache-log4php/src/examples/php/ndc.php
new file mode 100644
index 0000000..153c72f
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/ndc.php
@@ -0,0 +1,31 @@
+debug("Testing NDC");
+
+LoggerNDC::pop();
+
+?>
diff --git a/thirdparty/apache-log4php/src/examples/php/php.php b/thirdparty/apache-log4php/src/examples/php/php.php
new file mode 100644
index 0000000..a5608fe
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/php.php
@@ -0,0 +1,24 @@
+debug("Hello PHP!");
+?>
diff --git a/thirdparty/apache-log4php/src/examples/php/server.php b/thirdparty/apache-log4php/src/examples/php/server.php
new file mode 100644
index 0000000..9019943
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/server.php
@@ -0,0 +1,71 @@
+hierarchy = LoggerManager::getLoggerRepository();
+ }
+
+ function onReceiveData($clientId = 0, $data = "") {
+ $events = $this->getEvents($data);
+ foreach($events as $event) {
+ $root = $this->hierarchy->getRootLogger();
+ if($event->getLoggerName() === 'root') {
+ $root->callAppenders($event);
+ } else {
+ $loggers = $this->hierarchy->getCurrentLoggers();
+ foreach($loggers as $logger) {
+ $root->callAppenders($event);
+ $appenders = $logger->getAllAppenders();
+ foreach($appenders as $appender) {
+ $appender->doAppend($event);
+ }
+ }
+ }
+ }
+ }
+
+ function getEvents($data) {
+ preg_match('/^(O:\d+)/', $data, $parts);
+ $events = split($parts[1], $data);
+ array_shift($events);
+ $size = count($events);
+ for($i=0; $i<$size; $i++) {
+ $events[$i] = unserialize($parts[1].$events[$i]);
+ }
+ return $events;
+ }
+}
+
+$host = '127.0.0.1';
+$port = 9090;
+//$server =& Net_Server::create('fork', $host, $port);
+$server =& Net_Server::create('sequential', $host, $port);
+$handler =& new Net_Server_Handler_Log();
+$server->setCallbackObject($handler);
+$server->start();
+?>
diff --git a/thirdparty/apache-log4php/src/examples/php/simple.php b/thirdparty/apache-log4php/src/examples/php/simple.php
new file mode 100644
index 0000000..641b1fd
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/simple.php
@@ -0,0 +1,44 @@
+_logger = LoggerManager::getLogger('Log4phpTest');
+ $this->_logger->debug('Hello!');
+ }
+
+}
+
+function Log4phpTestFunction() {
+ $logger = LoggerManager::getLogger('Log4phpTestFunction');
+ $logger->debug('Hello again!');
+}
+
+$test = new Log4phpTest();
+Log4phpTestFunction();
+
+// Safely close all appenders with...
+LoggerManager::shutdown();
+
+?>
diff --git a/thirdparty/apache-log4php/src/examples/php/stringmatchfilter.php b/thirdparty/apache-log4php/src/examples/php/stringmatchfilter.php
new file mode 100644
index 0000000..d0fdf47
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/stringmatchfilter.php
@@ -0,0 +1,25 @@
+debug("Some text to match that will be rejected");
+$logger->info("Some other text that will be accepted");
+?>
diff --git a/thirdparty/apache-log4php/src/examples/php/syslog.php b/thirdparty/apache-log4php/src/examples/php/syslog.php
new file mode 100644
index 0000000..227536e
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/php/syslog.php
@@ -0,0 +1,24 @@
+fatal("Hello World!");
+?>
diff --git a/thirdparty/apache-log4php/src/examples/resources/cache.properties b/thirdparty/apache-log4php/src/examples/resources/cache.properties
new file mode 100644
index 0000000..e065866
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/resources/cache.properties
@@ -0,0 +1,20 @@
+; cache.properties
+;
+; 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.
+;
+log4php.appender.default = LoggerAppenderEcho
+log4php.appender.default.layout = LoggerLayoutSimple
+log4php.rootLogger = DEBUG, default
diff --git a/thirdparty/apache-log4php/src/examples/resources/client.properties b/thirdparty/apache-log4php/src/examples/resources/client.properties
new file mode 100644
index 0000000..a453e4a
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/resources/client.properties
@@ -0,0 +1,22 @@
+; client.properties
+;
+; 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.
+;
+log4php.appender.default = LoggerAppenderSocket
+log4php.appender.default.remoteHost = tcp://127.0.0.1
+log4php.appender.default.port = 9090
+log4php.appender.default.useXml = false
+log4php.rootLogger = INFO, default
diff --git a/thirdparty/apache-log4php/src/examples/resources/console.properties b/thirdparty/apache-log4php/src/examples/resources/console.properties
new file mode 100644
index 0000000..ce9722b
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/resources/console.properties
@@ -0,0 +1,21 @@
+; console.properties
+;
+; 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.
+;
+log4php.appender.console = LoggerAppenderConsole
+log4php.appender.console.target = "STDOUT"
+log4php.appender.console.layout = LoggerLayoutSimple
+log4php.rootLogger = DEBUG, console
diff --git a/thirdparty/apache-log4php/src/examples/resources/dailyfile.properties b/thirdparty/apache-log4php/src/examples/resources/dailyfile.properties
new file mode 100644
index 0000000..2f390bd
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/resources/dailyfile.properties
@@ -0,0 +1,22 @@
+; dailyfile.properties
+;
+; 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.
+;
+log4php.appender.default = LoggerAppenderDailyFile
+log4php.appender.default.layout = LoggerLayoutTTCC
+log4php.appender.default.datePattern = Ymd
+log4php.appender.default.file = ../../../target/examples/daily_%s.log
+log4php.rootLogger = DEBUG, default
diff --git a/thirdparty/apache-log4php/src/examples/resources/echo.properties b/thirdparty/apache-log4php/src/examples/resources/echo.properties
new file mode 100644
index 0000000..30711c1
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/resources/echo.properties
@@ -0,0 +1,20 @@
+; echo.properties
+;
+; 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.
+;
+log4php.appender.default = LoggerAppenderEcho
+log4php.appender.default.layout = LoggerLayoutSimple
+log4php.rootLogger = DEBUG, default
diff --git a/thirdparty/apache-log4php/src/examples/resources/file.properties b/thirdparty/apache-log4php/src/examples/resources/file.properties
new file mode 100644
index 0000000..48ba27f
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/resources/file.properties
@@ -0,0 +1,21 @@
+; file.properties
+;
+; 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.
+;
+log4php.appender.default = LoggerAppenderFile
+log4php.appender.default.file = ../../../target/examples/file.log
+log4php.appender.default.layout = LoggerLayoutTTCC
+log4php.rootLogger = DEBUG, default
diff --git a/thirdparty/apache-log4php/src/examples/resources/levelmatchfilter.xml b/thirdparty/apache-log4php/src/examples/resources/levelmatchfilter.xml
new file mode 100644
index 0000000..472c882
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/resources/levelmatchfilter.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/thirdparty/apache-log4php/src/examples/resources/levelrangefilter.xml b/thirdparty/apache-log4php/src/examples/resources/levelrangefilter.xml
new file mode 100644
index 0000000..2d06cbf
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/resources/levelrangefilter.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/thirdparty/apache-log4php/src/examples/resources/mail.properties b/thirdparty/apache-log4php/src/examples/resources/mail.properties
new file mode 100644
index 0000000..11966d5
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/resources/mail.properties
@@ -0,0 +1,23 @@
+; mail.properties
+;
+; 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.
+;
+log4php.appender.email = LoggerAppenderMail
+log4php.appender.email.layout = LoggerLayoutTTCC
+log4php.appender.email.from = someone@example.com
+log4php.appender.email.to = log4php@example.com
+log4php.appender.email.subject = Log4php test
+log4php.rootLogger = FATAL, email
diff --git a/thirdparty/apache-log4php/src/examples/resources/mdc.properties b/thirdparty/apache-log4php/src/examples/resources/mdc.properties
new file mode 100644
index 0000000..b866eea
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/resources/mdc.properties
@@ -0,0 +1,21 @@
+; mdc.properties
+;
+; 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.
+;
+log4php.appender.default = LoggerAppenderEcho
+log4php.appender.default.layout = LoggerLayoutPattern
+log4php.appender.default.layout.conversionPattern="%d{Y-m-d H:i:s} %-5p %c %X{username}: %m in %F at %L%n"
+log4php.rootLogger = DEBUG, default
diff --git a/thirdparty/apache-log4php/src/examples/resources/ndc.properties b/thirdparty/apache-log4php/src/examples/resources/ndc.properties
new file mode 100644
index 0000000..a1f2cf9
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/resources/ndc.properties
@@ -0,0 +1,21 @@
+; ndc.properties
+;
+; 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.
+;
+log4php.appender.default = LoggerAppenderEcho
+log4php.appender.default.layout = LoggerLayoutPattern
+log4php.appender.default.layout.conversionPattern="%d{Y-m-d H:i:s} %-5p %c %x: %m in %F at %L%n"
+log4php.rootLogger = DEBUG, default
diff --git a/thirdparty/apache-log4php/src/examples/resources/php.properties b/thirdparty/apache-log4php/src/examples/resources/php.properties
new file mode 100644
index 0000000..f3ecea6
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/resources/php.properties
@@ -0,0 +1,21 @@
+LoggerLayoutPattern; php.properties
+;
+; 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.
+;
+log4php.appender.default = LoggerAppenderPhp
+log4php.appender.default.layout = LoggerLayoutPattern
+log4php.appender.default.layout.conversionPattern = "%d{Y-m-d H:i:s.u} %-5p [%t] %c: %m%n"
+log4php.rootLogger = DEBUG, default
diff --git a/thirdparty/apache-log4php/src/examples/resources/server.properties b/thirdparty/apache-log4php/src/examples/resources/server.properties
new file mode 100644
index 0000000..5c98bfc
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/resources/server.properties
@@ -0,0 +1,24 @@
+; server.properties
+;
+; 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.
+;
+log4php.appender.file = LoggerAppenderFile
+log4php.appender.file.file = server.log
+log4php.appender.file.layout = LoggerLayoutTTCC
+log4php.appender.console = LoggerAppenderConsole
+log4php.appender.console.target = STDOUT
+log4php.appender.console.layout = LoggerLayoutSimple
+log4php.rootLogger = INFO, file, console
diff --git a/thirdparty/apache-log4php/src/examples/resources/stringmatchfilter.xml b/thirdparty/apache-log4php/src/examples/resources/stringmatchfilter.xml
new file mode 100644
index 0000000..54d7dc1
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/resources/stringmatchfilter.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/thirdparty/apache-log4php/src/examples/resources/syslog.properties b/thirdparty/apache-log4php/src/examples/resources/syslog.properties
new file mode 100644
index 0000000..023e1e9
--- /dev/null
+++ b/thirdparty/apache-log4php/src/examples/resources/syslog.properties
@@ -0,0 +1,22 @@
+; syslog.properties
+;
+; 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.
+;
+log4php.appender.default = LoggerAppenderSyslog
+log4php.appender.default.layout = LoggerLayoutSimple
+log4php.appender.default.ident = log4php-test
+log4php.appender.default.facility = LOG_LOCAL0
+log4php.rootLogger = DEBUG, default
diff --git a/thirdparty/apache-log4php/src/main/php/Logger.php b/thirdparty/apache-log4php/src/main/php/Logger.php
index f2a6cce..bf330f6 100644
--- a/thirdparty/apache-log4php/src/main/php/Logger.php
+++ b/thirdparty/apache-log4php/src/main/php/Logger.php
@@ -1,599 +1,407 @@
name = $name;
- }
-
- /**
- * Add a new Appender to the list of appenders of this Category instance.
- *
- * @param LoggerAppender $newAppender
- */
- public function addAppender($newAppender)
- {
- $appenderName = $newAppender->getName();
- $this->aai[$appenderName] = $newAppender;
- }
-
- /**
- * If assertion parameter is false, then logs msg as an error statement.
- *
- * @param bool $assertion
- * @param string $msg message to log
- */
- public function assertLog($assertion = true, $msg = '')
- {
- if ($assertion == false) {
- $this->error($msg);
- }
- }
-
- /**
- * Call the appenders in the hierarchy starting at this.
- *
- * @param LoggerLoggingEvent $event
- */
- public function callAppenders($event)
- {
- if (sizeof($this->aai) > 0) {
- foreach (array_keys($this->aai) as $appenderName) {
- $this->aai[$appenderName]->doAppend($event);
- }
- }
- if ($this->parent != null and $this->getAdditivity()) {
- $this->parent->callAppenders($event);
- }
- }
-
- /**
- * Log a message object with the DEBUG level including the caller.
- *
- * @param mixed $message message
- * @param mixed $caller caller object or caller string id
- */
- public function debug($message, $caller = null)
- {
- $debugLevel = LoggerLevel::getLevelDebug();
- if ($this->repository->isDisabled($debugLevel)) {
- return;
- }
- if ($debugLevel->isGreaterOrEqual($this->getEffectiveLevel())) {
- $this->forcedLog($this->fqcn, $caller, $debugLevel, $message);
- }
- }
-
- /**
- * Log a message object with the ERROR level including the caller.
- *
- * @param mixed $message message
- * @param mixed $caller caller object or caller string id
- */
- public function error($message, $caller = null)
- {
- $errorLevel = LoggerLevel::getLevelError();
- if ($this->repository->isDisabled($errorLevel)) {
- return;
- }
- if ($errorLevel->isGreaterOrEqual($this->getEffectiveLevel())) {
- $this->forcedLog($this->fqcn, $caller, $errorLevel, $message);
- }
- }
-
- /**
- * Deprecated. Please use LoggerManager::exists() instead.
- *
- * @param string $name
- * @see LoggerManager::exists()
- * @deprecated
- */
- public function exists($name)
- {
- return LoggerManager::exists($name);
- }
-
- /**
- * Log a message object with the FATAL level including the caller.
- *
- * @param mixed $message message
- * @param mixed $caller caller object or caller string id
- */
- public function fatal($message, $caller = null)
- {
- $fatalLevel = LoggerLevel::getLevelFatal();
- if ($this->repository->isDisabled($fatalLevel)) {
- return;
- }
- if ($fatalLevel->isGreaterOrEqual($this->getEffectiveLevel())) {
- $this->forcedLog($this->fqcn, $caller, $fatalLevel, $message);
- }
- }
-
- /**
- * This method creates a new logging event and logs the event without further checks.
- *
- * It should not be called directly. Use {@link info()}, {@link debug()}, {@link warn()},
- * {@link error()} and {@link fatal()} wrappers.
- *
- * @param string $fqcn Fully Qualified Class Name of the Logger
- * @param mixed $caller caller object or caller string id
- * @param LoggerLevel $level log level
- * @param mixed $message message
- * @see LoggerLoggingEvent
- */
- public function forcedLog($fqcn, $caller, $level, $message)
- {
- // $fqcn = is_object($caller) ? get_class($caller) : (string)$caller;
- $this->callAppenders(new LoggerLoggingEvent($fqcn, $this, $level, $message));
- }
-
- /**
- * Get the additivity flag for this Category instance.
- * @return boolean
- */
- public function getAdditivity()
- {
- return $this->additive;
- }
-
- /**
- * Get the appenders contained in this category as an array.
- * @return array collection of appenders
- */
- public function getAllAppenders()
- {
- return array_values($this->aai);
- }
-
- /**
- * Look for the appender named as name.
- * @return LoggerAppender
- */
- public function getAppender($name)
- {
- return $this->aai[$name];
- }
-
- /**
- * Please use the {@link getEffectiveLevel()} method instead.
- * @deprecated
- */
- public function getChainedPriority()
- {
- return $this->getEffectiveLevel();
- }
-
- /**
- * Please use {@link LoggerManager::getCurrentLoggers()} instead.
- * @deprecated
- */
- public function getCurrentCategories()
- {
- return LoggerManager::getCurrentLoggers();
- }
-
- /**
- * Please use {@link LoggerManager::getLoggerRepository()} instead.
- * @deprecated
- */
- public function getDefaultHierarchy()
- {
- return LoggerManager::getLoggerRepository();
- }
-
- /**
- * @deprecated Use {@link getLoggerRepository()}
- * @return LoggerHierarchy
- */
- public function getHierarchy()
- {
- return $this->getLoggerRepository();
- }
-
- /**
- * Starting from this category, search the category hierarchy for a non-null level and return it.
- * @see LoggerLevel
- * @return LoggerLevel or null
- */
- public function getEffectiveLevel()
- {
- for($c = $this; $c != null; $c = $c->parent) {
- if($c->getLevel() !== null)
- return $c->getLevel();
- }
- return null;
- }
-
- /**
- * Retrieve a category with named as the name parameter.
- * @return Logger
- */
- public function getInstance($name)
- {
- return LoggerManager::getLogger($name);
- }
-
- /**
- * Returns the assigned Level, if any, for this Category.
- * @return LoggerLevel or null
- */
- public function getLevel()
- {
- return $this->level;
- }
-
- /**
- * Get a Logger by name (Delegate to {@link LoggerManager})
- * @param string $name logger name
- * @param LoggerFactory $factory a {@link LoggerFactory} instance or null
- * @return Logger
- * @static
- */
- public function getLogger($name, $factory = null)
- {
- return LoggerManager::getLogger($name, $factory);
- }
-
- /**
- * Return the the repository where this Category is attached.
- * @return LoggerHierarchy
- */
- public function getLoggerRepository()
- {
- return $this->repository;
- }
-
- /**
- * Return the category name.
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
-
- /**
- * Returns the parent of this category.
- * @return Logger
- */
- public function getParent()
- {
- return $this->parent;
- }
-
- /**
- * Please use getLevel() instead.
- * @deprecated
- */
- public function getPriority()
- {
- return $this->getLevel();
- }
-
- /**
- * Return the inherited ResourceBundle for this category.
- */
- public function getResourceBundle()
- {
- return;
- }
-
- /**
- * Returns the string resource corresponding to key in this category's inherited resource bundle.
- */
- public function getResourceBundleString($key)
- {
- return;
- }
-
- /**
- * Return the root of the default category hierarchy.
- * @return LoggerRoot
- */
- public function getRoot()
- {
- return LoggerManager::getRootLogger();
- }
-
- /**
- * get the Root Logger (Delegate to {@link LoggerManager})
- * @return LoggerRoot
- * @static
- */
- public function getRootLogger()
- {
- return LoggerManager::getRootLogger();
- }
-
- /**
- * Log a message object with the INFO Level.
- *
- * @param mixed $message message
- * @param mixed $caller caller object or caller string id
- */
- public function info($message, $caller = null)
- {
- $infoLevel = LoggerLevel::getLevelInfo();
- if ($this->repository->isDisabled($infoLevel)) {
- return;
- }
- if ($infoLevel->isGreaterOrEqual($this->getEffectiveLevel())) {
- $this->forcedLog($this->fqcn, $caller, $infoLevel, $message);
- }
- }
-
- /**
- * Is the appender passed as parameter attached to this category?
- *
- * @param LoggerAppender $appender
- */
- public function isAttached($appender)
- {
- return isset($this->aai[$appender->getName()]);
- }
-
- /**
- * Check whether this category is enabled for the DEBUG Level.
- * @return boolean
- */
- public function isDebugEnabled()
- {
- $debugLevel = LoggerLevel::getLevelDebug();
- if ($this->repository->isDisabled($debugLevel)) {
- return false;
- }
- return ($debugLevel->isGreaterOrEqual($this->getEffectiveLevel()));
- }
-
- /**
- * Check whether this category is enabled for a given Level passed as parameter.
- *
- * @param LoggerLevel level
- * @return boolean
- */
- public function isEnabledFor($level)
- {
- if ($this->repository->isDisabled($level)) {
- return false;
- }
- return (bool)($level->isGreaterOrEqual($this->getEffectiveLevel()));
- }
-
- /**
- * Check whether this category is enabled for the info Level.
- * @return boolean
- * @see LoggerLevel
- */
- public function isInfoEnabled()
- {
- $infoLevel = LoggerLevel::getLevelInfo();
- if ($this->repository->isDisabled($infoLevel)) {
- return false;
- }
- return ($infoLevel->isGreaterOrEqual($this->getEffectiveLevel()));
- }
-
- /**
- * Log a localized and parameterized message.
- */
- public function l7dlog($priority, $key, $params, $t)
- {
- return;
- }
-
- /**
- * This generic form is intended to be used by wrappers.
- *
- * @param LoggerLevel $priority a valid level
- * @param mixed $message message
- * @param mixed $caller caller object or caller string id
- */
- public function log($priority, $message, $caller = null)
- {
- if ($this->repository->isDisabled($priority)) {
- return;
- }
- if ($priority->isGreaterOrEqual($this->getEffectiveLevel())) {
- $this->forcedLog($this->fqcn, $caller, $priority, $message);
- }
- }
-
- /**
- * Remove all previously added appenders from this Category instance.
- */
- public function removeAllAppenders()
- {
- $appenderNames = array_keys($this->aai);
- $enumAppenders = sizeof($appenderNames);
- for ($i = 0; $i < $enumAppenders; $i++) {
- $this->removeAppender($appenderNames[$i]);
- }
- }
-
- /**
- * Remove the appender passed as parameter form the list of appenders.
- *
- * @param mixed $appender can be an appender name or a {@link LoggerAppender} object
- */
- public function removeAppender($appender)
- {
- if ($appender instanceof loggerappender) {
- $appender->close();
- unset($this->aai[$appender->getName()]);
- } elseif (is_string($appender) and isset($this->aai[$appender])) {
- $this->aai[$appender]->close();
- unset($this->aai[$appender]);
- }
- }
-
- /**
- * Set the additivity flag for this Category instance.
- *
- * @param boolean $additive
- */
- public function setAdditivity($additive)
- {
- $this->additive = (bool)$additive;
- }
-
- /**
- * @deprecated Please use {@link setLevel()} instead.
- * @see setLevel()
- */
- public function setPriority($priority)
- {
- $this->setLevel($priority);
- }
-
- /**
- * Only the Hierarchy class can set the hierarchy of a
- * category.
- *
- * @param LoggerHierarchy $repository
- */
- public function setHierarchy($repository)
- {
- $this->repository = $repository;
- }
-
- /**
- * Set the level of this Category.
- *
- * @param LoggerLevel $level a level string or a level constant
- */
- public function setLevel($level)
- {
- $this->level = $level;
- }
-
- public function setParent($logger) {
- if ($logger instanceof Logger) {
- $this->parent = $logger;
- }
- }
-
- /**
- * Set the resource bundle to be used with localized logging methods
- */
- public function setResourceBundle($bundle)
- {
- return;
- }
-
- /**
- * @deprecated use {@link LoggerManager::shutdown()} instead.
- * @see LoggerManager::shutdown()
- */
- public function shutdown()
- {
- LoggerManager::shutdown();
- }
-
- /**
- * Log a message with the WARN level.
- *
- * @param mixed $message message
- * @param mixed $caller caller object or caller string id
- */
- public function warn($message, $caller = null)
- {
- $warnLevel = LoggerLevel::getLevelWarn();
- if ($this->repository->isDisabled($warnLevel)) {
- return;
- }
- if ($warnLevel->isGreaterOrEqual($this->getEffectiveLevel())) {
- $this->forcedLog($this->fqcn, $caller, $warnLevel, $message);
- }
- }
-
+ /**
+ * Additivity is set to true by default, that is children inherit the
+ * appenders of their ancestors by default.
+ * @var boolean
+ */
+ private $additive = true;
+
+ /** @var string fully qualified class name */
+ private $fqcn = 'Logger';
+
+ /** @var LoggerLevel The assigned level of this category. */
+ private $level = null;
+
+ /** @var string name of this category. */
+ private $name = '';
+
+ /** @var Logger The parent of this category. Null if this is the root logger*/
+ private $parent = null;
+
+ /** @var LoggerHierarchy the object repository */
+ private $repository = null;
+
+ /**
+ * @var array collection of appenders
+ * @see LoggerAppender
+ */
+ private $aai = array();
+
+ /**
+ * Constructor.
+ * @param string $name Category name
+ */
+ public function __construct($name) {
+ $this->name = $name;
+ }
+
+ /**
+ * Add a new Appender to the list of appenders of this Category instance.
+ *
+ * @param LoggerAppender $newAppender
+ */
+ public function addAppender($newAppender) {
+ $appenderName = $newAppender->getName();
+ $this->aai[$appenderName] = $newAppender;
+ }
+
+ /**
+ * If assertion parameter is false, then logs msg as an error statement.
+ *
+ * @param bool $assertion
+ * @param string $msg message to log
+ */
+ public function assertLog($assertion = true, $msg = '') {
+ if($assertion == false) {
+ $this->error($msg);
+ }
+ }
+
+ /**
+ * Call the appenders in the hierarchy starting at this.
+ *
+ * @param LoggerLoggingEvent $event
+ */
+ public function callAppenders($event) {
+ if(count($this->aai) > 0) {
+ foreach(array_keys($this->aai) as $appenderName) {
+ $this->aai[$appenderName]->doAppend($event);
+ }
+ }
+ if($this->parent != null and $this->getAdditivity()) {
+ $this->parent->callAppenders($event);
+ }
+ }
+
+ /**
+ * Log a message object with the DEBUG level including the caller.
+ *
+ * @param mixed $message message
+ * @param mixed $caller caller object or caller string id
+ */
+ public function debug($message, $caller = null) {
+ $this->logLevel($message, LoggerLevel::getLevelDebug(), $caller);
+ }
+
+
+ /**
+ * Log a message object with the INFO Level.
+ *
+ * @param mixed $message message
+ * @param mixed $caller caller object or caller string id
+ */
+ public function info($message, $caller = null) {
+ $this->logLevel($message, LoggerLevel::getLevelInfo(), $caller);
+ }
+
+ /**
+ * Log a message with the WARN level.
+ *
+ * @param mixed $message message
+ * @param mixed $caller caller object or caller string id
+ */
+ public function warn($message, $caller = null) {
+ $this->logLevel($message, LoggerLevel::getLevelWarn(), $caller);
+ }
+
+ /**
+ * Log a message object with the ERROR level including the caller.
+ *
+ * @param mixed $message message
+ * @param mixed $caller caller object or caller string id
+ */
+ public function error($message, $caller = null) {
+ $this->logLevel($message, LoggerLevel::getLevelError(), $caller);
+ }
+
+ /**
+ * Log a message object with the FATAL level including the caller.
+ *
+ * @param mixed $message message
+ * @param mixed $caller caller object or caller string id
+ */
+ public function fatal($message, $caller = null) {
+ $this->logLevel($message, LoggerLevel::getLevelFatal(), $caller);
+ }
+
+ private function logLevel($message, $level, $caller = null) {
+ if($this->repository->isDisabled($level)) {
+ return;
+ }
+ if($level->isGreaterOrEqual($this->getEffectiveLevel())) {
+ $this->forcedLog($this->fqcn, $caller, $level, $message);
+ }
+ }
+
+ /**
+ * This method creates a new logging event and logs the event without further checks.
+ *
+ * It should not be called directly. Use {@link info()}, {@link debug()}, {@link warn()},
+ * {@link error()} and {@link fatal()} wrappers.
+ *
+ * @param string $fqcn Fully Qualified Class Name of the Logger
+ * @param mixed $caller caller object or caller string id
+ * @param LoggerLevel $level log level
+ * @param mixed $message message
+ * @see LoggerLoggingEvent
+ */
+ public function forcedLog($fqcn, $caller, $level, $message) {
+ // $fqcn = is_object($caller) ? get_class($caller) : (string)$caller;
+ $this->callAppenders(new LoggerLoggingEvent($fqcn, $this, $level, $message));
+ }
+
+ /**
+ * Get the additivity flag for this Category instance.
+ * @return boolean
+ */
+ public function getAdditivity() {
+ return $this->additive;
+ }
+
+ /**
+ * Get the appenders contained in this category as an array.
+ * @return array collection of appenders
+ */
+ public function getAllAppenders() {
+ return array_values($this->aai);
+ }
+
+ /**
+ * Look for the appender named as name.
+ * @return LoggerAppender
+ */
+ public function getAppender($name) {
+ return $this->aai[$name];
+ }
+
+ /**
+ * Starting from this category, search the category hierarchy for a non-null level and return it.
+ * @see LoggerLevel
+ * @return LoggerLevel or null
+ */
+ public function getEffectiveLevel() {
+ for($c = $this; $c != null; $c = $c->parent) {
+ if($c->getLevel() !== null) {
+ return $c->getLevel();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the assigned Level, if any, for this Category.
+ * @return LoggerLevel or null
+ */
+ public function getLevel() {
+ return $this->level;
+ }
+
+ /**
+ * Get a Logger by name (Delegate to {@link LoggerManager})
+ *
+ * @param string $name logger name
+ * @param LoggerFactory $factory a {@link LoggerFactory} instance or null
+ * @return Logger
+ * @static
+ */
+ // TODO: remove method? confusing design
+ public function getLogger($name, $factory = null) {
+ return LoggerManager::getLogger($name, $factory);
+ }
+
+ /**
+ * Return the the repository where this Category is attached.
+ * @return LoggerHierarchy
+ */
+ public function getLoggerRepository() {
+ return $this->repository;
+ }
+
+ /**
+ * Return the category name.
+ * @return string
+ */
+ public function getName() {
+ return $this->name;
+ }
+
+ /**
+ * Returns the parent of this category.
+ * @return Logger
+ */
+ public function getParent() {
+ return $this->parent;
+ }
+
+ /**
+ * Return the root of the default category hierarchy.
+ * @return LoggerRoot
+ */
+ // TODO: remove method? confusing design
+ public function getRoot() {
+ return LoggerManager::getRootLogger();
+ }
+
+ /**
+ * get the Root Logger (Delegate to {@link LoggerManager})
+ * @return LoggerRoot
+ * @static
+ */
+ // TODO: remove method? confusing design
+ public static function getRootLogger() {
+ return LoggerManager::getRootLogger();
+ }
+
+ /**
+ * Is the appender passed as parameter attached to this category?
+ *
+ * @param LoggerAppender $appender
+ */
+ public function isAttached($appender) {
+ return isset($this->aai[$appender->getName()]);
+ }
+
+ /**
+ * Check whether this category is enabled for the DEBUG Level.
+ * @return boolean
+ */
+ public function isDebugEnabled() {
+ return $this->isEnabledFor(LoggerLevel::getLevelDebug());
+ }
+
+ /**
+ * Check whether this category is enabled for a given Level passed as parameter.
+ *
+ * @param LoggerLevel level
+ * @return boolean
+ */
+ public function isEnabledFor($level) {
+ if($this->repository->isDisabled($level)) {
+ return false;
+ }
+ return (bool)($level->isGreaterOrEqual($this->getEffectiveLevel()));
+ }
+
+ /**
+ * Check whether this category is enabled for the info Level.
+ * @return boolean
+ * @see LoggerLevel
+ */
+ public function isInfoEnabled() {
+ return $this->isEnabledFor(LoggerLevel::getLevelInfo());
+ }
+
+ /**
+ * This generic form is intended to be used by wrappers.
+ *
+ * @param LoggerLevel $priority a valid level
+ * @param mixed $message message
+ * @param mixed $caller caller object or caller string id
+ */
+ public function log($priority, $message, $caller = null) {
+ if($this->isEnabledFor($priority)) {
+ $this->forcedLog($this->fqcn, $caller, $priority, $message);
+ }
+ }
+
+ /**
+ * Remove all previously added appenders from this Category instance.
+ */
+ public function removeAllAppenders() {
+ $appenderNames = array_keys($this->aai);
+ $enumAppenders = count($appenderNames);
+ for($i = 0; $i < $enumAppenders; $i++) {
+ $this->removeAppender($appenderNames[$i]);
+ }
+ }
+
+ /**
+ * Remove the appender passed as parameter form the list of appenders.
+ *
+ * @param mixed $appender can be an appender name or a {@link LoggerAppender} object
+ */
+ public function removeAppender($appender) {
+ if($appender instanceof LoggerAppender) {
+ $appender->close();
+ unset($this->aai[$appender->getName()]);
+ } else if (is_string($appender) and isset($this->aai[$appender])) {
+ $this->aai[$appender]->close();
+ unset($this->aai[$appender]);
+ }
+ }
+
+ /**
+ * Set the additivity flag for this Category instance.
+ *
+ * @param boolean $additive
+ */
+ public function setAdditivity($additive) {
+ $this->additive = (bool)$additive;
+ }
+
+ /**
+ * Only the Hierarchy class can set the hierarchy of a category.
+ *
+ * @param LoggerHierarchy $repository
+ */
+ public function setHierarchy($repository) {
+ $this->repository = $repository;
+ }
+
+ /**
+ * Set the level of this Category.
+ *
+ * @param LoggerLevel $level a level string or a level constant
+ */
+ public function setLevel($level) {
+ $this->level = $level;
+ }
+
+ /**
+ * Sets the parent logger of this logger
+ */
+ public function setParent(Logger $logger) {
+ $this->parent = $logger;
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/LoggerAppender.php b/thirdparty/apache-log4php/src/main/php/LoggerAppender.php
index f500ffb..c8bc504 100644
--- a/thirdparty/apache-log4php/src/main/php/LoggerAppender.php
+++ b/thirdparty/apache-log4php/src/main/php/LoggerAppender.php
@@ -1,13 +1,13 @@
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)) {
-
- if (!class_exists($class))
- include_once(LOG4PHP_DIR . "/appenders/{$class}.php");
- if (class_exists($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
- * @abstract
- */
- abstract public function addFilter($newFilter);
-
- /**
- * Clear the list of filters by removing all the filters in it.
- * @abstract
- */
- abstract function 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;
+ }
- /**
- * Return the first filter in the filter chain for this Appender.
- * The return value may be null if no is filter is set.
- * @return LoggerFilter
- */
- abstract function getFilter();
-
- /**
- * Release any resources allocated.
- * Subclasses of {@link LoggerAppender} should implement
- * this method to perform proper closing procedures.
- * @abstract
- */
- abstract public function close();
+ /**
+ * 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;
+ }
- /**
- * This method performs threshold checks and invokes filters before
- * delegating actual logging to the subclasses specific append() method.
- * @param LoggerLoggingEvent $event
- * @abstract
- */
- abstract public function doAppend($event);
+ /**
+ * Add a filter to the end of the filter list.
+ *
+ * @param LoggerFilter $newFilter add a new LoggerFilter
+ */
+ public function addFilter($newFilter) {
+ if($this->headFilter === null) {
+ $this->headFilter = $newFilter;
+ $this->tailFilter = $this->headFilter;
+ } else {
+ $this->tailFilter->next = $newFilter;
+ $this->tailFilter = $this->tailFilter->next;
+ }
+ }
+
+ /**
+ * Clear the list of filters by removing all the filters in it.
+ * @abstract
+ */
+ public function clearFilters() {
+ unset($this->headFilter);
+ unset($this->tailFilter);
+ $this->headFilter = null;
+ $this->tailFilter = null;
+ }
- /**
- * Get the name of this appender.
- * @return string
- */
- abstract public function getName();
+ /**
+ * Return the first filter in the filter chain for this Appender.
+ * The return value may be null if no is filter is set.
+ * @return LoggerFilter
+ */
+ public function getFilter() {
+ return $this->headFilter;
+ }
+
+ /**
+ * Return the first filter in the filter chain for this Appender.
+ * The return value may be null if no is filter is set.
+ * @return LoggerFilter
+ */
+ public function getFirstFilter() {
+ return $this->headFilter;
+ }
+
+
+ /**
+ * This method performs threshold checks and invokes filters before
+ * delegating actual logging to the subclasses specific append() method.
+ * @see LoggerAppender::doAppend()
+ * @param LoggerLoggingEvent $event
+ */
+ public function doAppend($event) {
+ if($this->closed) {
+ return;
+ }
+
+ if(!$this->isAsSevereAsThreshold($event->getLevel())) {
+ return;
+ }
- /**
- * Do not use this method.
- *
- * @param object $errorHandler
- */
- abstract public function setErrorHandler($errorHandler);
-
- /**
- * Do not use this method.
- * @return object Returns the ErrorHandler for this appender.
- */
- abstract public function getErrorHandler();
+ $f = $this->getFirstFilter();
+ while($f !== null) {
+ switch ($f->decide($event)) {
+ case LoggerFilter::DENY: return;
+ case LoggerFilter::ACCEPT: return $this->append($event);
+ case LoggerFilter::NEUTRAL: $f = $f->getNext();
+ }
+ }
+ $this->append($event);
+ }
- /**
- * Set the Layout for this appender.
- *
- * @param LoggerLayout $layout
- */
- abstract public function setLayout($layout);
-
- /**
- * Returns this appender layout.
- * @return LoggerLayout
- */
- abstract public function getLayout();
+ /**
+ * Do not use this method.
+ * @see LoggerAppender::setErrorHandler()
+ * @param object $errorHandler
+ */
+ public function setErrorHandler($errorHandler) {
+ if($errorHandler == null) {
+ // We do not throw exception here since the cause is probably a
+ // bad config file.
+ //LoggerLog::warn("You have tried to set a null error-handler.");
+ } else {
+ $this->errorHandler = $errorHandler;
+ }
+ }
+
+ /**
+ * Do not use this method.
+ * @see LoggerAppender::getErrorHandler()
+ * @return object Returns the ErrorHandler for this appender.
+ */
+ public function getErrorHandler() {
+ return $this->errorHandler;
+ }
+
+ /**
+ * Set the Layout for this appender.
+ * @see LoggerAppender::setLayout()
+ * @param LoggerLayout $layout
+ */
+ public function setLayout($layout) {
+ if($this->requiresLayout()) {
+ $this->layout = $layout;
+ }
+ }
+
+ /**
+ * Returns this appender layout.
+ * @see LoggerAppender::getLayout()
+ * @return LoggerLayout
+ */
+ public function getLayout() {
+ return $this->layout;
+ }
+
+ /**
+ * Configurators call this method to determine if the appender
+ * requires a layout.
+ *
+ * If this method returns true, meaning that layout is required,
+ * then the configurator will configure a layout using the configuration
+ * information at its disposal. If this method returns false,
+ * meaning that a layout is not required, then layout configuration will be
+ * skipped even if there is available layout configuration
+ * information at the disposal of the configurator.
+ *
+ * In the rather exceptional case, where the appender
+ * implementation admits a layout but can also work without it, then
+ * the appender should return true.
+ *
+ * @see LoggerAppender::requiresLayout()
+ * @return boolean
+ */
+ public function requiresLayout() {
+ return $this->requiresLayout;
+ }
+
+ /**
+ * Get the name of this appender.
+ * @see LoggerAppender::getName()
+ * @return string
+ */
+ public function getName() {
+ return $this->name;
+ }
+
+/**
+ * Set the name of this appender.
+ *
+ * The name is used by other components to identify this appender.
+ *
+ *
+ * @param string $name
+ */
+ public function setName($name) {
+ $this->name = $name;
+ }
+
+ /**
+ * Returns this appenders threshold level.
+ * See the {@link setThreshold()} method for the meaning of this option.
+ * @return LoggerLevel
+ */
+ public function getThreshold() {
+ return $this->threshold;
+ }
+
+ /**
+ * Set the threshold level of this appender.
+ *
+ * @param mixed $threshold can be a {@link LoggerLevel} object or a string.
+ * @see LoggerOptionConverter::toLevel()
+ */
+ public function setThreshold($threshold) {
+ if(is_string($threshold)) {
+ $this->threshold = LoggerOptionConverter::toLevel($threshold, null);
+ } else if($threshold instanceof LoggerLevel) {
+ $this->threshold = $threshold;
+ }
+ }
+
+ /**
+ * Check whether the message level is below the appender's threshold.
+ *
+ *
+ * If there is no threshold set, then the return value is always true.
+ * @param LoggerLevel $priority
+ * @return boolean true if priority is greater or equal than threshold
+ */
+ public function isAsSevereAsThreshold($priority) {
+ if($this->threshold === null) {
+ return true;
+ }
+ return $priority->isGreaterOrEqual($this->getThreshold());
+ }
- /**
- * Set the name of this appender.
- *
- * The name is used by other components to identify this appender.
- *
- * @param string $name
- */
- abstract public function setName($name);
+ /**
+ * Derived appenders should override this method if option structure
+ * requires it.
+ */
+ abstract public function activateOptions();
+
+ /**
+ * Subclasses of {@link LoggerAppender} should implement
+ * this method to perform actual logging.
+ *
+ * @param LoggerLoggingEvent $event
+ * @see doAppend()
+ * @abstract
+ */
+ abstract protected function append($event);
- /**
- * Configurators call this method to determine if the appender
- * requires a layout.
- *
- * If this method returns true, meaning that layout is required,
- * then the configurator will configure a layout using the configuration
- * information at its disposal. If this method returns false,
- * meaning that a layout is not required, then layout configuration will be
- * skipped even if there is available layout configuration
- * information at the disposal of the configurator.
- *
- * In the rather exceptional case, where the appender
- * implementation admits a layout but can also work without it, then
- * the appender should return true.
- *
- * @return boolean
- */
- abstract public function requiresLayout();
+ /**
+ * Release any resources allocated.
+ * Subclasses of {@link LoggerAppender} should implement
+ * this method to perform proper closing procedures.
+ * @abstract
+ */
+ abstract public function close();
+ /**
+ * Finalize this appender by calling the derived class' close() method.
+ */
+ public function finalize() {
+ // An appender might be closed then garbage collected. There is no
+ // point in closing twice.
+ if($this->closed) {
+ return;
+ }
+ $this->close();
+ }
+
+ /**
+ * Perform actions before object serialization.
+ *
+ * Call {@link finalize()} to properly close the appender.
+ */
+ function __sleep() {
+ $this->finalize();
+ return array_keys(get_object_vars($this));
+ }
+
+ public function __destruct() {
+ $this->finalize();
+ }
+
+/**
+ * Perform actions after object de-serialization.
+ *
+ * Call {@link activateOptions()} to properly setup the appender.
+ */
+ function __wakeup() {
+ $this->activateOptions();
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/LoggerAppenderSkeleton.php b/thirdparty/apache-log4php/src/main/php/LoggerAppenderSkeleton.php
deleted file mode 100644
index 2a14371..0000000
--- a/thirdparty/apache-log4php/src/main/php/LoggerAppenderSkeleton.php
+++ /dev/null
@@ -1,337 +0,0 @@
-name = $name;
- $this->clearFilters();
- }
-
- /**
- * @param LoggerFilter $newFilter add a new LoggerFilter
- * @see LoggerAppender::addFilter()
- */
- public function addFilter($newFilter) {
- if($this->headFilter === null) {
- $this->headFilter = $newFilter;
- $this->tailFilter = $this->headFilter;
- } else {
- $this->tailFilter->next = $newFilter;
- $this->tailFilter = $this->tailFilter->next;
- }
- }
-
- /**
- * Derived appenders should override this method if option structure
- * requires it.
- */
- abstract public function activateOptions();
-
- /**
- * Subclasses of {@link LoggerAppenderSkeleton} should implement
- * this method to perform actual logging.
- *
- * @param LoggerLoggingEvent $event
- * @see doAppend()
- * @abstract
- */
- abstract protected function append($event);
-
- /**
- * @see LoggerAppender::clearFilters()
- */
- public function clearFilters()
- {
- unset($this->headFilter);
- unset($this->tailFilter);
- $this->headFilter = null;
- $this->tailFilter = null;
- }
-
- /**
- * Finalize this appender by calling the derived class' close() method.
- */
- public function finalize()
- {
- // An appender might be closed then garbage collected. There is no
- // point in closing twice.
- if ($this->closed) return;
-
- LoggerLog::debug("LoggerAppenderSkeleton::finalize():name=[{$this->name}].");
-
- $this->close();
- }
-
- /**
- * Do not use this method.
- * @see LoggerAppender::getErrorHandler()
- * @return object
- */
- public function getErrorHandler()
- {
- return $this->errorHandler;
- }
-
- /**
- * @see LoggerAppender::getFilter()
- * @return LoggerFilter
- */
- public function getFilter()
- {
- return $this->headFilter;
- }
-
- /**
- * Return the first filter in the filter chain for this Appender.
- * The return value may be null if no is filter is set.
- * @return LoggerFilter
- */
- public function getFirstFilter()
- {
- return $this->headFilter;
- }
-
- /**
- * @see LoggerAppender::getLayout()
- * @return LoggerLayout
- */
- public function getLayout()
- {
- return $this->layout;
- }
-
- /**
- * @see LoggerAppender::getName()
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
-
- /**
- * Returns this appenders threshold level.
- * See the {@link setThreshold()} method for the meaning of this option.
- * @return LoggerLevel
- */
- public function getThreshold()
- {
- return $this->threshold;
- }
-
- /**
- * Check whether the message level is below the appender's threshold.
- *
- *
- * If there is no threshold set, then the return value is always true.
- * @param LoggerLevel $priority
- * @return boolean true if priority is greater or equal than threshold
- */
- public function isAsSevereAsThreshold($priority)
- {
- if ($this->threshold === null)
- return true;
-
- return $priority->isGreaterOrEqual($this->getThreshold());
- }
-
- /**
- * @see LoggerAppender::doAppend()
- * @param LoggerLoggingEvent $event
- */
- public function doAppend($event)
- {
- LoggerLog::debug("LoggerAppenderSkeleton::doAppend()");
-
- if ($this->closed) {
- LoggerLog::debug("LoggerAppenderSkeleton::doAppend() Attempted to append to closed appender named [{$this->name}].");
- return;
- }
- if(!$this->isAsSevereAsThreshold($event->getLevel())) {
- LoggerLog::debug("LoggerAppenderSkeleton::doAppend() event level is less severe than threshold.");
- return;
- }
-
- $f = $this->getFirstFilter();
-
- while($f !== null) {
- switch ($f->decide($event)) {
- case LOG4PHP_LOGGER_FILTER_DENY: return;
- case LOG4PHP_LOGGER_FILTER_ACCEPT: return $this->append($event);
- case LOG4PHP_LOGGER_FILTER_NEUTRAL: $f = $f->getNext();
- }
- }
- $this->append($event);
- }
-
-
- /**
- * @see LoggerAppender::requiresLayout()
- * @return boolean
- */
- public function requiresLayout()
- {
- return $this->requiresLayout;
- }
-
- /**
- * @see LoggerAppender::setErrorHandler()
- * @param object
- */
- public function setErrorHandler($errorHandler)
- {
- if($errorHandler == null) {
- // We do not throw exception here since the cause is probably a
- // bad config file.
- LoggerLog::warn("You have tried to set a null error-handler.");
- } else {
- $this->errorHandler = $errorHandler;
- }
- }
-
- /**
- * @see LoggerAppender::setLayout()
- * @param LoggerLayout $layout
- */
- public function setLayout($layout)
- {
- if ($this->requiresLayout())
- $this->layout = $layout;
- }
-
- /**
- * @see LoggerAppender::setName()
- * @param string $name
- */
- public function setName($name)
- {
- $this->name = $name;
- }
-
- /**
- * Set the threshold level of this appender.
- *
- * @param mixed $threshold can be a {@link LoggerLevel} object or a string.
- * @see LoggerOptionConverter::toLevel()
- */
- public function setThreshold($threshold)
- {
- if (is_string($threshold)) {
- $this->threshold = LoggerOptionConverter::toLevel($threshold, null);
- }elseif ($threshold instanceof LoggerLevel) {
- $this->threshold = $threshold;
- }
- }
-
- /**
- * Perform actions before object serialization.
- *
- * Call {@link finalize()} to properly close the appender.
- */
- function __sleep()
- {
- $this->finalize();
- return array_keys(get_object_vars($this));
- }
-
- /**
- * Perform actions after object de-serialization.
- *
- * Call {@link activateOptions()} to properly setup the appender.
- */
- function __wakeup()
- {
- $this->activateOptions();
- }
-
-}
diff --git a/thirdparty/apache-log4php/src/main/php/spi/LoggerConfigurator.php b/thirdparty/apache-log4php/src/main/php/LoggerConfigurator.php
index 555b6c7..891350a 100644
--- a/thirdparty/apache-log4php/src/main/php/spi/LoggerConfigurator.php
+++ b/thirdparty/apache-log4php/src/main/php/LoggerConfigurator.php
@@ -1,13 +1,13 @@
inherited.
* {@link LOG4PHP_LOGGER_CONFIGURATOR_NULL} is a synonym.
@@ -37,26 +32,25 @@ define('LOG4PHP_LOGGER_CONFIGURATOR_INHERITED', 'inherited');
* {@link LOG4PHP_LOGGER_CONFIGURATOR_INHERITED}.
* The current value of this string constant is null.
*/
-define('LOG4PHP_LOGGER_CONFIGURATOR_NULL', 'null');
+define('LOG4PHP_LOGGER_CONFIGURATOR_NULL', 'null');
/**
* Implemented by classes capable of configuring log4php using a URL.
- *
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ *
+ * @version $Revision: 771704 $
* @package log4php
- * @subpackage spi
+ * @subpackage spi
*/
interface LoggerConfigurator {
- /**
- * Interpret a resource pointed by a url and configure accordingly.
- *
- * The configuration is done relative to the repository
- * parameter.
- *
- * @param string $url The URL to parse
- */
- public static function configure($url=null);
-
+ /**
+ * Interpret a resource pointed by a url and configure accordingly.
+ *
+ * The configuration is done relative to the repository
+ * parameter.
+ *
+ * @param string $url The URL to parse
+ */
+ public static function configure($url = null);
+
}
diff --git a/thirdparty/apache-log4php/src/main/php/LoggerDefaultCategoryFactory.php b/thirdparty/apache-log4php/src/main/php/LoggerDefaultCategoryFactory.php
index 36fcf0c..571c7a8 100644
--- a/thirdparty/apache-log4php/src/main/php/LoggerDefaultCategoryFactory.php
+++ b/thirdparty/apache-log4php/src/main/php/LoggerDefaultCategoryFactory.php
@@ -1,13 +1,13 @@
The {@link decide()} method must return one
- * of the integer constants {@link LOG4PHP_LOG4PHP_LOGGER_FILTER_DENY},
- * {@link LOG4PHP_LOGGER_FILTER_NEUTRAL} or {@link LOG4PHP_LOGGER_FILTER_ACCEPT}.
+ * of the integer constants {@link LoggerFilter::DENY},
+ * {@link LoggerFilter::NEUTRAL} or {@link LoggerFilter::ACCEPT}.
*
- * If the value {@link LOG4PHP_LOGGER_FILTER_DENY} is returned, then the log event is
+ *
If the value {@link LoggerFilter::DENY} is returned, then the log event is
* dropped immediately without consulting with the remaining
* filters.
*
- *
If the value {@link LOG4PHP_LOGGER_FILTER_NEUTRAL} is returned, then the next filter
+ *
If the value {@link LoggerFilter::NEUTRAL} is returned, then the next filter
* in the chain is consulted. If there are no more filters in the
* chain, then the log event is logged. Thus, in the presence of no
* filters, the default behaviour is to log all logging events.
*
- *
If the value {@link LOG4PHP_LOGGER_FILTER_ACCEPT} is returned, then the log
+ *
If the value {@link LoggerFilter::ACCEPT} is returned, then the log
* event is logged without consulting the remaining filters.
*
*
The philosophy of log4php filters is largely inspired from the
* Linux ipchains.
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 779002 $
* @package log4php
* @subpackage spi
*/
-class LoggerFilter {
+abstract class LoggerFilter {
+
+ /**
+ * The log event must be logged immediately without consulting with
+ * the remaining filters, if any, in the chain.
+ */
+ const ACCEPT = 1;
+
+ /**
+ * This filter is neutral with respect to the log event. The
+ * remaining filters, if any, should be consulted for a final decision.
+ */
+ const NEUTRAL = 0;
+
+ /**
+ * The log event must be dropped immediately without consulting
+ * with the remaining filters, if any, in the chain.
+ */
+ const DENY = -1;
- /**
- * @var LoggerFilter Points to the next {@link LoggerFilter} in the filter chain.
- */
- protected $next;
+ /**
+ * @var LoggerFilter Points to the next {@link LoggerFilter} in the filter chain.
+ */
+ protected $next;
- /**
- * Usually filters options become active when set. We provide a
- * default do-nothing implementation for convenience.
- */
- public function activateOptions()
- {
- return;
- }
+ /**
+ * Usually filters options become active when set. We provide a
+ * default do-nothing implementation for convenience.
+ */
+ public function activateOptions() {
+ }
- /**
- * Decide what to do.
- *
If the decision is {@link LOG4PHP_LOGGER_FILTER_DENY}, then the event will be
- * dropped. If the decision is {@link LOG4PHP_LOGGER_FILTER_NEUTRAL}, then the next
- * filter, if any, will be invoked. If the decision is {@link LOG4PHP_LOGGER_FILTER_ACCEPT} then
- * the event will be logged without consulting with other filters in
- * the chain.
- *
- * @param LoggerLoggingEvent $event The {@link LoggerLoggingEvent} to decide upon.
- * @return integer {@link LOG4PHP_LOGGER_FILTER_NEUTRAL} or {@link LOG4PHP_LOGGER_FILTER_DENY}|{@link LOG4PHP_LOGGER_FILTER_ACCEPT}
- */
- public function decide($event)
- {
- return LOG4PHP_LOGGER_FILTER_NEUTRAL;
- }
+ /**
+ * Decide what to do.
+ *
If the decision is {@link LoggerFilter::DENY}, then the event will be
+ * dropped. If the decision is {@link LoggerFilter::NEUTRAL}, then the next
+ * filter, if any, will be invoked. If the decision is {@link LoggerFilter::ACCEPT} then
+ * the event will be logged without consulting with other filters in
+ * the chain.
+ *
+ * @param LoggerLoggingEvent $event The {@link LoggerLoggingEvent} to decide upon.
+ * @return integer {@link LoggerFilter::NEUTRAL} or {@link LoggerFilter::DENY}|{@link LoggerFilter::ACCEPT}
+ */
+ public function decide(LoggerLoggingEvent $event) {
+ return self::NEUTRAL;
+ }
- public function getNext() {
- return $this->next;
- }
+ public function getNext() {
+ return $this->next;
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/LoggerHierarchy.php b/thirdparty/apache-log4php/src/main/php/LoggerHierarchy.php
index 2547655..75dc22b 100644
--- a/thirdparty/apache-log4php/src/main/php/LoggerHierarchy.php
+++ b/thirdparty/apache-log4php/src/main/php/LoggerHierarchy.php
@@ -1,13 +1,13 @@
The casual user does not have to deal with this class directly.
*
* The structure of the logger hierarchy is maintained by the
@@ -49,324 +45,235 @@ require_once(LOG4PHP_DIR . '/LoggerDefaultCategoryFactory.php');
* to the provision node. Other descendants of the same ancestor add
* themselves to the previously created provision node.
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 784933 $
* @package log4php
*/
+ /*
+ * TODO:
+ * - addHierarchyEventListener($listener) not supported
+ * - emitNoAppenderWarning($cat) not supported
+ * - fireAddAppenderEvent not supported
+ */
class LoggerHierarchy {
+ /** Default Factory */
+ protected $defaultFactory;
+
+ /** array hierarchy tree. saves here all loggers */
+ protected $ht = array();
+
+ /** The root Logger */
+ protected $root = null;
+
+ /** LoggerRendererMap */
+ protected $rendererMap;
- /**
- * @var object currently unused
- */
- protected $defaultFactory;
-
- /**
- * @var boolean activate internal logging
- * @see LoggerLog
- */
- public $debug = false;
-
- /**
- * @var array hierarchy tree. saves here all loggers
- */
- protected $ht = array();
-
- /**
- * @var LoggerRoot
- */
- protected $root = null;
-
- /**
- * @var LoggerRendererMap
- */
- protected $rendererMap;
-
- /**
- * @var LoggerLevel main level threshold
- */
- protected $threshold;
-
- /**
- * @var boolean currently unused
- */
- protected $emittedNoAppenderWarning = false;
-
- /**
- * @var boolean currently unused
- */
- protected $emittedNoResourceBundleWarning = false;
-
- public static function singleton()
- {
- static $instance;
-
- if (!isset($instance))
- $instance = new LoggerHierarchy(new LoggerRoot());
- return $instance;
- }
-
- /**
- * Create a new logger hierarchy.
- * @param object $root the root logger
- */
- protected function __construct($root)
- {
- $this->root = $root;
- // Enable all level levels by default.
- $this->setThreshold(LoggerLevel::getLevelAll());
- $this->root->setHierarchy($this);
- $this->rendererMap = new LoggerRendererMap();
- $this->defaultFactory = new LoggerDefaultCategoryFactory();
- }
-
- /**
- * Add a HierarchyEventListener event to the repository.
- * Not Yet Impl.
- */
- public function addHierarchyEventListener($listener)
- {
- return;
- }
-
- /**
- * Add an object renderer for a specific class.
- * @param string $classToRender
- * @param LoggerObjectRenderer $or
- */
- public function addRenderer($classToRender, $or)
- {
- $this->rendererMap->put($classToRender, $or);
- }
-
- /**
- * This call will clear all logger definitions from the internal hashtable.
- */
- public function clear()
- {
- $this->ht = array();
- }
-
- public function emitNoAppenderWarning($cat)
- {
- return;
- }
-
- /**
- * Check if the named logger exists in the hierarchy.
- * @param string $name
- * @return boolean
- */
- public function exists($name)
- {
- return isset($this->ht[$name]);
- }
+ /** LoggerLevel main level threshold */
+ protected $threshold;
+
+ /* TODO: In log4j is this class not a singleton. Why is it in log4php? */
+ public static function singleton() {
+ static $instance;
+ if(!isset($instance)) {
+ $instance = new LoggerHierarchy(new LoggerRoot());
+ }
+ return $instance;
+ }
+
+ /**
+ * Create a new logger hierarchy.
+ * @param object $root the root logger
+ */
+ public function __construct(LoggerRoot $root) {
+ $this->root = $root;
+ $this->root->setHierarchy($this);
+ $this->setThreshold(LoggerLevel::getLevelAll());
+ $this->rendererMap = new LoggerRendererMap();
+ $this->defaultFactory = new LoggerDefaultCategoryFactory();
+ }
+
+ /**
+ * Add an object renderer for a specific class.
+ * @param string $classToRender
+ * @param LoggerObjectRenderer $or
+ */
+ public function addRenderer($classToRender, $or) {
+ $this->rendererMap->put($classToRender, $or);
+ }
+
+ /**
+ * This call will clear all logger definitions from the internal hashtable.
+ */
+ public function clear() {
+ $this->ht = array();
+ }
+
+ /**
+ * Check if the named logger exists in the hierarchy.
+ * @param string $name
+ * @return boolean
+ */
+ public function exists($name) {
+ return isset($this->ht[$name]);
+ }
- /**
- * Not Implemented.
- * @param Logger $logger
- * @param LoggerAppender $appender
- */
- public function fireAddAppenderEvent($logger, $appender)
- {
- return;
- }
-
- /**
- * @deprecated Please use {@link getCurrentLoggers()} instead.
- */
- public function getCurrentCategories()
- {
- return $this->getCurrentLoggers();
- }
-
- /**
- * Returns all the currently defined categories in this hierarchy as an array.
- * @return array
- */
- public function getCurrentLoggers()
- {
- return array_values($this->ht);
- }
-
- /**
- * Return a new logger instance named as the first parameter using the default factory.
- *
- * @param string $name logger name
- * @param LoggerFactory $factory a {@link LoggerFactory} instance or null
- * @return Logger
- */
- public function getLogger($name, $factory = null)
- {
- if ($factory === null) {
- return $this->getLoggerByFactory($name, $this->defaultFactory);
- } else {
- return $this->getLoggerByFactory($name, $factory);
- }
- }
-
- /**
- * Return a new logger instance named as the first parameter using the default factory.
- *
- * @param string $name logger name
- * @return Logger
- * @todo merge with {@link getLogger()}
- */
- public function getLoggerByFactory($name, $factory)
- {
- if (!isset($this->ht[$name])) {
- $this->ht[$name] = $factory->makeNewLoggerInstance($name);
- $this->ht[$name]->setHierarchy($this);
- $nodes = explode('.', $name);
- $firstNode = array_shift($nodes);
- if ( $firstNode != $name and isset($this->ht[$firstNode])) {
- $this->ht[$name]->setParent($this->ht[$firstNode]);
- } else {
- $this->ht[$name]->setParent($this->root);
- }
- if (sizeof($nodes) > 0) {
- // find parent node
- foreach ($nodes as $node) {
- $parentNode = "$firstNode.$node";
- if (isset($this->ht[$parentNode]) and $parentNode != $name) {
- $this->ht[$name]->setParent($this->ht[$parentNode]);
- }
- $firstNode .= ".$node";
- }
- }
- }
- return $this->ht[$name];
- }
-
- /**
- * @return LoggerRendererMap Get the renderer map for this hierarchy.
- */
- public function getRendererMap()
- {
- return $this->rendererMap;
- }
-
- /**
- * @return LoggerRoot Get the root of this hierarchy.
- */
- public function getRootLogger()
- {
- if (!isset($this->root) or $this->root == null)
- $this->root = new LoggerRoot();
- return $this->root;
- }
-
- /**
- * @return LoggerLevel Returns the threshold Level.
- */
- public function getThreshold()
- {
- return $this->threshold;
- }
+ /**
+ * Returns all the currently defined categories in this hierarchy as an array.
+ * @return array
+ */
+ public function getCurrentLoggers() {
+ return array_values($this->ht);
+ }
+
+ /**
+ * Return a new logger instance named as the first parameter using the default factory.
+ *
+ * @param string $name logger name
+ * @param LoggerFactory $factory a {@link LoggerFactory} instance or null
+ * @return Logger
+ */
+ public function &getLogger($name, $factory = null) {
+ if($factory === null) {
+ $factory = $this->defaultFactory;
+ }
+
+ if(!isset($this->ht[$name])) {
+ $this->ht[$name] = $factory->makeNewLoggerInstance($name);
+ $this->ht[$name]->setHierarchy($this);
+ $nodes = explode('.', $name);
+ $firstNode = array_shift($nodes);
+
+ // if name is not a first node but another first node is their
+ if($firstNode != $name and isset($this->ht[$firstNode])) {
+ $this->ht[$name]->setParent($this->ht[$firstNode]);
+ } else {
+ // if there is no father, set root logger as father
+ $this->ht[$name]->setParent($this->root);
+ }
+
+ // if there are more nodes than one
+ if(count($nodes) > 0) {
+ // find parent node
+ foreach($nodes as $node) {
+ $parentNode = "$firstNode.$node";
+ if(isset($this->ht[$parentNode]) and $parentNode != $name) {
+
+ $this->ht[$name]->setParent($this->ht[$parentNode]);
+ }
+ $firstNode .= ".$node";
+ }
+ }
+ }
+
+ return $this->ht[$name];
+ }
+
+ /**
+ * @return LoggerRendererMap Get the renderer map for this hierarchy.
+ */
+ public function getRendererMap() {
+ return $this->rendererMap;
+ }
+
+ /**
+ * @return LoggerRoot Get the root of this hierarchy.
+ */
+ public function getRootLogger() {
+ if(!isset($this->root) or $this->root == null) {
+ $this->root = new LoggerRoot();
+ }
+ return $this->root;
+ }
+
+ /**
+ * @return LoggerLevel Returns the threshold Level.
+ */
+ public function getThreshold() {
+ return $this->threshold;
+ }
- /**
- * This method will return true if this repository is disabled
- * for level object passed as parameter and false otherwise.
- * @return boolean
- */
- public function isDisabled($level)
- {
- return ($this->threshold->level > $level->level);
- }
-
- /**
- * @deprecated Deprecated with no replacement.
- */
- public function overrideAsNeeded($override)
- {
- return;
- }
-
- /**
- * Reset all values contained in this hierarchy instance to their
- * default.
- *
- * This removes all appenders from all categories, sets
- * the level of all non-root categories to null,
- * sets their additivity flag to true and sets the level
- * of the root logger to {@link LOGGER_LEVEL_DEBUG}. Moreover,
- * message disabling is set its default "off" value.
- *
- * Existing categories are not removed. They are just reset.
- *
- *
This method should be used sparingly and with care as it will
- * block all logging until it is completed.
- */
- public function resetConfiguration()
- {
- $root = $this->getRootLogger();
-
- $root->setLevel(LoggerLevel::getLevelDebug());
- $this->setThreshold(LoggerLevel::getLevelAll());
- $this->shutDown();
- $loggers = $this->getCurrentLoggers();
- $enumLoggers = sizeof($loggers);
- for ($i = 0; $i < $enumLoggers; $i++) {
- $loggers[$i]->setLevel(null);
- $loggers[$i]->setAdditivity(true);
- $loggers[$i]->setResourceBundle(null);
- $loggers[$i]->removeAllAppenders();
- }
- $this->rendererMap->clear();
- }
-
- /**
- * @deprecated Deprecated with no replacement.
- */
- public function setDisableOverride($override)
- {
- return;
- }
-
- /**
- * Used by subclasses to add a renderer to the hierarchy passed as parameter.
- * @param string $renderedClass a LoggerRenderer class name
- * @param LoggerRenderer $renderer
- *
- */
- public function setRenderer($renderedClass, $renderer)
- {
- $this->rendererMap->put($renderedClass, $renderer);
- }
-
- /**
- * set a new threshold level
- *
- * @param LoggerLevel $l
- */
- public function setThreshold($l)
- {
- if ($l !== null)
- $this->threshold = $l;
- }
-
- /**
- * Shutting down a hierarchy will safely close and remove
- * all appenders in all categories including the root logger.
- *
- * Some appenders such as {@link LoggerSocketAppender}
- * need to be closed before the
- * application exists. Otherwise, pending logging events might be
- * lost.
- *
- *
The shutdown method is careful to close nested
- * appenders before closing regular appenders. This is allows
- * configurations where a regular appender is attached to a logger
- * and again to a nested appender.
- */
- public function shutdown()
- {
- $this->root->removeAllAppenders();
- $cats = $this->getCurrentLoggers();
- $enumCats = sizeof($cats);
- if ($enumCats > 0) {
- for ($i = 0; $i < $enumCats; $i++) {
- $cats[$i]->removeAllAppenders();
- }
- }
- }
+ /**
+ * This method will return true if this repository is disabled
+ * for level object passed as parameter and false otherwise.
+ * @return boolean
+ */
+ public function isDisabled(LoggerLevel $level) {
+ return ($this->threshold->toInt() > $level->toInt());
+ }
+
+ /**
+ * Reset all values contained in this hierarchy instance to their
+ * default.
+ *
+ * This removes all appenders from all categories, sets
+ * the level of all non-root categories to null,
+ * sets their additivity flag to true and sets the level
+ * of the root logger to {@link LOGGER_LEVEL_DEBUG}. Moreover,
+ * message disabling is set its default "off" value.
+ *
+ *
Existing categories are not removed. They are just reset.
+ *
+ *
This method should be used sparingly and with care as it will
+ * block all logging until it is completed.
+ */
+ public function resetConfiguration() {
+ $root = $this->getRootLogger();
+
+ $root->setLevel(LoggerLevel::getLevelDebug());
+ $this->setThreshold(LoggerLevel::getLevelAll());
+ $this->shutDown();
+ $loggers = $this->getCurrentLoggers();
+ $enumLoggers = count($loggers);
+ for($i = 0; $i < $enumLoggers; $i++) {
+ $loggers[$i]->setLevel(null);
+ $loggers[$i]->setAdditivity(true);
+ $loggers[$i]->removeAllAppenders();
+ }
+ $this->rendererMap->clear();
+ }
+
+ /**
+ * Used by subclasses to add a renderer to the hierarchy passed as parameter.
+ * @param string $renderedClass a LoggerRenderer class name
+ * @param LoggerRenderer $renderer
+ *
+ */
+ public function setRenderer($renderedClass, $renderer) {
+ $this->rendererMap->put($renderedClass, $renderer);
+ }
+
+ /**
+ * set a new threshold level
+ *
+ * @param LoggerLevel $l
+ */
+ public function setThreshold(LoggerLevel $l) {
+ if($l !== null) {
+ $this->threshold = $l;
+ }
+ }
+
+ /**
+ * Shutting down a hierarchy will safely close and remove
+ * all appenders in all categories including the root logger.
+ *
+ * Some appenders such as {@link LoggerSocketAppender}
+ * need to be closed before the
+ * application exists. Otherwise, pending logging events might be
+ * lost.
+ *
+ *
The shutdown method is careful to close nested
+ * appenders before closing regular appenders. This is allows
+ * configurations where a regular appender is attached to a logger
+ * and again to a nested appender.
+ */
+ public function shutdown() {
+ $this->root->removeAllAppenders();
+ $cats = $this->getCurrentLoggers();
+ $enumCats = count($cats);
+ if($enumCats > 0) {
+ for($i = 0; $i < $enumCats; $i++) {
+ $cats[$i]->removeAllAppenders();
+ }
+ }
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/LoggerLayout.php b/thirdparty/apache-log4php/src/main/php/LoggerLayout.php
index 6fb7070..219a6e7 100644
--- a/thirdparty/apache-log4php/src/main/php/LoggerLayout.php
+++ b/thirdparty/apache-log4php/src/main/php/LoggerLayout.php
@@ -1,13 +1,13 @@
getRenderedMessage();
- }
-
- /**
- * Returns the content type output by this layout.
- * @return string
- */
- public function getContentType()
- {
- return "text/plain";
- }
-
- /**
- * Returns the footer for the layout format.
- * @return string
- */
- public function getFooter()
- {
- return null;
- }
+ /**
+ * Override this method to create your own layout format.
+ *
+ * @param LoggerLoggingEvent
+ * @return string
+ */
+ public function format(LoggerLoggingEvent $event) {
+ return $event->getRenderedMessage();
+ }
+
+ /**
+ * Returns the content type output by this layout.
+ * @return string
+ */
+ public function getContentType() {
+ return "text/plain";
+ }
+
+ /**
+ * Returns the footer for the layout format.
+ * @return string
+ */
+ public function getFooter() {
+ return null;
+ }
- /**
- * Returns the header for the layout format.
- * @return string
- */
- public function getHeader()
- {
- return null;
- }
+ /**
+ * Returns the header for the layout format.
+ * @return string
+ */
+ public function getHeader() {
+ return null;
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/LoggerLevel.php b/thirdparty/apache-log4php/src/main/php/LoggerLevel.php
index e83b9ca..cf2fd20 100644
--- a/thirdparty/apache-log4php/src/main/php/LoggerLevel.php
+++ b/thirdparty/apache-log4php/src/main/php/LoggerLevel.php
@@ -1,13 +1,13 @@
OFF, FATAL, ERROR,
* WARN, INFODEBUG and
@@ -45,222 +28,230 @@ define('LOG4PHP_LEVEL_ALL_INT', -2147483647);
*
The LoggerLevel class may be subclassed to define a larger
* level set.
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 776571 $
* @package log4php
* @since 0.5
*/
class LoggerLevel {
+
+ const OFF = 2147483647;
+ const FATAL = 50000;
+ const ERROR = 40000;
+ const WARN = 30000;
+ const INFO = 20000;
+ const DEBUG = 10000;
+ const ALL = -2147483647;
- /**
- * @var integer
- */
- public $level;
+ /**
+ * TODO: check if still necessary or to be refactored
+ * @var integer
+ */
+ private $level;
- /**
- * @var string
- */
- public $levelStr;
+ /**
+ * Contains a list of instantiated levels
+ */
+ private static $levelMap;
+
+ /**
+ * @var string
+ */
+ private $levelStr;
- /**
- * @var integer
- */
- public $syslogEquivalent;
+ /**
+ * @var integer
+ */
+ private $syslogEquivalent;
- /**
- * Constructor
- *
- * @param integer $level
- * @param string $levelStr
- * @param integer $syslogEquivalent
- */
- public function __construct($level, $levelStr, $syslogEquivalent)
- {
- $this->level = $level;
- $this->levelStr = $levelStr;
- $this->syslogEquivalent = $syslogEquivalent;
- }
+ /**
+ * Constructor
+ *
+ * @param integer $level
+ * @param string $levelStr
+ * @param integer $syslogEquivalent
+ */
+ private function __construct($level, $levelStr, $syslogEquivalent) {
+ $this->level = $level;
+ $this->levelStr = $levelStr;
+ $this->syslogEquivalent = $syslogEquivalent;
+ }
- /**
- * Two priorities are equal if their level fields are equal.
- *
- * @param object $o
- * @return boolean
- */
- public function equals($o)
- {
- if ($o instanceof LoggerLevel) {
- return ($this->level == $o->level);
- } else {
- return false;
- }
- }
-
- /**
- * Returns an Off Level
- * @static
- * @return LoggerLevel
- */
- public static function getLevelOff()
- {
- static $level;
- if (!isset($level)) $level = new LoggerLevel(LOG4PHP_LEVEL_OFF_INT, 'OFF', 0);
- return $level;
- }
+ /**
+ * Two priorities are equal if their level fields are equal.
+ *
+ * @param object $o
+ * @return boolean
+ */
+ public function equals($o) {
+ if($o instanceof LoggerLevel) {
+ if($this->level == $o->level) {
+ return true;
+ }
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Returns an Off Level
+ * @static
+ * @return LoggerLevel
+ */
+ public static function getLevelOff() {
+ if(!isset(self::$levelMap[LoggerLevel::OFF])) {
+ self::$levelMap[LoggerLevel::OFF] = new LoggerLevel(LoggerLevel::OFF, 'OFF', 0);
+ }
+ return self::$levelMap[LoggerLevel::OFF];
+ }
- /**
- * Returns a Fatal Level
- * @static
- * @return LoggerLevel
- */
- public static function getLevelFatal()
- {
- static $level;
- if (!isset($level)) $level = new LoggerLevel(LOG4PHP_LEVEL_FATAL_INT, 'FATAL', 0);
- return $level;
- }
-
- /**
- * Returns an Error Level
- * @static
- * @return LoggerLevel
- */
- public static function getLevelError()
- {
- static $level;
- if (!isset($level)) $level = new LoggerLevel(LOG4PHP_LEVEL_ERROR_INT, 'ERROR', 3);
- return $level;
- }
-
- /**
- * Returns a Warn Level
- * @static
- * @return LoggerLevel
- */
- public static function getLevelWarn()
- {
- static $level;
- if (!isset($level)) $level = new LoggerLevel(LOG4PHP_LEVEL_WARN_INT, 'WARN', 4);
- return $level;
- }
+ /**
+ * Returns a Fatal Level
+ * @static
+ * @return LoggerLevel
+ */
+ public static function getLevelFatal() {
+ if(!isset(self::$levelMap[LoggerLevel::FATAL])) {
+ self::$levelMap[LoggerLevel::FATAL] = new LoggerLevel(LoggerLevel::FATAL, 'FATAL', 0);
+ }
+ return self::$levelMap[LoggerLevel::FATAL];
+ }
+
+ /**
+ * Returns an Error Level
+ * @static
+ * @return LoggerLevel
+ */
+ public static function getLevelError() {
+ if(!isset(self::$levelMap[LoggerLevel::ERROR])) {
+ self::$levelMap[LoggerLevel::ERROR] = new LoggerLevel(LoggerLevel::ERROR, 'ERROR', 3);
+ }
+ return self::$levelMap[LoggerLevel::ERROR];
+ }
+
+ /**
+ * Returns a Warn Level
+ * @static
+ * @return LoggerLevel
+ */
+ public static function getLevelWarn() {
+ if(!isset(self::$levelMap[LoggerLevel::WARN])) {
+ self::$levelMap[LoggerLevel::WARN] = new LoggerLevel(LoggerLevel::WARN, 'WARN', 4);
+ }
+ return self::$levelMap[LoggerLevel::WARN];
+ }
- /**
- * Returns an Info Level
- * @static
- * @return LoggerLevel
- */
- public static function getLevelInfo()
- {
- static $level;
- if (!isset($level)) $level = new LoggerLevel(LOG4PHP_LEVEL_INFO_INT, 'INFO', 6);
- return $level;
- }
+ /**
+ * Returns an Info Level
+ * @static
+ * @return LoggerLevel
+ */
+ public static function getLevelInfo() {
+ if(!isset(self::$levelMap[LoggerLevel::INFO])) {
+ self::$levelMap[LoggerLevel::INFO] = new LoggerLevel(LoggerLevel::INFO, 'INFO', 6);
+ }
+ return self::$levelMap[LoggerLevel::INFO];
+ }
- /**
- * Returns a Debug Level
- * @static
- * @return LoggerLevel
- */
- public static function getLevelDebug()
- {
- static $level;
- if (!isset($level)) $level = new LoggerLevel(LOG4PHP_LEVEL_DEBUG_INT, 'DEBUG', 7);
- return $level;
- }
+ /**
+ * Returns a Debug Level
+ * @static
+ * @return LoggerLevel
+ */
+ public static function getLevelDebug() {
+ if(!isset(self::$levelMap[LoggerLevel::DEBUG])) {
+ self::$levelMap[LoggerLevel::DEBUG] = new LoggerLevel(LoggerLevel::DEBUG, 'DEBUG', 7);
+ }
+ return self::$levelMap[LoggerLevel::DEBUG];
+ }
- /**
- * Returns an All Level
- * @static
- * @return LoggerLevel
- */
- public static function getLevelAll()
- {
- static $level;
- if (!isset($level)) $level = new LoggerLevel(LOG4PHP_LEVEL_ALL_INT, 'ALL', 7);
- return $level;
- }
-
- /**
- * Return the syslog equivalent of this priority as an integer.
- * @final
- * @return integer
- */
- public function getSyslogEquivalent()
- {
- return $this->syslogEquivalent;
- }
+ /**
+ * Returns an All Level
+ * @static
+ * @return LoggerLevel
+ */
+ public static function getLevelAll() {
+ if(!isset(self::$levelMap[LoggerLevel::ALL])) {
+ self::$levelMap[LoggerLevel::ALL] = new LoggerLevel(LoggerLevel::ALL, 'ALL', 7);
+ }
+ return self::$levelMap[LoggerLevel::ALL];
+ }
+
+ /**
+ * Return the syslog equivalent of this priority as an integer.
+ * @final
+ * @return integer
+ */
+ public function getSyslogEquivalent() {
+ return $this->syslogEquivalent;
+ }
- /**
- * Returns true if this level has a higher or equal
- * level than the level passed as argument, false
- * otherwise.
- *
- * You should think twice before overriding the default
- * implementation of isGreaterOrEqual method.
- *
- * @param LoggerLevel $r
- * @return boolean
- */
- public function isGreaterOrEqual($r)
- {
- return $this->level >= $r->level;
- }
+ /**
+ * Returns true if this level has a higher or equal
+ * level than the level passed as argument, false
+ * otherwise.
+ *
+ *
You should think twice before overriding the default
+ * implementation of isGreaterOrEqual method.
+ *
+ * @param LoggerLevel $r
+ * @return boolean
+ */
+ public function isGreaterOrEqual($r) {
+ return $this->level >= $r->level;
+ }
- /**
- * Returns the string representation of this priority.
- * @return string
- * @final
- */
- public function toString()
- {
- return $this->levelStr;
- }
+ /**
+ * Returns the string representation of this priority.
+ * @return string
+ * @final
+ */
+ public function toString() {
+ return $this->levelStr;
+ }
- /**
- * Returns the integer representation of this level.
- * @return integer
- */
- public function toInt()
- {
- return $this->level;
- }
+ /**
+ * Returns the integer representation of this level.
+ * @return integer
+ */
+ public function toInt() {
+ return $this->level;
+ }
- /**
- * Convert the string passed as argument to a level. If the
- * conversion fails, then this method returns a DEBUG Level.
- *
- * @param mixed $arg
- * @param LoggerLevel $default
- * @static
- */
- public static function toLevel($arg, $defaultLevel = null)
- {
- if ($defaultLevel === null) {
- return self::toLevel($arg, self::getLevelDebug());
- } else {
- if (is_int($arg)) {
- switch($arg) {
- case LOG4PHP_LEVEL_ALL_INT: return self::getLevelAll();
- case LOG4PHP_LEVEL_DEBUG_INT: return self::getLevelDebug();
- case LOG4PHP_LEVEL_INFO_INT: return self::getLevelInfo();
- case LOG4PHP_LEVEL_WARN_INT: return self::getLevelWarn();
- case LOG4PHP_LEVEL_ERROR_INT: return self::getLevelError();
- case LOG4PHP_LEVEL_FATAL_INT: return self::getLevelFatal();
- case LOG4PHP_LEVEL_OFF_INT: return self::getLevelOff();
- default: return $defaultLevel;
- }
- } else {
- switch(strtoupper($arg)) {
- case 'ALL': return self::getLevelAll();
- case 'DEBUG': return self::getLevelDebug();
- case 'INFO': return self::getLevelInfo();
- case 'WARN': return self::getLevelWarn();
- case 'ERROR': return self::getLevelError();
- case 'FATAL': return self::getLevelFatal();
- case 'OFF': return self::getLevelOff();
- default: return $defaultLevel;
- }
- }
- }
- }
+ /**
+ * Convert the string passed as argument to a level. If the
+ * conversion fails, then this method returns a DEBUG Level.
+ *
+ * @param mixed $arg
+ * @param LoggerLevel $default
+ * @static
+ */
+ public static function toLevel($arg, $defaultLevel = null) {
+ if($defaultLevel === null) {
+ return self::toLevel($arg, self::getLevelDebug());
+ } else {
+ if(is_int($arg)) {
+ switch($arg) {
+ case self::ALL: return self::getLevelAll();
+ case self::DEBUG: return self::getLevelDebug();
+ case self::INFO: return self::getLevelInfo();
+ case self::WARN: return self::getLevelWarn();
+ case self::ERROR: return self::getLevelError();
+ case self::FATAL: return self::getLevelFatal();
+ case self::OFF: return self::getLevelOff();
+ default: return $defaultLevel;
+ }
+ } else {
+ switch(strtoupper($arg)) {
+ case 'ALL': return self::getLevelAll();
+ case 'DEBUG': return self::getLevelDebug();
+ case 'INFO': return self::getLevelInfo();
+ case 'WARN': return self::getLevelWarn();
+ case 'ERROR': return self::getLevelError();
+ case 'FATAL': return self::getLevelFatal();
+ case 'OFF': return self::getLevelOff();
+ default: return $defaultLevel;
+ }
+ }
+ }
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/spi/LoggerLocationInfo.php b/thirdparty/apache-log4php/src/main/php/LoggerLocationInfo.php
index 941adcf..b60b49f 100644
--- a/thirdparty/apache-log4php/src/main/php/spi/LoggerLocationInfo.php
+++ b/thirdparty/apache-log4php/src/main/php/LoggerLocationInfo.php
@@ -1,13 +1,13 @@
NA is returned. Current value of this string
* constant is ?.
*/
-define('LOG4PHP_LOGGER_LOCATION_INFO_NA', 'NA');
+define('LOG4PHP_LOGGER_LOCATION_INFO_NA', 'NA');
/**
* The internal representation of caller location information.
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 771704 $
* @package log4php
* @subpackage spi
* @since 0.3
*/
class LoggerLocationInfo {
- /**
- * @var string Caller's line number.
- */
- protected $lineNumber = null;
-
- /**
- * @var string Caller's file name.
- */
- protected $fileName = null;
-
- /**
- * @var string Caller's fully qualified class name.
- */
- protected $className = null;
-
- /**
- * @var string Caller's method name.
- */
- protected $methodName = null;
-
- /**
- * @var string
- */
- protected $fullInfo = null;
+ /**
+ * @var string Caller's line number.
+ */
+ protected $lineNumber = null;
+
+ /**
+ * @var string Caller's file name.
+ */
+ protected $fileName = null;
+
+ /**
+ * @var string Caller's fully qualified class name.
+ */
+ protected $className = null;
+
+ /**
+ * @var string Caller's method name.
+ */
+ protected $methodName = null;
+
+ /**
+ * @var string
+ */
+ protected $fullInfo = null;
+
+ /**
+ * Instantiate location information based on a {@link PHP_MANUAL#debug_backtrace}.
+ *
+ * @param array $trace
+ * @param mixed $caller
+ */
+ public function __construct($trace, $fqcn = null) {
+ $this->lineNumber = isset($trace['line']) ? $trace['line'] : null;
+ $this->fileName = isset($trace['file']) ? $trace['file'] : null;
+ $this->className = isset($trace['class']) ? $trace['class'] : null;
+ $this->methodName = isset($trace['function']) ? $trace['function'] : null;
+ $this->fullInfo = $this->getClassName() . '.' . $this->getMethodName() .
+ '(' . $this->getFileName() . ':' . $this->getLineNumber() . ')';
+ }
+
+ public function getClassName() {
+ return ($this->className === null) ? LOG4PHP_LOGGER_LOCATION_INFO_NA : $this->className;
+ }
- /**
- * Instantiate location information based on a {@link PHP_MANUAL#debug_backtrace}.
- *
- * @param array $trace
- * @param mixed $caller
- */
- public function __construct($trace, $fqcn = null)
- {
- $this->lineNumber = isset($trace['line']) ? $trace['line'] : null;
- $this->fileName = isset($trace['file']) ? $trace['file'] : null;
- $this->className = isset($trace['class']) ? $trace['class'] : null;
- $this->methodName = isset($trace['function']) ? $trace['function'] : null;
-
- $this->fullInfo = $this->getClassName() . '.' . $this->getMethodName() .
- '(' . $this->getFileName() . ':' . $this->getLineNumber() . ')';
- }
+ /**
+ * Return the file name of the caller.
+ *
This information is not always available.
+ */
+ public function getFileName() {
+ return ($this->fileName === null) ? LOG4PHP_LOGGER_LOCATION_INFO_NA : $this->fileName;
+ }
- public function getClassName()
- {
- return ($this->className === null) ? LOG4PHP_LOGGER_LOCATION_INFO_NA : $this->className;
- }
+ /**
+ * Returns the line number of the caller.
+ *
This information is not always available.
+ */
+ public function getLineNumber() {
+ return ($this->lineNumber === null) ? LOG4PHP_LOGGER_LOCATION_INFO_NA : $this->lineNumber;
+ }
- /**
- * Return the file name of the caller.
- *
This information is not always available.
- */
- public function getFileName()
- {
- return ($this->fileName === null) ? LOG4PHP_LOGGER_LOCATION_INFO_NA : $this->fileName;
- }
+ /**
+ * Returns the method name of the caller.
+ */
+ public function getMethodName() {
+ return ($this->methodName === null) ? LOG4PHP_LOGGER_LOCATION_INFO_NA : $this->methodName;
+ }
- /**
- * Returns the line number of the caller.
- *
This information is not always available.
- */
- public function getLineNumber()
- {
- return ($this->lineNumber === null) ? LOG4PHP_LOGGER_LOCATION_INFO_NA : $this->lineNumber;
- }
+ /**
+ * Returns the full information of the caller.
+ */
+ public function getFullInfo() {
+ return ($this->fullInfo === null) ? LOG4PHP_LOGGER_LOCATION_INFO_NA : $this->fullInfo;
+ }
- /**
- * Returns the method name of the caller.
- */
- public function getMethodName()
- {
- return ($this->methodName === null) ? LOG4PHP_LOGGER_LOCATION_INFO_NA : $this->methodName;
- }
}
diff --git a/thirdparty/apache-log4php/src/main/php/LoggerLog.php b/thirdparty/apache-log4php/src/main/php/LoggerLog.php
deleted file mode 100644
index 60273b6..0000000
--- a/thirdparty/apache-log4php/src/main/php/LoggerLog.php
+++ /dev/null
@@ -1,101 +0,0 @@
-It uses php {@link PHP_MANUAL#trigger_error trigger_error()} function
- * to output messages.
- * You need to recode methods to output messages in a different way.
- *
- * @author Marco Vassura
- * @version $Revision: 635069 $
- * @package log4php
- */
-class LoggerLog {
-
- protected static $debug = false;
-
- /**
- * Log if debug is enabled.
- *
- * Log using php {@link PHP_MANUAL#trigger_error trigger_error()} function
- * with E_USER_NOTICE level by default.
- *
- * @param string $message log message
- * @param integer $errLevel level to log
- * @static
- */
- public static function log($message, $errLevel = E_USER_NOTICE)
- {
- if (LoggerLog::internalDebugging())
- trigger_error($message, $errLevel);
- }
-
- public static function internalDebugging($value = null)
- {
- if (is_bool($value))
- self::$debug = $value;
- return self::$debug;
- }
-
- /**
- * Report a debug message.
- *
- * @param string $message log message
- * @static
- * @since 0.3
- */
- public static function debug($message)
- {
- LoggerLog::log($message, E_USER_NOTICE);
- }
-
- /**
- * Report an error message.
- *
- * @param string $message log message
- * @static
- * @since 0.3
- */
- public static function error($message)
- {
- trigger_error($message, E_USER_ERROR);
- }
-
- /**
- * Report a warning message.
- *
- * @param string $message log message
- * @static
- * @since 0.3
- */
- public static function warn($message)
- {
- trigger_error($message, E_USER_WARNING);
- }
-
-}
diff --git a/thirdparty/apache-log4php/src/main/php/spi/LoggerLoggingEvent.php b/thirdparty/apache-log4php/src/main/php/LoggerLoggingEvent.php
index e0b039a..7865570 100644
--- a/thirdparty/apache-log4php/src/main/php/spi/LoggerLoggingEvent.php
+++ b/thirdparty/apache-log4php/src/main/php/LoggerLoggingEvent.php
@@ -1,13 +1,13 @@
This field should not be accessed directly. You shoud use the
- * {@link getLevel()} method instead.
- *
- * @deprecated
- * @var LoggerLevel
- */
- protected $level;
-
- /**
- * @var string The nested diagnostic context (NDC) of logging event.
- */
- var $ndc;
-
- /**
- * Have we tried to do an NDC lookup? If we did, there is no need
- * to do it again. Note that its value is always false when
- * serialized. Thus, a receiving SocketNode will never use it's own
- * (incorrect) NDC. See also writeObject method.
- * @var boolean
- */
- var $ndcLookupRequired = true;
-
- /**
- * Have we tried to do an MDC lookup? If we did, there is no need
- * to do it again. Note that its value is always false when
- * serialized. See also the getMDC and getMDCCopy methods.
- * @var boolean
- */
- var $mdcCopyLookupRequired = true;
-
- /**
- * @var mixed The application supplied message of logging event.
- */
- var $message;
-
- /**
- * The application supplied message rendered through the log4php
- * objet rendering mechanism. At present renderedMessage == message.
- * @var string
- */
- var $renderedMessage = null;
-
- /**
- * The name of thread in which this logging event was generated.
- * log4php saves here the process id via {@link PHP_MANUAL#getmypid getmypid()}
- * @var mixed
- */
- var $threadName = null;
-
- /**
- * The number of seconds elapsed from 1/1/1970 until logging event
- * was created plus microseconds if available.
- * @var float
- */
- public $timeStamp;
-
- /**
- * @var LoggerLocationInfo Location information for the caller.
- */
- var $locationInfo = null;
-
- /**
- * Instantiate a LoggingEvent from the supplied parameters.
- *
- * Except {@link $timeStamp} all the other fields of
- * LoggerLoggingEvent are filled when actually needed.
- *
- * @param string $fqcn name of the caller class.
- * @param mixed $logger The {@link Logger} category of this event or the logger name.
- * @param LoggerLevel $priority The level of this event.
- * @param mixed $message The message of this event.
- * @param integer $timeStamp the timestamp of this logging event.
- */
- public function __construct($fqcn, $logger, $priority, $message, $timeStamp = null)
- {
- $this->fqcn = $fqcn;
- if ($logger instanceof Logger) {
- $this->logger = $logger;
- $this->categoryName = $logger->getName();
- } else {
- $this->categoryName = strval($logger);
- }
- $this->level = $priority;
- $this->message = $message;
- if ($timeStamp !== null && is_float($timeStamp)) {
- $this->timeStamp = $timeStamp;
- } else {
- if (function_exists('microtime')) {
- // get microtime as float
- $this->timeStamp = microtime(true);
- } else {
- $this->timeStamp = floatval(time());
- }
- }
- }
+ /**
+ * @var string Fully Qualified Class Name of the calling category class.
+ */
+ var $fqcn;
+
+ /**
+ * @var Logger reference
+ */
+ var $logger = null;
+
+ /**
+ * The category (logger) name.
+ * This field will be marked as private in future
+ * releases. Please do not access it directly.
+ * Use the {@link getLoggerName()} method instead.
+ * @deprecated
+ */
+ var $categoryName;
+
+ /**
+ * Level of logging event.
+ *
This field should not be accessed directly. You shoud use the
+ * {@link getLevel()} method instead.
+ *
+ * @deprecated
+ * @var LoggerLevel
+ */
+ protected $level;
+
+ /**
+ * @var string The nested diagnostic context (NDC) of logging event.
+ */
+ var $ndc;
+
+ /**
+ * Have we tried to do an NDC lookup? If we did, there is no need
+ * to do it again. Note that its value is always false when
+ * serialized. Thus, a receiving SocketNode will never use it's own
+ * (incorrect) NDC. See also writeObject method.
+ * @var boolean
+ */
+ var $ndcLookupRequired = true;
+
+ /**
+ * Have we tried to do an MDC lookup? If we did, there is no need
+ * to do it again. Note that its value is always false when
+ * serialized. See also the getMDC and getMDCCopy methods.
+ * @var boolean
+ */
+ var $mdcCopyLookupRequired = true;
+
+ /**
+ * @var mixed The application supplied message of logging event.
+ */
+ var $message;
+
+ /**
+ * The application supplied message rendered through the log4php
+ * objet rendering mechanism. At present renderedMessage == message.
+ * @var string
+ */
+ var $renderedMessage = null;
+
+ /**
+ * The name of thread in which this logging event was generated.
+ * log4php saves here the process id via {@link PHP_MANUAL#getmypid getmypid()}
+ * @var mixed
+ */
+ var $threadName = null;
+
+ /**
+ * The number of seconds elapsed from 1/1/1970 until logging event
+ * was created plus microseconds if available.
+ * @var float
+ */
+ public $timeStamp;
+
+ /**
+ * @var LoggerLocationInfo Location information for the caller.
+ */
+ var $locationInfo = null;
+
+ /**
+ * Instantiate a LoggingEvent from the supplied parameters.
+ *
+ *
Except {@link $timeStamp} all the other fields of
+ * LoggerLoggingEvent are filled when actually needed.
+ *
+ * @param string $fqcn name of the caller class.
+ * @param mixed $logger The {@link Logger} category of this event or the logger name.
+ * @param LoggerLevel $priority The level of this event.
+ * @param mixed $message The message of this event.
+ * @param integer $timeStamp the timestamp of this logging event.
+ */
+ public function __construct($fqcn, $logger, $priority, $message, $timeStamp = null) {
+ $this->fqcn = $fqcn;
+ if($logger instanceof Logger) {
+ $this->logger = $logger;
+ $this->categoryName = $logger->getName();
+ } else {
+ $this->categoryName = strval($logger);
+ }
+ $this->level = $priority;
+ $this->message = $message;
+ if($timeStamp !== null && is_float($timeStamp)) {
+ $this->timeStamp = $timeStamp;
+ } else {
+ if(function_exists('microtime')) {
+ // get microtime as float
+ $this->timeStamp = microtime(true);
+ } else {
+ $this->timeStamp = floatval(time());
+ }
+ }
+ }
- /**
- * Set the location information for this logging event. The collected
- * information is cached for future use.
- *
- *
This method uses {@link PHP_MANUAL#debug_backtrace debug_backtrace()} function (if exists)
- * to collect informations about caller.
- * It only recognize informations generated by {@link Logger} and its subclasses.
- * @return LoggerLocationInfo
- */
- public function getLocationInformation()
- {
- if($this->locationInfo === null) {
+ /**
+ * Set the location information for this logging event. The collected
+ * information is cached for future use.
+ *
+ * This method uses {@link PHP_MANUAL#debug_backtrace debug_backtrace()} function (if exists)
+ * to collect informations about caller.
+ * It only recognize informations generated by {@link Logger} and its subclasses.
+ * @return LoggerLocationInfo
+ */
+ public function getLocationInformation() {
+ if($this->locationInfo === null) {
- $locationInfo = array();
+ $locationInfo = array();
- if (function_exists('debug_backtrace')) {
- $trace = debug_backtrace();
- $prevHop = null;
- // make a downsearch to identify the caller
- $hop = array_pop($trace);
- while ($hop !== null) {
- $className = @strtolower($hop['class']);
- if ( !empty($className) and ($className == 'logger' or $className == 'loggercategory' or
- get_parent_class($className) == 'logger') or get_parent_class($className) == 'loggercategory') {
- $locationInfo['line'] = $hop['line'];
- $locationInfo['file'] = $hop['file'];
- break;
- }
- $prevHop = $hop;
- $hop = array_pop($trace);
- }
- $locationInfo['class'] = isset($prevHop['class']) ? $prevHop['class'] : 'main';
- if (isset($prevHop['function']) and
- $prevHop['function'] !== 'include' and
- $prevHop['function'] !== 'include_once' and
- $prevHop['function'] !== 'require' and
- $prevHop['function'] !== 'require_once') {
-
- $locationInfo['function'] = $prevHop['function'];
- } else {
- $locationInfo['function'] = 'main';
- }
- }
-
- $this->locationInfo = new LoggerLocationInfo($locationInfo, $this->fqcn);
- }
- return $this->locationInfo;
- }
+ if(function_exists('debug_backtrace')) {
+ $trace = debug_backtrace();
+ $prevHop = null;
+ // make a downsearch to identify the caller
+ $hop = array_pop($trace);
+ while($hop !== null) {
+ $className = @strtolower($hop['class']);
+ if(!empty($className) and ($className == 'logger' or $className == 'loggercategory' or
+ @strtolower(get_parent_class($className)) == 'logger' or
+ @strtolower(get_parent_class($className)) == 'loggercategory')) {
+ $locationInfo['line'] = $hop['line'];
+ $locationInfo['file'] = $hop['file'];
+ break;
+ }
+ $prevHop = $hop;
+ $hop = array_pop($trace);
+ }
+ $locationInfo['class'] = isset($prevHop['class']) ? $prevHop['class'] : 'main';
+ if(isset($prevHop['function']) and
+ $prevHop['function'] !== 'include' and
+ $prevHop['function'] !== 'include_once' and
+ $prevHop['function'] !== 'require' and
+ $prevHop['function'] !== 'require_once') {
+
+ $locationInfo['function'] = $prevHop['function'];
+ } else {
+ $locationInfo['function'] = 'main';
+ }
+ }
+
+ $this->locationInfo = new LoggerLocationInfo($locationInfo, $this->fqcn);
+ }
+ return $this->locationInfo;
+ }
- /**
- * Return the level of this event. Use this form instead of directly
- * accessing the {@link $level} field.
- * @return LoggerLevel
- */
- public function getLevel()
- {
- return $this->level;
- }
+ /**
+ * Return the level of this event. Use this form instead of directly
+ * accessing the {@link $level} field.
+ * @return LoggerLevel
+ */
+ public function getLevel() {
+ return $this->level;
+ }
- /**
- * Return the name of the logger. Use this form instead of directly
- * accessing the {@link $categoryName} field.
- * @return string
- */
- public function getLoggerName()
- {
- return $this->categoryName;
- }
+ /**
+ * Return the name of the logger. Use this form instead of directly
+ * accessing the {@link $categoryName} field.
+ * @return string
+ */
+ public function getLoggerName() {
+ return $this->categoryName;
+ }
- /**
- * Return the message for this logging event.
- *
- * Before serialization, the returned object is the message
- * passed by the user to generate the logging event. After
- * serialization, the returned value equals the String form of the
- * message possibly after object rendering.
- * @return mixed
- */
- public function getMessage()
- {
- if($this->message !== null) {
- return $this->message;
- } else {
- return $this->getRenderedMessage();
- }
- }
+ /**
+ * Return the message for this logging event.
+ *
+ *
Before serialization, the returned object is the message
+ * passed by the user to generate the logging event. After
+ * serialization, the returned value equals the String form of the
+ * message possibly after object rendering.
+ * @return mixed
+ */
+ public function getMessage() {
+ if($this->message !== null) {
+ return $this->message;
+ } else {
+ return $this->getRenderedMessage();
+ }
+ }
- /**
- * This method returns the NDC for this event. It will return the
- * correct content even if the event was generated in a different
- * thread or even on a different machine. The {@link LoggerNDC::get()} method
- * should never be called directly.
- * @return string
- */
- public function getNDC()
- {
- if ($this->ndcLookupRequired) {
- $this->ndcLookupRequired = false;
- $this->ndc = implode(' ',LoggerNDC::get());
- }
- return $this->ndc;
- }
+ /**
+ * This method returns the NDC for this event. It will return the
+ * correct content even if the event was generated in a different
+ * thread or even on a different machine. The {@link LoggerNDC::get()} method
+ * should never be called directly.
+ * @return string
+ */
+ public function getNDC() {
+ if($this->ndcLookupRequired) {
+ $this->ndcLookupRequired = false;
+ $this->ndc = implode(' ', LoggerNDC::get());
+ }
+ return $this->ndc;
+ }
+ /**
+ * Returns the the context corresponding to the key
+ * parameter.
+ * @return string
+ */
+ public function getMDC($key) {
+ return LoggerMDC::get($key);
+ }
- /**
- * Returns the the context corresponding to the key
- * parameter.
- * @return string
- */
- public function getMDC($key)
- {
- return LoggerMDC::get($key);
- }
+ /**
+ * Render message.
+ * @return string
+ */
+ public function getRenderedMessage() {
+ if($this->renderedMessage === null and $this->message !== null) {
+ if(is_string($this->message)) {
+ $this->renderedMessage = $this->message;
+ } else {
+ if($this->logger !== null) {
+ $repository = $this->logger->getLoggerRepository();
+ } else {
+ $repository = LoggerManager::getLoggerRepository();
+ }
+ if(method_exists($repository, 'getRendererMap')) {
+ $rendererMap = $repository->getRendererMap();
+ $this->renderedMessage= $rendererMap->findAndRender($this->message);
+ } else {
+ $this->renderedMessage = (string)$this->message;
+ }
+ }
+ }
+ return $this->renderedMessage;
+ }
- /**
- * Render message.
- * @return string
- */
- public function getRenderedMessage()
- {
- if($this->renderedMessage === null and $this->message !== null) {
- if (is_string($this->message)) {
- $this->renderedMessage = $this->message;
- } else {
- if ($this->logger !== null) {
- $repository = $this->logger->getLoggerRepository();
- } else {
- $repository = LoggerManager::getLoggerRepository();
- }
- if (method_exists($repository, 'getRendererMap')) {
- $rendererMap = $repository->getRendererMap();
- $this->renderedMessage= $rendererMap->findAndRender($this->message);
- } else {
- $this->renderedMessage = (string)$this->message;
- }
- }
- }
- return $this->renderedMessage;
- }
+ /**
+ * Returns the time when the application started, in seconds
+ * elapsed since 01.01.1970 plus microseconds if available.
+ *
+ * @return float
+ * @static
+ */
+ public static function getStartTime() {
+ if(!isset(self::$startTime)) {
+ if (function_exists('microtime')) {
+ // microtime as float
+ self::$startTime = microtime(true);
+ } else {
+ self::$startTime = floatval(time());
+ }
+ }
+ return self::$startTime;
+ }
- /**
- * Returns the time when the application started, in seconds
- * elapsed since 01.01.1970 plus microseconds if available.
- *
- * @return float
- * @static
- */
- public static function getStartTime() {
- if (!isset(self::$startTime)) {
- if (function_exists('microtime')) {
- // microtime as float
- self::$startTime = microtime(true);
- } else {
- self::$startTime = floatval(time());
- }
- }
- return self::$startTime;
- }
-
- /**
- * @return float
- */
- public function getTimeStamp()
- {
- return $this->timeStamp;
- }
-
- /**
- * @return mixed
- */
- public function getThreadName()
- {
- if ($this->threadName === null)
- $this->threadName = (string)getmypid();
- return $this->threadName;
+ /**
+ * @return float
+ */
+ public function getTimeStamp() {
+ return $this->timeStamp;
+ }
+
+ /**
+ * Calculates the time of this event.
+ * @return the time after event starttime when this event has occured
+ */
+ public function getTime() {
+ $eventTime = (float)$this->getTimeStamp();
+ $eventStartTime = (float)LoggerLoggingEvent::getStartTime();
+ return number_format(($eventTime - $eventStartTime) * 1000, 0, '', '');
}
+
+ /**
+ * @return mixed
+ */
+ public function getThreadName() {
+ if ($this->threadName === null) {
+ $this->threadName = (string)getmypid();
+ }
+ return $this->threadName;
+ }
- /**
- * @return mixed null
- */
- public function getThrowableInformation()
- {
- return null;
- }
-
- /**
- * Serialize this object
- * @return string
- */
- public function toString()
- {
- serialize($this);
- }
-
- /**
- * Avoid serialization of the {@link $logger} object
- */
- public function __sleep()
- {
- return array(
- 'fqcn','categoryName',
- 'level',
- 'ndc','ndcLookupRequired',
- 'message','renderedMessage',
- 'threadName',
- 'timeStamp',
- 'locationInfo'
- );
- }
+ /**
+ * @return mixed null
+ */
+ public function getThrowableInformation() {
+ return null;
+ }
+
+ /**
+ * Serialize this object
+ * @return string
+ */
+ public function toString() {
+ serialize($this);
+ }
+
+ /**
+ * Avoid serialization of the {@link $logger} object
+ */
+ public function __sleep() {
+ return array(
+ 'fqcn',
+ 'categoryName',
+ 'level',
+ 'ndc',
+ 'ndcLookupRequired',
+ 'message',
+ 'renderedMessage',
+ 'threadName',
+ 'timeStamp',
+ 'locationInfo',
+ );
+ }
}
LoggerLoggingEvent::getStartTime();
-
diff --git a/thirdparty/apache-log4php/src/main/php/LoggerMDC.php b/thirdparty/apache-log4php/src/main/php/LoggerMDC.php
index ccaca4c..d54b244 100644
--- a/thirdparty/apache-log4php/src/main/php/LoggerMDC.php
+++ b/thirdparty/apache-log4php/src/main/php/LoggerMDC.php
@@ -1,13 +1,13 @@
The MDC is managed on a per thread basis.
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 771183 $
* @since 0.3
* @package log4php
*/
class LoggerMDC {
- /**
- * Put a context value as identified with the key parameter into the current thread's
- * context map.
- *
- *
If the current thread does not have a context map it is
- * created as a side effect.
- *
- * Note that you cannot put more than {@link LOGGER_MDC_HT_SIZE} keys.
- *
- * @param string $key the key
- * @param string $value the value
- * @static
- */
- public static function put($key, $value)
- {
- if ( sizeof($GLOBALS['log4php.LoggerMDC.ht']) < LOGGER_MDC_HT_SIZE )
- $GLOBALS['log4php.LoggerMDC.ht'][$key] = $value;
- }
+ /**
+ * Put a context value as identified with the key parameter into the current thread's
+ * context map.
+ *
+ * If the current thread does not have a context map it is
+ * created as a side effect.
+ *
+ * Note that you cannot put more than {@link LOGGER_MDC_HT_SIZE} keys.
+ *
+ * @param string $key the key
+ * @param string $value the value
+ * @static
+ */
+ public static function put($key, $value) {
+ if(count($GLOBALS['log4php.LoggerMDC.ht']) < LOGGER_MDC_HT_SIZE) {
+ $GLOBALS['log4php.LoggerMDC.ht'][$key] = $value;
+ }
+ }
- /**
- * Get the context identified by the key parameter.
- *
- * You can use special key identifiers to map values in
- * PHP $_SERVER and $_ENV vars. Just put a 'server.' or 'env.'
- * followed by the var name you want to refer.
- *
- * This method has no side effects.
- *
- * @param string $key
- * @return string
- * @static
- */
- public static function get($key)
- {
- LoggerLog::debug("LoggerMDC::get() key='$key'");
-
- if (!empty($key)) {
- if (strpos($key, 'server.') === 0) {
- $varName = substr($key, 7);
-
- LoggerLog::debug("LoggerMDC::get() a _SERVER[$varName] is requested.");
-
- return @$_SERVER[$varName];
- } elseif (strpos($key, 'env.') === 0) {
-
- $varName = substr($key, 4);
-
- LoggerLog::debug("LoggerMDC::get() a _ENV[$varName] is requested.");
-
- return @$_ENV[$varName];
- } elseif (isset($GLOBALS['log4php.LoggerMDC.ht'][$key])) {
-
- LoggerLog::debug("LoggerMDC::get() a user key is requested.");
-
- return $GLOBALS['log4php.LoggerMDC.ht'][$key];
- }
- }
- return '';
- }
+ /**
+ * Get the context identified by the key parameter.
+ *
+ * You can use special key identifiers to map values in
+ * PHP $_SERVER and $_ENV vars. Just put a 'server.' or 'env.'
+ * followed by the var name you want to refer.
+ *
+ * This method has no side effects.
+ *
+ * @param string $key
+ * @return string
+ * @static
+ */
+ public static function get($key) {
+ if(!empty($key)) {
+ if(strpos($key, 'server.') === 0) {
+ $varName = substr($key, 7);
+ return @$_SERVER[$varName];
+ } else if(strpos($key, 'env.') === 0) {
+ $varName = substr($key, 4);
+ return @$_ENV[$varName];
+ } else if (isset($GLOBALS['log4php.LoggerMDC.ht'][$key])) {
+ return $GLOBALS['log4php.LoggerMDC.ht'][$key];
+ }
+ }
+ return '';
+ }
- /**
- * Remove the the context identified by the key parameter.
- *
- * It only affects user mappings.
- *
- * @param string $key
- * @return string
- * @static
- */
- public static function remove($key)
- {
- unset($GLOBALS['log4php.LoggerMDC.ht'][$key]);
- }
+ /**
+ * Remove the the context identified by the key parameter.
+ *
+ * It only affects user mappings.
+ *
+ * @param string $key
+ * @return string
+ * @static
+ */
+ public static function remove($key) {
+ unset($GLOBALS['log4php.LoggerMDC.ht'][$key]);
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/LoggerManager.php b/thirdparty/apache-log4php/src/main/php/LoggerManager.php
index c17c8b2..1a4866d 100644
--- a/thirdparty/apache-log4php/src/main/php/LoggerManager.php
+++ b/thirdparty/apache-log4php/src/main/php/LoggerManager.php
@@ -1,13 +1,13 @@
exists($name);
- }
+ private static $_classes = array(
+ 'Logger' => '/Logger.php',
+ 'LoggerHierarchy' => '/LoggerHierarchy.php',
+ 'LoggerDefaultCategoryFactory' => '/LoggerDefaultCategoryFactory.php',
+ 'LoggerHierarchy' => '/LoggerHierarchy.php',
+ 'LoggerLayout' => '/LoggerLayout.php',
+ 'LoggerLevel' => '/LoggerLevel.php',
+ 'LoggerMDC' => '/LoggerMDC.php',
+ 'LoggerNDC' => '/LoggerNDC.php',
+ 'LoggerReflectionUtils' => '/LoggerReflectionUtils.php',
+ 'LoggerConfigurator' => '/LoggerConfigurator.php',
+ 'LoggerConfiguratorBasic' => '/configurators/LoggerConfiguratorBasic.php',
+ 'LoggerConfiguratorIni' => '/configurators/LoggerConfiguratorIni.php',
+ 'LoggerConfiguratorPhp' => '/configurators/LoggerConfiguratorPhp.php',
+ 'LoggerConfiguratorXml' => '/configurators/LoggerConfiguratorXml.php',
+ 'LoggerRoot' => '/LoggerRoot.php',
+ 'LoggerAppender' => '/LoggerAppender.php',
+ 'LoggerAppenderAdodb' => '/appenders/LoggerAppenderAdodb.php',
+ 'LoggerAppenderPDO' => '/appenders/LoggerAppenderPDO.php',
+ 'LoggerAppenderConsole' => '/appenders/LoggerAppenderConsole.php',
+ 'LoggerAppenderDailyFile' => '/appenders/LoggerAppenderDailyFile.php',
+ 'LoggerAppenderEcho' => '/appenders/LoggerAppenderEcho.php',
+ 'LoggerAppenderFile' => '/appenders/LoggerAppenderFile.php',
+ 'LoggerAppenderMail' => '/appenders/LoggerAppenderMail.php',
+ 'LoggerAppenderMailEvent' => '/appenders/LoggerAppenderMailEvent.php',
+ 'LoggerAppenderNull' => '/appenders/LoggerAppenderNull.php',
+ 'LoggerAppenderPhp' => '/appenders/LoggerAppenderPhp.php',
+ 'LoggerAppenderRollingFile' => '/appenders/LoggerAppenderRollingFile.php',
+ 'LoggerAppenderSocket' => '/appenders/LoggerAppenderSocket.php',
+ 'LoggerAppenderSyslog' => '/appenders/LoggerAppenderSyslog.php',
+ 'LoggerFormattingInfo' => '/helpers/LoggerFormattingInfo.php',
+ 'LoggerOptionConverter' => '/helpers/LoggerOptionConverter.php',
+ 'LoggerPatternConverter' => '/helpers/LoggerPatternConverter.php',
+ 'LoggerBasicPatternConverter' => '/helpers/LoggerBasicPatternConverter.php',
+ 'LoggerCategoryPatternConverter' => '/helpers/LoggerCategoryPatternConverter.php',
+ 'LoggerClassNamePatternConverter' => '/helpers/LoggerClassNamePatternConverter.php',
+ 'LoggerDatePatternConverter' => '/helpers/LoggerDatePatternConverter.php',
+ 'LoggerLiteralPatternConverter' => '/helpers/LoggerLiteralPatternConverter.php',
+ 'LoggerLocationPatternConverter' => '/helpers/LoggerLocationPatternConverter.php',
+ 'LoggerMDCPatternConverter' => '/helpers/LoggerMDCPatternConverter.php',
+ 'LoggerNamedPatternConverter' => '/helpers/LoggerNamedPatternConverter.php',
+ 'LoggerBasicPatternConverter' => '/helpers/LoggerBasicPatternConverter.php',
+ 'LoggerLiteralPatternConverter' => '/helpers/LoggerLiteralPatternConverter.php',
+ 'LoggerDatePatternConverter' => '/helpers/LoggerDatePatternConverter.php',
+ 'LoggerMDCPatternConverter' => '/helpers/LoggerMDCPatternConverter.php',
+ 'LoggerLocationPatternConverter' => '/helpers/LoggerLocationPatternConverter.php',
+ 'LoggerNamedPatternConverter' => '/helpers/LoggerNamedPatternConverter.php',
+ 'LoggerClassNamePatternConverter' => '/helpers/LoggerClassNamePatternConverter.php',
+ 'LoggerCategoryPatternConverter' => '/helpers/LoggerCategoryPatternConverter.php',
+ 'LoggerPatternParser' => '/helpers/LoggerPatternParser.php',
+ 'LoggerLayoutHtml' => '/layouts/LoggerLayoutHtml.php',
+ 'LoggerLayoutSimple' => '/layouts/LoggerLayoutSimple.php',
+ 'LoggerLayoutTTCC' => '/layouts/LoggerLayoutTTCC.php',
+ 'LoggerLayoutPattern' => '/layouts/LoggerLayoutPattern.php',
+ 'LoggerLayoutXml' => '/layouts/LoggerLayoutXml.php',
+ 'LoggerRendererDefault' => '/renderers/LoggerRendererDefault.php',
+ 'LoggerRendererObject' => '/renderers/LoggerRendererObject.php',
+ 'LoggerRendererMap' => '/renderers/LoggerRendererMap.php',
+ 'LoggerFactory' => '/LoggerFactory.php',
+ 'LoggerLocationInfo' => '/LoggerLocationInfo.php',
+ 'LoggerLoggingEvent' => '/LoggerLoggingEvent.php',
+ 'LoggerFilter' => '/LoggerFilter.php',
+ 'LoggerFilterDenyAll' => '/filters/LoggerFilterDenyAll.php',
+ 'LoggerFilterLevelMatch' => '/filters/LoggerFilterLevelMatch.php',
+ 'LoggerFilterLevelRange' => '/filters/LoggerFilterLevelRange.php',
+ 'LoggerFilterStringMatch' => '/filters/LoggerFilterStringMatch.php',
+ );
- /**
- * Returns an array this whole Logger instances.
- *
- * @static
- * @see Logger
- * @return array
- */
- public static function getCurrentLoggers()
- {
- return self::getLoggerRepository()->getCurrentLoggers();
- }
-
- /**
- * Returns the root logger.
- *
- * @static
- * @return object
- * @see LoggerRoot
- */
- public static function getRootLogger()
- {
- return self::getLoggerRepository()->getRootLogger();
- }
-
- /**
- * Returns the specified Logger.
- *
- * @param string $name logger name
- * @param LoggerFactory $factory a {@link LoggerFactory} instance or null
- * @static
- * @return Logger
- */
- public static function getLogger($name, $factory = null)
- {
- return self::getLoggerRepository()->getLogger($name, $factory);
- }
-
- /**
- * Returns the LoggerHierarchy.
- *
- * @static
- * @return LoggerHierarchy
- */
- public static function getLoggerRepository()
- {
- return LoggerHierarchy::singleton();
- }
-
+ /**
+ * Class autoloader
+ * This method is provided to be invoked within an __autoload() magic method.
+ * @param string class name
+ */
+ public static function autoload($className) {
+ if(isset(self::$_classes[$className])) {
+ include LOG4PHP_DIR.self::$_classes[$className];
+ }
+ }
- /**
- * Destroy loggers object tree.
- *
- * @static
- * @return boolean
- */
- public static function resetConfiguration()
- {
- return self::getLoggerRepository()->resetConfiguration();
- }
-
- /**
- * Does nothing.
- * @static
- */
- public static function setRepositorySelector($selector, $guard)
- {
- return;
- }
-
- /**
- * Safely close all appenders.
- * @static
- */
- public static function shutdown()
- {
- return self::getLoggerRepository()->shutdown();
- }
+ /**
+ * check if a given logger exists.
+ *
+ * @param string $name logger name
+ * @static
+ * @return boolean
+ */
+ public static function exists($name) {
+ return self::getLoggerRepository()->exists($name);
+ }
+
+ /**
+ * Returns an array this whole Logger instances.
+ *
+ * @static
+ * @see Logger
+ * @return array
+ */
+ public static function getCurrentLoggers() {
+ return self::getLoggerRepository()->getCurrentLoggers();
+ }
+
+ /**
+ * Returns the root logger.
+ *
+ * @static
+ * @return object
+ * @see LoggerRoot
+ */
+ public static function getRootLogger() {
+ return self::getLoggerRepository()->getRootLogger();
+ }
+
+ /**
+ * Returns the specified Logger.
+ *
+ * @param string $name logger name
+ * @param LoggerFactory $factory a {@link LoggerFactory} instance or null
+ * @static
+ * @return Logger
+ */
+ public static function getLogger($name, $factory = null) {
+ return self::getLoggerRepository()->getLogger($name, $factory);
+ }
+
+ /**
+ * Returns the LoggerHierarchy.
+ *
+ * @static
+ * @return LoggerHierarchy
+ */
+ public static function getLoggerRepository() {
+ return LoggerHierarchy::singleton();
+ }
+
+
+ /**
+ * Destroy loggers object tree.
+ *
+ * @static
+ * @return boolean
+ */
+ public static function resetConfiguration() {
+ return self::getLoggerRepository()->resetConfiguration();
+ }
+
+ /**
+ * Does nothing.
+ * @static
+ *
+ * TODO: remove this method?
+ */
+ public static function setRepositorySelector($selector, $guard) {
+ return;
+ }
+
+ /**
+ * Safely close all appenders.
+ * @static
+ */
+ public static function shutdown() {
+ return self::getLoggerRepository()->shutdown();
+ }
}
// ---------------------------------------------------------------------------
@@ -138,94 +213,95 @@ class LoggerManager {
// ---------------------------------------------------------------------------
if (!defined('LOG4PHP_DEFAULT_INIT_OVERRIDE')) {
- if (isset($_ENV['log4php.defaultInitOverride'])) {
- /**
- * @ignore
- */
- define('LOG4PHP_DEFAULT_INIT_OVERRIDE',
- LoggerOptionConverter::toBoolean($_ENV['log4php.defaultInitOverride'], false)
- );
- } elseif (isset($GLOBALS['log4php.defaultInitOverride'])) {
- /**
- * @ignore
- */
- define('LOG4PHP_DEFAULT_INIT_OVERRIDE',
- LoggerOptionConverter::toBoolean($GLOBALS['log4php.defaultInitOverride'], false)
- );
- } else {
- /**
- * Controls init execution
- *
- * With this constant users can skip the default init procedure that is
- * called when this file is included.
- *
- * If it is not user defined, log4php tries to autoconfigure using (in order):
- *
- * - the $_ENV['log4php.defaultInitOverride'] variable.
- * - the $GLOBALS['log4php.defaultInitOverride'] global variable.
- * - defaults to false
- *
- * @var boolean
- */
- define('LOG4PHP_DEFAULT_INIT_OVERRIDE', false);
- }
+ if (isset($_ENV['log4php.defaultInitOverride'])) {
+ /**
+ * @ignore
+ */
+ define('LOG4PHP_DEFAULT_INIT_OVERRIDE',
+ LoggerOptionConverter::toBoolean($_ENV['log4php.defaultInitOverride'], false)
+ );
+ } elseif (isset($GLOBALS['log4php.defaultInitOverride'])) {
+ /**
+ * @ignore
+ */
+ define('LOG4PHP_DEFAULT_INIT_OVERRIDE',
+ LoggerOptionConverter::toBoolean($GLOBALS['log4php.defaultInitOverride'], false)
+ );
+ } else {
+ /**
+ * Controls init execution
+ *
+ * With this constant users can skip the default init procedure that is
+ * called when this file is included.
+ *
+ * If it is not user defined, log4php tries to autoconfigure using (in order):
+ *
+ * - the $_ENV['log4php.defaultInitOverride'] variable.
+ * - the $GLOBALS['log4php.defaultInitOverride'] global variable.
+ * - defaults to false
+ *
+ * @var boolean
+ */
+ define('LOG4PHP_DEFAULT_INIT_OVERRIDE', false);
+ }
}
if (!defined('LOG4PHP_CONFIGURATION')) {
- if (isset($_ENV['log4php.configuration'])) {
- /**
- * @ignore
- */
- define('LOG4PHP_CONFIGURATION', trim($_ENV['log4php.configuration']));
- } else {
- /**
- * Configuration file.
- *
- * This constant tells configurator classes where the configuration
- * file is located.
- * If not set by user, log4php tries to set it automatically using
- * (in order):
- *
- * - the $_ENV['log4php.configuration'] enviroment variable.
- * - defaults to 'log4php.properties'.
- *
- * @var string
- */
- define('LOG4PHP_CONFIGURATION', 'log4php.properties');
- }
+ if (isset($_ENV['log4php.configuration'])) {
+ /**
+ * @ignore
+ */
+ define('LOG4PHP_CONFIGURATION', trim($_ENV['log4php.configuration']));
+ } else {
+ /**
+ * Configuration file.
+ *
+ * This constant tells configurator classes where the configuration
+ * file is located.
+ * If not set by user, log4php tries to set it automatically using
+ * (in order):
+ *
+ * - the $_ENV['log4php.configuration'] enviroment variable.
+ * - defaults to 'log4php.properties'.
+ *
+ * @var string
+ */
+ define('LOG4PHP_CONFIGURATION', 'log4php.properties');
+ }
}
if (!defined('LOG4PHP_CONFIGURATOR_CLASS')) {
- if ( strtolower(substr( LOG4PHP_CONFIGURATION, -4 )) == '.xml') {
- /**
- * @ignore
- */
- define('LOG4PHP_CONFIGURATOR_CLASS', LOG4PHP_DIR . '/xml/LoggerDOMConfigurator');
- } else {
- /**
- * Holds the configurator class name.
- *
- * This constant is set with the fullname (path included but non the
- * .php extension) of the configurator class that init procedure will use.
- * If not set by user, log4php tries to set it automatically.
- * If {@link LOG4PHP_CONFIGURATION} has '.xml' extension set the
- * constants to '{@link LOG4PHP_DIR}/xml/{@link LoggerDOMConfigurator}'.
- * Otherwise set the constants to
- * '{@link LOG4PHP_DIR}/{@link LoggerPropertyConfigurator}'.
- *
- * Security Note: classfile pointed by this constant will be brutally
- * included with a:
- * @include_once(LOG4PHP_CONFIGURATOR_CLASS . ".php");
- *
- * @var string
- */
- define('LOG4PHP_CONFIGURATOR_CLASS', LOG4PHP_DIR . '/LoggerPropertyConfigurator');
- }
+ if ( strtolower(substr( LOG4PHP_CONFIGURATION, -4 )) == '.xml') {
+ /**
+ * @ignore
+ */
+ define('LOG4PHP_CONFIGURATOR_CLASS', 'LoggerConfiguratorXml');
+ } else {
+ /**
+ * Holds the configurator class name.
+ *
+ * This constant is set with the fullname (path included but non the
+ * .php extension) of the configurator class that init procedure will use.
+ * If not set by user, log4php tries to set it automatically.
+ * If {@link LOG4PHP_CONFIGURATION} has '.xml' extension set the
+ * constants to '{@link LOG4PHP_DIR}/xml/{@link LoggerConfiguratorXml}'.
+ * Otherwise set the constants to
+ * '{@link LOG4PHP_DIR}/{@link LoggerConfiguratorIni}'.
+ *
+ * Security Note: classfile pointed by this constant will be brutally
+ * included with a:
+ * @include_once(LOG4PHP_CONFIGURATOR_CLASS . ".php");
+ *
+ * @var string
+ */
+ define('LOG4PHP_CONFIGURATOR_CLASS', 'LoggerConfiguratorIni');
+ }
}
if (!LOG4PHP_DEFAULT_INIT_OVERRIDE) {
- if (!LoggerManagerDefaultInit())
- LoggerLog::warn("LOG4PHP main() Default Init failed.");
+ if (!LoggerManagerDefaultInit()) {
+// LoggerLog::warn("LOG4PHP main() Default Init failed.");
+ }
}
/**
@@ -240,19 +316,8 @@ if (!LOG4PHP_DEFAULT_INIT_OVERRIDE) {
*
* @return boolean
*/
-function LoggerManagerDefaultInit()
-{
- $configuratorClass = basename(LOG4PHP_CONFIGURATOR_CLASS);
- if (!class_exists($configuratorClass)) {
- include_once(LOG4PHP_CONFIGURATOR_CLASS . ".php");
- }
- if (class_exists($configuratorClass)) {
-
- return call_user_func(array($configuratorClass, 'configure'), LOG4PHP_CONFIGURATION);
-
- } else {
- LoggerLog::warn("LoggerManagerDefaultInit() Configurator '{$configuratorClass}' doesnt exists");
- return false;
- }
+function LoggerManagerDefaultInit() {
+ $configuratorClass = basename(LOG4PHP_CONFIGURATOR_CLASS);
+ return call_user_func(array($configuratorClass, 'configure'), LOG4PHP_CONFIGURATION);
}
diff --git a/thirdparty/apache-log4php/src/main/php/LoggerNDC.php b/thirdparty/apache-log4php/src/main/php/LoggerNDC.php
index 3b76a37..dd5e0fc 100644
--- a/thirdparty/apache-log4php/src/main/php/LoggerNDC.php
+++ b/thirdparty/apache-log4php/src/main/php/LoggerNDC.php
@@ -1,13 +1,13 @@
LoggerNDC::push()
- * As a side effect, if there is no nested diagnostic context for the
- * current thread, this method will create it.
+ * LoggerNDC::push()
+ * As a side effect, if there is no nested diagnostic context for the
+ * current thread, this method will create it.
* - When leaving a context, call
- * LoggerNDC::pop()
+ * LoggerNDC::pop()
* - When exiting a thread make sure to call {@link remove()}
- *
+ *
* There is no penalty for forgetting to match each
* push operation with a corresponding pop,
* except the obvious mismatch between the real application context
@@ -92,151 +83,129 @@ $GLOBALS['log4php.LoggerNDC.maxDepth'] = LOGGER_NDC_HT_SIZE;
* the same category) can still be distinguished because each client
* request will have a different NDC tag.
*
- *
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ *
+ * @version $Revision: 777447 $
* @package log4php
* @since 0.3
*/
class LoggerNDC {
- /**
- * Clear any nested diagnostic information if any. This method is
- * useful in cases where the same thread can be potentially used
- * over and over in different unrelated contexts.
- *
- * This method is equivalent to calling the {@link setMaxDepth()}
- * method with a zero maxDepth argument.
- *
- * @static
- */
- public static function clear()
- {
- LoggerLog::debug("LoggerNDC::clear()");
-
- $GLOBALS['log4php.LoggerNDC.ht'] = array();
- }
+ /**
+ * Clear any nested diagnostic information if any. This method is
+ * useful in cases where the same thread can be potentially used
+ * over and over in different unrelated contexts.
+ *
+ *
This method is equivalent to calling the {@link setMaxDepth()}
+ * method with a zero maxDepth argument.
+ *
+ * @static
+ */
+ public static function clear() {
+ $GLOBALS['log4php.LoggerNDC.ht'] = array();
+ }
- /**
- * Never use this method directly, use the {@link LoggerLoggingEvent::getNDC()} method instead.
- * @static
- * @return array
- */
- public static function get()
- {
- LoggerLog::debug("LoggerNDC::get()");
-
- return $GLOBALS['log4php.LoggerNDC.ht'];
- }
+ /**
+ * Never use this method directly, use the {@link LoggerLoggingEvent::getNDC()} method instead.
+ * @static
+ * @return array
+ */
+ public static function get() {
+ if(!array_key_exists('log4php.LoggerNDC.ht', $GLOBALS)) {
+ LoggerNDC::clear();
+ }
+ return $GLOBALS['log4php.LoggerNDC.ht'];
+ }
- /**
- * Get the current nesting depth of this diagnostic context.
- *
- * @see setMaxDepth()
- * @return integer
- * @static
- */
- public static function getDepth()
- {
- LoggerLog::debug("LoggerNDC::getDepth()");
-
- return sizeof($GLOBALS['log4php.LoggerNDC.ht']);
- }
+ /**
+ * Get the current nesting depth of this diagnostic context.
+ *
+ * @see setMaxDepth()
+ * @return integer
+ * @static
+ */
+ public static function getDepth() {
+ return count($GLOBALS['log4php.LoggerNDC.ht']);
+ }
- /**
- * Clients should call this method before leaving a diagnostic
- * context.
- *
- *
The returned value is the value that was pushed last. If no
- * context is available, then the empty string "" is returned.
- *
- * @return string The innermost diagnostic context.
- * @static
- */
- public static function pop()
- {
- LoggerLog::debug("LoggerNDC::pop()");
-
- if (sizeof($GLOBALS['log4php.LoggerNDC.ht']) > 0) {
- return array_pop($GLOBALS['log4php.LoggerNDC.ht']);
- } else {
- return '';
- }
- }
+ /**
+ * Clients should call this method before leaving a diagnostic
+ * context.
+ *
+ * The returned value is the value that was pushed last. If no
+ * context is available, then the empty string "" is returned.
+ *
+ * @return string The innermost diagnostic context.
+ * @static
+ */
+ public static function pop() {
+ if(count($GLOBALS['log4php.LoggerNDC.ht']) > 0) {
+ return array_pop($GLOBALS['log4php.LoggerNDC.ht']);
+ } else {
+ return '';
+ }
+ }
- /**
- * Looks at the last diagnostic context at the top of this NDC
- * without removing it.
- *
- * The returned value is the value that was pushed last. If no
- * context is available, then the empty string "" is returned.
- * @return string The innermost diagnostic context.
- * @static
- */
- public static function peek()
- {
- LoggerLog::debug("LoggerNDC::peek()");
-
- if (sizeof($GLOBALS['log4php.LoggerNDC.ht']) > 0) {
- return end($GLOBALS['log4php.LoggerNDC.ht']);
- } else {
- return '';
- }
- }
+ /**
+ * Looks at the last diagnostic context at the top of this NDC
+ * without removing it.
+ *
+ * The returned value is the value that was pushed last. If no
+ * context is available, then the empty string "" is returned.
+ * @return string The innermost diagnostic context.
+ * @static
+ */
+ public static function peek(){
+ if(count($GLOBALS['log4php.LoggerNDC.ht']) > 0) {
+ return end($GLOBALS['log4php.LoggerNDC.ht']);
+ } else {
+ return '';
+ }
+ }
- /**
- * Push new diagnostic context information for the current thread.
- *
- * The contents of the message parameter is
- * determined solely by the client.
- *
- * @param string $message The new diagnostic context information.
- * @static
- */
- public static function push($message)
- {
- LoggerLog::debug("LoggerNDC::push()");
-
- array_push($GLOBALS['log4php.LoggerNDC.ht'], (string)$message);
- }
+ /**
+ * Push new diagnostic context information for the current thread.
+ *
+ *
The contents of the message parameter is
+ * determined solely by the client.
+ *
+ * @param string $message The new diagnostic context information.
+ * @static
+ */
+ public static function push($message) {
+ array_push($GLOBALS['log4php.LoggerNDC.ht'], (string)$message);
+ }
- /**
- * Remove the diagnostic context for this thread.
- * @static
- */
- public static function remove()
- {
- LoggerLog::debug("LoggerNDC::remove()");
-
- LoggerNDC::clear();
- }
+ /**
+ * Remove the diagnostic context for this thread.
+ * @static
+ */
+ public static function remove() {
+ LoggerNDC::clear();
+ }
+
+ /**
+ * Set maximum depth of this diagnostic context. If the current
+ * depth is smaller or equal to maxDepth, then no
+ * action is taken.
+ *
+ *
This method is a convenient alternative to multiple
+ * {@link pop()} calls. Moreover, it is often the case that at
+ * the end of complex call sequences, the depth of the NDC is
+ * unpredictable. The {@link setMaxDepth()} method circumvents
+ * this problem.
+ *
+ * @param integer $maxDepth
+ * @see getDepth()
+ * @static
+ */
+ public static function setMaxDepth($maxDepth) {
+ $maxDepth = (int)$maxDepth;
+ if($maxDepth <= LOGGER_NDC_HT_SIZE) {
+ if(LoggerNDC::getDepth() > $maxDepth) {
+ $GLOBALS['log4php.LoggerNDC.ht'] = array_slice($GLOBALS['log4php.LoggerNDC.ht'], $maxDepth);
+ }
+ $GLOBALS['log4php.LoggerNDC.maxDepth'] = $maxDepth;
+ }
+ }
- /**
- * Set maximum depth of this diagnostic context. If the current
- * depth is smaller or equal to maxDepth, then no
- * action is taken.
- *
- *
This method is a convenient alternative to multiple
- * {@link pop()} calls. Moreover, it is often the case that at
- * the end of complex call sequences, the depth of the NDC is
- * unpredictable. The {@link setMaxDepth()} method circumvents
- * this problem.
- *
- * @param integer $maxDepth
- * @see getDepth()
- * @static
- */
- public static function setMaxDepth($maxDepth)
- {
- LoggerLog::debug("LoggerNDC::setMaxDepth() maxDepth='$maxDepth'");
-
- $maxDepth = (int)$maxDepth;
- if ($maxDepth <= LOGGER_NDC_HT_SIZE) {
- if (LoggerNDC::getDepth() > $maxDepth) {
- $GLOBALS['log4php.LoggerNDC.ht'] = array_slice($GLOBALS['log4php.LoggerNDC.ht'], $maxDepth);
- }
- $GLOBALS['log4php.LoggerNDC.maxDepth'] = $maxDepth;
- }
- }
-
}
diff --git a/thirdparty/apache-log4php/src/main/php/config/LoggerPropertySetter.php b/thirdparty/apache-log4php/src/main/php/LoggerReflectionUtils.php
index da57374..7ad3474 100644
--- a/thirdparty/apache-log4php/src/main/php/config/LoggerPropertySetter.php
+++ b/thirdparty/apache-log4php/src/main/php/LoggerReflectionUtils.php
@@ -1,13 +1,13 @@
obj =& $obj;
+ }
+
+ /**
+ * Set the properties of an object passed as a parameter in one
+ * go. The properties are parsed relative to a
+ * prefix.
+ *
+ * @param object &$obj The object to configure.
+ * @param array $properties An array containing keys and values.
+ * @param string $prefix Only keys having the specified prefix will be set.
+ * @static
+ */
+ // TODO: check, if this is really useful
+ public static function setPropertiesByObject(&$obj, $properties, $prefix) {
+ $pSetter = new LoggerReflectionUtils($obj);
+ return $pSetter->setProperties($properties, $prefix);
+ }
+
-/**
- * @ignore
- */
-if (!defined('LOG4PHP_DIR')) define('LOG4PHP_DIR', dirname(__FILE__) . '/..');
-
-require_once(LOG4PHP_DIR . '/LoggerLog.php');
-require_once(LOG4PHP_DIR . '/helpers/LoggerOptionConverter.php');
-
-/**
- * General purpose Object property setter. Clients repeatedly invokes
- * {@link setProperty()} in order to invoke setters
- * on the Object specified in the constructor.
- *
- * Usage:
- *
- * $ps = new LoggerPropertySetter($anObject);
- * $ps->set("name", "Joe");
- * $ps->set("age", 32);
- * $ps->set("isMale", true);
- *
- * will cause the invocations
- *
- * $anObject->setName("Joe");
- * $anObject->setAge(32);
- * $anObject->setMale(true)
- *
- * if such methods exist.
- *
- * @author Marco Vassura
- * @version $Revision: 635069 $
- * @package log4php
- * @subpackage config
- * @since 0.5
- */
-class LoggerPropertySetter {
-
- /**
- * @var object the target object
- * @access private
+ /**
+ * Set the properites for the object that match the
+ * prefix passed as parameter.
+ *
+ * Example:
+ *
+ * $arr['xxxname'] = 'Joe';
+ * $arr['xxxmale'] = true;
+ * and prefix xxx causes setName and setMale.
+ *
+ * @param array $properties An array containing keys and values.
+ * @param string $prefix Only keys having the specified prefix will be set.
+ */
+ // TODO: check, if this is really useful
+ public function setProperties($properties, $prefix) {
+ $len = strlen($prefix);
+ while(list($key,) = each($properties)) {
+ if(strpos($key, $prefix) === 0) {
+ if(strpos($key, '.', ($len + 1)) > 0) {
+ continue;
+ }
+ $value = LoggerOptionConverter::findAndSubst($key, $properties);
+ $key = substr($key, $len);
+ if($key == 'layout' and ($this->obj instanceof LoggerAppender)) {
+ continue;
+ }
+ $this->setProperty($key, $value);
+ }
+ }
+ $this->activate();
+ }
+
+ /**
+ * Set a property on this PropertySetter's Object. If successful, this
+ * method will invoke a setter method on the underlying Object. The
+ * setter is the one for the specified property name and the value is
+ * determined partly from the setter argument type and partly from the
+ * value specified in the call to this method.
+ *
+ *
If the setter expects a String no conversion is necessary.
+ * If it expects an int, then an attempt is made to convert 'value'
+ * to an int using new Integer(value). If the setter expects a boolean,
+ * the conversion is by new Boolean(value).
+ *
+ * @param string $name name of the property
+ * @param string $value String value of the property
+ */
+ public function setProperty($name, $value) {
+ if($value === null) {
+ return;
+ }
+
+ $method = "set" . ucfirst($name);
+
+ if(!method_exists($this->obj, $method)) {
+ // no such setter method
+ return;
+ } else {
+ return call_user_func(array(&$this->obj, $method), $value);
+ }
+ }
+
+ public function activate() {
+ if(method_exists($this->obj, 'activateoptions')) {
+ return call_user_func(array(&$this->obj, 'activateoptions'));
+ }
+ }
+
+ /**
+ * Creates an instances from the given class name.
+ *
+ * @param string $classname
+ * @return an object from the class with the given classname
+ */
+ public static function createObject($class) {
+ if(!empty($class)) {
+ $class = basename($class);
+ return new $class();
+ }
+ return null;
+ }
+
+ /**
+ * @param object $object
+ * @param string $name
+ * @param mixed $value
*/
- var $obj;
-
- /**
- * Create a new LoggerPropertySetter for the specified Object.
- * This is done in prepartion for invoking {@link setProperty()}
- * one or more times.
- * @param object &$obj the object for which to set properties
- */
- function LoggerPropertySetter(&$obj)
- {
- $this->obj =& $obj;
- }
-
- /**
- * Set the properties of an object passed as a parameter in one
- * go. The properties are parsed relative to a
- * prefix.
- *
- * @param object &$obj The object to configure.
- * @param array $properties An array containing keys and values.
- * @param string $prefix Only keys having the specified prefix will be set.
- * @static
- */
- public static
- function setPropertiesByObject(&$obj, $properties, $prefix)
- {
- $pSetter = new LoggerPropertySetter($obj);
- return $pSetter->setProperties($properties, $prefix);
- }
-
-
- /**
- * Set the properites for the object that match the
- * prefix passed as parameter.
- *
- * @param array $properties An array containing keys and values.
- * @param string $prefix Only keys having the specified prefix will be set.
- */
- function setProperties($properties, $prefix)
- {
- LoggerLog::debug("LoggerOptionConverter::setProperties():prefix=[{$prefix}]");
-
- $len = strlen($prefix);
- while (list($key,) = each($properties)) {
- if (strpos($key, $prefix) === 0) {
- if (strpos($key, '.', ($len + 1)) > 0)
- continue;
- $value = LoggerOptionConverter::findAndSubst($key, $properties);
- $key = substr($key, $len);
- if ($key == 'layout' and $this->obj instanceof loggerappender) {
- continue;
- }
- $this->setProperty($key, $value);
- }
- }
- $this->activate();
- }
-
- /**
- * Set a property on this PropertySetter's Object. If successful, this
- * method will invoke a setter method on the underlying Object. The
- * setter is the one for the specified property name and the value is
- * determined partly from the setter argument type and partly from the
- * value specified in the call to this method.
- *
- *
If the setter expects a String no conversion is necessary.
- * If it expects an int, then an attempt is made to convert 'value'
- * to an int using new Integer(value). If the setter expects a boolean,
- * the conversion is by new Boolean(value).
- *
- * @param string $name name of the property
- * @param string $value String value of the property
- */
- function setProperty($name, $value)
- {
- LoggerLog::debug("LoggerOptionConverter::setProperty():name=[{$name}]:value=[{$value}]");
-
- if ($value === null) return;
-
- $method = "set" . ucfirst($name);
-
- if (!method_exists($this->obj, $method)) {
- LoggerLog::warn(
- "LoggerOptionConverter::setProperty() No such setter method for [{$name}] property in " .
- get_class($this->obj) . "."
- );
- } else {
- return call_user_func(array(&$this->obj, $method), $value);
+ function setter(&$object, $name, $value) {
+ if (empty($name)) {
+ return false;
}
- }
-
- function activate()
- {
- LoggerLog::debug("LoggerOptionConverter::activate()");
-
- if (method_exists($this->obj, 'activateoptions')) {
- return call_user_func(array(&$this->obj, 'activateoptions'));
+ $methodName = 'set'.ucfirst($name);
+ if (method_exists($object, $methodName)) {
+ return call_user_func(array(&$object, $methodName), $value);
} else {
- LoggerLog::debug("LoggerOptionConverter::activate() Nothing to activate.");
+ return false;
}
}
+
}
+
+ ?>
\ No newline at end of file
diff --git a/thirdparty/apache-log4php/src/main/php/LoggerRoot.php b/thirdparty/apache-log4php/src/main/php/LoggerRoot.php
index 16b70ec..abc74f6 100644
--- a/thirdparty/apache-log4php/src/main/php/LoggerRoot.php
+++ b/thirdparty/apache-log4php/src/main/php/LoggerRoot.php
@@ -1,13 +1,13 @@
name);
+ if($level == null) {
+ $level = LoggerLevel::getLevelAll();
+ }
+ $this->setLevel($level);
+ }
+
+ /**
+ * @return LoggerLevel the level
+ */
+ public function getChainedLevel() {
+ return parent::getLevel();
+ }
+
+ /**
+ * Setting a null value to the level of the root category may have catastrophic results.
+ * @param LoggerLevel $level
+ */
+ public function setLevel($level) {
+ if($level != null) {
+ parent::setLevel($level);
+ }
+ }
+
+ /**
+ * Always returns false.
+ * Because LoggerRoot has no parents, it returns false.
+ * @param Logger $parent
+ * @return boolean
+ */
+ public function setParent(Logger $parent) {
+ return false;
+ }
- /**
- * Constructor
- *
- * @param integer $level initial log level
- */
- public function __construct($level = null)
- {
- parent::__construct($this->name);
- if ($level == null)
- $level = LoggerLevel::getLevelAll();
- $this->setLevel($level);
- }
-
- /**
- * @return LoggerLevel the level
- */
- public function getChainedLevel()
- {
- return $this->level;
- }
-
- /**
- * Setting a null value to the level of the root category may have catastrophic results.
- * @param LoggerLevel $level
- */
- public function setLevel($level)
- {
- if ($level != null) {
- $this->level = $level;
- }
- }
-
- /**
- * Please use setLevel() instead.
- * @param LoggerLevel $level
- * @deprecated
- */
- public function setPriority($level)
- {
- $this->setLevel($level);
- }
-
- /**
- * Always returns false.
- * Because LoggerRoot has no parents, it returns false.
- * @param Logger $parent
- * @return boolean
- */
- public function setParent($parent)
- {
- return false;
- }
}
diff --git a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderAdodb.php b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderAdodb.php
index 531fade..ad6feca 100644
--- a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderAdodb.php
+++ b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderAdodb.php
@@ -20,15 +20,6 @@
* @subpackage appenders
*/
-/**
- * @ignore
- */
-if (!defined('LOG4PHP_DIR')) define('LOG4PHP_DIR', dirname(__FILE__) . '/..');
-
-require_once(LOG4PHP_DIR . '/LoggerAppenderSkeleton.php');
-require_once(LOG4PHP_DIR . '/helpers/LoggerOptionConverter.php');
-require_once(LOG4PHP_DIR . '/LoggerLog.php');
-
require_once(ADODB_DIR . '/adodb.inc.php');
/**
@@ -39,12 +30,12 @@ require_once(ADODB_DIR . '/adodb.inc.php');
* {@link $database}, {@link $createTable}, {@link $table} and {@link $sql}.
* See examples in test directory.
*
- * @author sbw
+ * @deprecated Use LoggerAppenderPDO instead
* @package log4php
* @subpackage appenders
* @since 0.9
*/
-class LoggerAppenderAdodb extends LoggerAppenderSkeleton {
+class LoggerAppenderAdodb extends LoggerAppender {
/**
* Create the log table if it does not exists (optional).
@@ -116,9 +107,9 @@ class LoggerAppenderAdodb extends LoggerAppenderSkeleton {
*
* @param string $name appender name
*/
- function LoggerAppenderDb($name)
+ function __construct($name)
{
- $this->LoggerAppenderSkeleton($name);
+ parent::__construct($name);
}
/**
@@ -131,14 +122,13 @@ class LoggerAppenderAdodb extends LoggerAppenderSkeleton {
{
$this->db = &ADONewConnection($this->type);
if (! $this->db->PConnect($this->host, $this->user, $this->password, $this->database)) {
- LoggerLog::debug("LoggerAppenderAdodb::activateOptions() DB Connect Error [".$this->db->ErrorMsg()."]");
$this->db = null;
$this->closed = true;
$this->canAppend = false;
return;
}
- $this->layout = LoggerLayout::factory('LoggerPatternLayout');
+ $this->layout = LoggerReflectionUtils::createObject('LoggerLayoutPattern');
$this->layout->setConversionPattern($this->getSql());
// test if log table exists
@@ -147,11 +137,9 @@ class LoggerAppenderAdodb extends LoggerAppenderSkeleton {
if ($dbrs == false and $this->getCreateTable()) {
$query = "CREATE TABLE {$this->table} (timestamp varchar(32),logger varchar(32),level varchar(32),message varchar(64),thread varchar(32),file varchar(64),line varchar(4) );";
- LoggerLog::debug("LoggerAppenderAdodb::activateOptions() creating table '{$this->table}'... using sql='$query'");
$result = $this->db->Execute($query);
if (! $result) {
- LoggerLog::debug("LoggerAppenderAdodb::activateOptions() error while creating '{$this->table}'. Error is ".$this->db->ErrorMsg());
$this->canAppend = false;
return;
}
@@ -159,14 +147,9 @@ class LoggerAppenderAdodb extends LoggerAppenderSkeleton {
$this->canAppend = true;
}
- function append($event)
- {
+ function append($event) {
if ($this->canAppend) {
-
$query = $this->layout->format($event);
-
- LoggerLog::debug("LoggerAppenderAdodb::append() query='$query'");
-
$this->db->Execute($query);
}
}
diff --git a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderConsole.php b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderConsole.php
index b4d824e..6c36e28 100644
--- a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderConsole.php
+++ b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderConsole.php
@@ -1,13 +1,13 @@
Optional parameter is {@link $target}. The default target is Stdout.
* Note: Use this Appender with command-line php scripts.
* On web scripts this appender has no effects.
- * This appender requires a layout.
+ * This appender requires a layout.
*
- * @author Marco Vassura
- * @author Knut Urdalen
- * @version $Revision: 635069 $
+ * @version $Revision: 772568 $
* @package log4php
* @subpackage appender
*/
-class LoggerAppenderConsole extends LoggerAppenderSkeleton {
-
- const STDOUT = 'php://stdout';
- const STDERR = 'php://stderr';
+class LoggerAppenderConsole extends LoggerAppender {
- /**
- * Can be 'php://stdout' or 'php://stderr'. But it's better to use keywords STDOUT and STDERR (case insensitive).
- * Default is STDOUT
- * @var string
- */
- protected $target = 'php://stdout';
-
- /**
- * @var boolean
- * @access private
- */
- protected $requiresLayout = true;
+ const STDOUT = 'php://stdout';
+ const STDERR = 'php://stderr';
- /**
- * @var mixed the resource used to open stdout/stderr
- * @access private
- */
- protected $fp = false;
+ /**
+ * Can be 'php://stdout' or 'php://stderr'. But it's better to use keywords STDOUT and STDERR (case insensitive).
+ * Default is STDOUT
+ * @var string
+ */
+ private $target = self::STDOUT;
+
+ /**
+ * @var boolean
+ * @access private
+ */
+ protected $requiresLayout = true;
- /**
- * Set console target.
- * @param mixed $value a constant or a string
- */
- public function setTarget($value) {
- $v = trim($value);
- if ($v == self::STDOUT || strtoupper($v) == 'STDOUT') {
- $this->target = self::STDOUT;
- } elseif ($v == self::STDERR || strtoupper($v) == 'STDERR') {
- $target = self::STDERR;
- } else {
- LoggerLog::debug("Invalid target. Using '".self::STDOUT."' by default.");
- }
- }
+ /**
+ * @var mixed the resource used to open stdout/stderr
+ * @access private
+ */
+ protected $fp = false;
- public function getTarget() {
- return $this->target;
- }
+ /**
+ * Set console target.
+ * @param mixed $value a constant or a string
+ */
+ public function setTarget($value) {
+ $v = trim($value);
+ if ($v == self::STDOUT || strtoupper($v) == 'STDOUT') {
+ $this->target = self::STDOUT;
+ } elseif ($v == self::STDERR || strtoupper($v) == 'STDERR') {
+ $this->target = self::STDERR;
+ }
+ }
- public function activateOptions() {
- $this->fp = fopen($this->getTarget(), 'w');
- if($this->fp !== false && $this->layout !== null) {
- fwrite($this->fp, $this->layout->getHeader());
- }
- $this->closed = (bool)($this->fp === false);
- }
-
- /**
- * @see LoggerAppender::close()
- */
- public function close() {
- if ($this->fp && $this->layout !== null) {
- fwrite($this->fp, $this->layout->getFooter());
- fclose($this->fp);
- }
- $this->closed = true;
- }
+ public function activateOptions() {
+ $this->fp = fopen($this->target, 'w');
+ if($this->fp !== false && $this->layout !== null) {
+ fwrite($this->fp, $this->layout->getHeader());
+ }
+ $this->closed = (bool)($this->fp === false);
+ }
+
+ /**
+ * @see LoggerAppender::close()
+ */
+ public function close() {
+ if ($this->fp && $this->layout !== null) {
+ fwrite($this->fp, $this->layout->getFooter());
+ fclose($this->fp);
+ }
+ $this->closed = true;
+ }
- protected function append($event) {
- if ($this->fp && $this->layout !== null) {
- fwrite($this->fp, $this->layout->format($event));
- }
- }
+ public function append($event) {
+ if ($this->fp && $this->layout !== null) {
+ fwrite($this->fp, $this->layout->format($event));
+ }
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderDailyFile.php b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderDailyFile.php
index 8a3a909..e8ab904 100644
--- a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderDailyFile.php
+++ b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderDailyFile.php
@@ -1,13 +1,13 @@
*
- * @author Abel Gonzalez
- * @author Knut Urdalen
- * @version $Revision: 635069 $
+ * @version $Revision: 771699 $
* @package log4php
* @subpackage appenders
- */
+ */
class LoggerAppenderDailyFile extends LoggerAppenderFile {
- /**
- * Format date.
- * It follows the {@link PHP_MANUAL#date()} formatting rules and should always be set before {@link $file} param.
- * @var string
- */
- public $datePattern = "Ymd";
-
- /**
- * Sets date format for the file name.
- * @param string $format a regular date() string format
- */
- public function setDatePattern($format) {
- $this->datePattern = $format;
- }
-
- /**
- * @return string returns date format for the filename
- */
- public function getDatePattern() {
- return $this->datePattern;
- }
-
- /**
- * The File property takes a string value which should be the name of the file to append to.
- * Sets and opens the file where the log output will go.
- *
- * @see LoggerAppenderFile::setFile()
- */
- public function setFile() {
- $numargs = func_num_args();
- $args = func_get_args();
-
- if ($numargs == 1 and is_string($args[0])) {
- parent::setFile( sprintf((string)$args[0], date($this->getDatePattern())) );
- } elseif ($numargs == 2 and is_string($args[0]) and is_bool($args[1])) {
- parent::setFile( sprintf((string)$args[0], date($this->getDatePattern())), $args[1] );
- }
- }
+ /**
+ * Format date.
+ * It follows the {@link PHP_MANUAL#date()} formatting rules and should always be set before {@link $file} param.
+ * @var string
+ */
+ public $datePattern = "Ymd";
+
+ /**
+ * Sets date format for the file name.
+ * @param string $format a regular date() string format
+ */
+ public function setDatePattern($format) {
+ $this->datePattern = $format;
+ }
+
+ /**
+ * @return string returns date format for the filename
+ */
+ public function getDatePattern() {
+ return $this->datePattern;
+ }
+
+ /**
+ * The File property takes a string value which should be the name of the file to append to.
+ * Sets and opens the file where the log output will go.
+ *
+ * @see LoggerAppenderFile::setFile()
+ */
+ public function setFile() {
+ $numargs = func_num_args();
+ $args = func_get_args();
+
+ if($numargs == 1 and is_string($args[0])) {
+ parent::setFile( sprintf((string)$args[0], date($this->getDatePattern())) );
+ } else if ($numargs == 2 and is_string($args[0]) and is_bool($args[1])) {
+ parent::setFile( sprintf((string)$args[0], date($this->getDatePattern())), $args[1] );
+ }
+ }
}
-
diff --git a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderDb.php b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderDb.php
deleted file mode 100644
index bf307cc..0000000
--- a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderDb.php
+++ /dev/null
@@ -1,213 +0,0 @@
-This appender uses a table in a database to log events.
- * Parameters are {@link $dsn}, {@link $createTable}, {@link table} and {@link $sql}.
- * See examples in test directory.
- *
- * @author Marco Vassura
- * @version $Revision: 635069 $
- * @package log4php
- * @subpackage appenders
- * @since 0.3
- */
-class LoggerAppenderDb extends LoggerAppenderSkeleton {
-
- /**
- * Create the log table if it does not exists (optional).
- * @var boolean
- */
- var $createTable = true;
-
- /**
- * PEAR::Db Data source name. Read PEAR::Db for dsn syntax (mandatory).
- * @var string
- */
- var $dsn;
-
- /**
- * A {@link LoggerPatternLayout} string used to format a valid insert query (mandatory).
- * @var string
- */
- var $sql;
-
- /**
- * Table name to write events. Used only if {@link $createTable} is true.
- * @var string
- */
- var $table;
-
- /**
- * @var object PEAR::Db instance
- * @access private
- */
- var $db = null;
-
- /**
- * @var boolean used to check if all conditions to append are true
- * @access private
- */
- var $canAppend = true;
-
- /**
- * @access private
- */
- var $requiresLayout = false;
-
- /**
- * Constructor.
- *
- * @param string $name appender name
- */
- function LoggerAppenderDb($name)
- {
- $this->LoggerAppenderSkeleton($name);
- }
-
- /**
- * Setup db connection.
- * Based on defined options, this method connects to db defined in {@link $dsn}
- * and creates a {@link $table} table if {@link $createTable} is true.
- * @return boolean true if all ok.
- */
- function activateOptions()
- {
- $this->db = DB::connect($this->dsn);
-
- if (DB::isError($this->db)) {
- LoggerLog::debug("LoggerAppenderDb::activateOptions() DB Connect Error [".$this->db->getMessage()."]");
- $this->db = null;
- $this->closed = true;
- $this->canAppend = false;
-
- } else {
-
- $this->layout = LoggerLayout::factory('LoggerPatternLayout');
- $this->layout->setConversionPattern($this->getSql());
-
- // test if log table exists
- $tableInfo = $this->db->tableInfo($this->table, $mode = null);
- if (DB::isError($tableInfo) and $this->getCreateTable()) {
- $query = "CREATE TABLE {$this->table} (timestamp varchar(32),logger varchar(32),level varchar(32),message varchar(64),thread varchar(32),file varchar(64),line varchar(4) );";
-
- LoggerLog::debug("LoggerAppenderDb::activateOptions() creating table '{$this->table}'... using sql='$query'");
-
- $result = $this->db->query($query);
- if (DB::isError($result)) {
- LoggerLog::debug("LoggerAppenderDb::activateOptions() error while creating '{$this->table}'. Error is ".$result->getMessage());
- $this->closed = true;
- $this->canAppend = false;
- return;
- }
- }
- $this->canAppend = true;
- $this->closed = false;
- }
-
- }
-
- function append($event)
- {
- if ($this->canAppend) {
-
- $query = $this->layout->format($event);
-
- LoggerLog::debug("LoggerAppenderDb::append() query='$query'");
-
- $this->db->query($query);
- }
- }
-
- function close()
- {
- if ($this->db !== null)
- $this->db->disconnect();
- $this->closed = true;
- }
-
- /**
- * @return boolean
- */
- function getCreateTable()
- {
- return $this->createTable;
- }
-
- /**
- * @return string the defined dsn
- */
- function getDsn()
- {
- return $this->dsn;
- }
-
- /**
- * @return string the sql pattern string
- */
- function getSql()
- {
- return $this->sql;
- }
-
- /**
- * @return string the table name to create
- */
- function getTable()
- {
- return $this->table;
- }
-
- function setCreateTable($flag)
- {
- $this->createTable = LoggerOptionConverter::toBoolean($flag, true);
- }
-
- function setDsn($newDsn)
- {
- $this->dsn = $newDsn;
- }
-
- function setSql($sql)
- {
- $this->sql = $sql;
- }
-
- function setTable($table)
- {
- $this->table = $table;
- }
-
-}
-
diff --git a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderEcho.php b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderEcho.php
index 3819c21..b9dcf48 100644
--- a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderEcho.php
+++ b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderEcho.php
@@ -1,13 +1,13 @@
This appender requires a layout.
+ * This appender requires a layout.
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 771557 $
* @package log4php
* @subpackage appenders
*/
-class LoggerAppenderEcho extends LoggerAppenderSkeleton {
-
- /**
- * @access private
- */
- var $requiresLayout = true;
-
- /**
- * @var boolean used internally to mark first append
- * @access private
- */
- var $firstAppend = true;
-
- function activateOptions()
- {
- $this->closed = false;
- return;
- }
-
- function close()
- {
- if (!$this->firstAppend)
- echo $this->layout->getFooter();
- $this->closed = true;
- }
+class LoggerAppenderEcho extends LoggerAppender {
+ /** boolean used internally to mark first append */
+ private $firstAppend = true;
+
+ public function __construct($name) {
+ parent::__construct($name);
+ $this->requiresLayout = true;
+ $this->firstAppend = true;
+ }
+
+ public function activateOptions() {
+ $this->closed = false;
+ }
+
+ public function close() {
+ if(!$this->firstAppend) {
+ echo $this->layout->getFooter();
+ }
+ $this->closed = true;
+ }
- function append($event)
- {
- LoggerLog::debug("LoggerAppenderEcho::append()");
-
- if ($this->layout !== null) {
- if ($this->firstAppend) {
- echo $this->layout->getHeader();
- $this->firstAppend = false;
- }
- echo $this->layout->format($event);
- }
- }
+ public function append($event) {
+ if($this->layout !== null) {
+ if($this->firstAppend) {
+ echo $this->layout->getHeader();
+ $this->firstAppend = false;
+ }
+ echo $this->layout->format($event);
+ }
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderFile.php b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderFile.php
index 7df66aa..6a0f07f 100644
--- a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderFile.php
+++ b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderFile.php
@@ -1,13 +1,13 @@
file),
* {@link $append}.
*
- * @author Marco Vassura
- * @author Knut Urdalen
- * @version $Revision: 640255 $
+ * @version $Revision: 771547 $
* @package log4php
* @subpackage appenders
*/
-class LoggerAppenderFile extends LoggerAppenderSkeleton {
+class LoggerAppenderFile extends LoggerAppender {
- /**
- * @var boolean if {@link $file} exists, appends events.
- */
- private $append = true;
- /**
- * @var string the file name used to append events
- */
+ /**
+ * @var boolean if {@link $file} exists, appends events.
+ */
+ private $append = true;
+ /**
+ * @var string the file name used to append events
+ */
protected $fileName;
- /**
- * @var mixed file resource
- */
+ /**
+ * @var mixed file resource
+ */
protected $fp = false;
-
+
public function __construct($name) {
parent::__construct($name);
$this->requiresLayout = true;
}
- public function activateOptions() {
- $fileName = $this->getFile();
- LoggerLog::debug("LoggerAppenderFile::activateOptions() opening file '{$fileName}'");
- $this->fp = fopen($fileName, ($this->getAppend()? 'a':'w'));
- if ($this->fp) {
- if ($this->getAppend())
- fseek($this->fp, 0, SEEK_END);
- fwrite($this->fp, $this->layout->getHeader());
- $this->closed = false;
- } else {
- $this->closed = true;
- }
- }
-
- public function close() {
- if($this->fp and $this->layout !== null) {
- fwrite($this->fp, $this->layout->getFooter());
- }
-
- $this->closeFile();
- $this->closed = true;
- }
+ public function activateOptions() {
+ $fileName = $this->getFile();
- /**
- * Closes the previously opened file.
- */
- public function closeFile() {
- if ($this->fp)
- fclose($this->fp);
- }
-
- /**
- * @return boolean
- */
- public function getAppend() {
- return $this->append;
- }
+ if(!is_file($fileName)) {
+ $dir = dirname($fileName);
+ if(!is_dir($dir)) {
+ mkdir($dir, 0777, true);
+ }
+ }
- /**
- * @return string
- */
- public function getFile() {
- return $this->getFileName();
- }
-
- /**
- * @return string
- */
- public function getFileName() {
- return $this->fileName;
- }
+ $this->fp = fopen($fileName, ($this->getAppend()? 'a':'w'));
+ if($this->fp) {
+ if(flock($this->fp, LOCK_EX)) {
+ if($this->getAppend()) {
+ fseek($this->fp, 0, SEEK_END);
+ }
+ fwrite($this->fp, $this->layout->getHeader());
+ $this->closed = false;
+ } else { // race condition, unable to lock file
+ // TODO: should we take some action in this case?
+ $this->closed = true;
+ }
+ } else {
+ $this->closed = true;
+ }
+ }
+
+ public function close() {
+ if($this->fp and $this->layout !== null) {
+ fwrite($this->fp, $this->layout->getFooter());
+ }
+
+ $this->closeFile();
+ $this->closed = true;
+ }
+
+ /**
+ * Closes the previously opened file.
+ */
+ public function closeFile() {
+ if($this->fp) {
+ fclose($this->fp);
+ }
+ }
+
+ /**
+ * @return boolean
+ */
+ public function getAppend() {
+ return $this->append;
+ }
+
+ /**
+ * @return string
+ */
+ public function getFile() {
+ return $this->getFileName();
+ }
+
+ /**
+ * @return string
+ */
+ public function getFileName() {
+ return $this->fileName;
+ }
- /**
- * Close any previously opened file and call the parent's reset.
- */
- public function reset() {
- $this->closeFile();
- $this->fileName = null;
- parent::reset();
- }
+ /**
+ * Close any previously opened file and call the parent's reset.
+ */
+ public function reset() {
+ $this->closeFile();
+ $this->fileName = null;
+ parent::reset();
+ }
- public function setAppend($flag) {
- $this->append = LoggerOptionConverter::toBoolean($flag, true);
- }
+ public function setAppend($flag) {
+ $this->append = LoggerOptionConverter::toBoolean($flag, true);
+ }
- /**
- * Sets and opens the file where the log output will go.
- *
- * This is an overloaded method. It can be called with:
- * - setFile(string $fileName) to set filename.
- * - setFile(string $fileName, boolean $append) to set filename and append.
- */
- public function setFile() {
- $numargs = func_num_args();
- $args = func_get_args();
+ /**
+ * Sets and opens the file where the log output will go.
+ *
+ * This is an overloaded method. It can be called with:
+ * - setFile(string $fileName) to set filename.
+ * - setFile(string $fileName, boolean $append) to set filename and append.
+ */
+ public function setFile() {
+ $numargs = func_num_args();
+ $args = func_get_args();
- if ($numargs == 1 and is_string($args[0])) {
- $this->setFileName($args[0]);
- } elseif ($numargs >=2 and is_string($args[0]) and is_bool($args[1])) {
- $this->setFile($args[0]);
- $this->setAppend($args[1]);
- }
- }
-
- public function setFileName($fileName) {
- $this->fileName = $fileName;
- }
+ if($numargs == 1 and is_string($args[0])) {
+ $this->setFileName($args[0]);
+ } else if ($numargs >=2 and is_string($args[0]) and is_bool($args[1])) {
+ $this->setFile($args[0]);
+ $this->setAppend($args[1]);
+ }
+ }
+
+ public function setFileName($fileName) {
+ $this->fileName = $fileName;
+ }
- public function append($event) {
- if ($this->fp and $this->layout !== null) {
- LoggerLog::debug("LoggerAppenderFile::append()");
- fwrite($this->fp, $this->layout->format($event));
- }
- }
+ public function append($event) {
+ if($this->fp and $this->layout !== null) {
+ fwrite($this->fp, $this->layout->format($event));
+ }
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderMail.php b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderMail.php
index 154980f..44efa62 100644
--- a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderMail.php
+++ b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderMail.php
@@ -1,13 +1,13 @@
Parameters are {@link $from}, {@link $to}, {@link $subject}.
* This appender requires a layout.
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 771547 $
* @package log4php
* @subpackage appenders
*/
-class LoggerAppenderMail extends LoggerAppenderSkeleton {
+class LoggerAppenderMail extends LoggerAppender {
- /**
- * @var string 'from' field
- */
- var $from = null;
+ /**
+ * @var string 'from' field
+ */
+ var $from = null;
- /**
- * @var string 'subject' field
- */
- var $subject = 'Log4php Report';
-
- /**
- * @var string 'to' field
- */
- var $to = null;
+ /**
+ * @var string 'subject' field
+ */
+ var $subject = 'Log4php Report';
+
+ /**
+ * @var string 'to' field
+ */
+ var $to = null;
- /**
- * @var string used to create mail body
- * @access private
- */
- var $body = '';
-
- /**
- * Constructor.
- *
- * @param string $name appender name
- */
- public function __construct($name) {
- parent::__construct($name);
- $this->requiresLayout = true;
- }
+ /**
+ * @var string used to create mail body
+ * @access private
+ */
+ var $body = '';
+
+ /**
+ * Constructor.
+ *
+ * @param string $name appender name
+ */
+ public function __construct($name) {
+ parent::__construct($name);
+ $this->requiresLayout = true;
+ }
- public function activateOptions() {
- $this->closed = false;
- }
-
- public function close() {
- $from = $this->from;
- $to = $this->to;
+ public function activateOptions() {
+ $this->closed = false;
+ }
+
+ public function close() {
+ $from = $this->from;
+ $to = $this->to;
- if (!empty($this->body) and $from !== null and $to !== null and $this->layout !== null) {
- $subject = $this->subject;
- LoggerLog::debug("LoggerAppenderMail::close() sending mail from=[{$from}] to=[{$to}] subject=[{$subject}]");
- mail(
- $to, $subject,
- $this->layout->getHeader() . $this->body . $this->layout->getFooter(),
- "From: {$from}\r\n"
- );
- }
- $this->closed = true;
- }
-
- /**
- * @return string
- */
- function getFrom()
- {
- return $this->from;
- }
-
- /**
- * @return string
- */
- function getSubject()
- {
- return $this->subject;
- }
+ if(!empty($this->body) and $from !== null and $to !== null and $this->layout !== null) {
+ $subject = $this->subject;
+ mail(
+ $to, $subject,
+ $this->layout->getHeader() . $this->body . $this->layout->getFooter(),
+ "From: {$from}\r\n"
+ );
+ }
+ $this->closed = true;
+ }
+
+ /**
+ * @return string
+ */
+ function getFrom() {
+ return $this->from;
+ }
+
+ /**
+ * @return string
+ */
+ function getSubject() {
+ return $this->subject;
+ }
- /**
- * @return string
- */
- function getTo()
- {
- return $this->to;
- }
-
- function setSubject($subject)
- {
- $this->subject = $subject;
- }
-
- function setTo($to)
- {
- $this->to = $to;
- }
+ /**
+ * @return string
+ */
+ function getTo() {
+ return $this->to;
+ }
+
+ function setSubject($subject) {
+ $this->subject = $subject;
+ }
+
+ function setTo($to) {
+ $this->to = $to;
+ }
- function setFrom($from)
- {
- $this->from = $from;
- }
+ function setFrom($from) {
+ $this->from = $from;
+ }
- function append($event)
- {
- if ($this->layout !== null)
- $this->body .= $this->layout->format($event);
- }
+ function append($event) {
+ if($this->layout !== null) {
+ $this->body .= $this->layout->format($event);
+ }
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderMailEvent.php b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderMailEvent.php
index 8405fcb..d735fb3 100644
--- a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderMailEvent.php
+++ b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderMailEvent.php
@@ -1,13 +1,13 @@
Parameters are
@@ -41,132 +31,143 @@ require_once(LOG4PHP_DIR . '/LoggerLog.php');
* {@link $subject} (optional).
* A layout is required.
*
- * @author Domenico Lordi
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 771547 $
* @package log4php
* @subpackage appenders
*/
-class LoggerAppenderMailEvent extends LoggerAppenderSkeleton {
-
- /**
- * @var string 'from' field
- */
- var $from = null;
-
- /**
- * @var integer 'from' field
- */
- var $port = 25;
-
- /**
- * @var string hostname.
- */
- var $smtpHost = null;
-
- /**
- * @var string 'subject' field
- */
- var $subject = '';
-
- /**
- * @var string 'to' field
- */
- var $to = null;
-
- /**
- * @access private
- */
- var $requiresLayout = true;
-
- /**
- * Constructor.
- *
- * @param string $name appender name
- */
- function LoggerAppenderMailEvent($name)
- {
- $this->LoggerAppenderSkeleton($name);
- }
-
- function activateOptions()
- {
- $this->closed = false;
- }
-
- function close()
- {
- $this->closed = true;
- }
-
- /**
- * @return string
- */
- function getFrom() { return $this->from; }
-
- /**
- * @return integer
- */
- function getPort() { return $this->port; }
-
- /**
- * @return string
- */
- function getSmtpHost() { return $this->smtpHost; }
-
- /**
- * @return string
- */
- function getSubject() { return $this->subject; }
-
- /**
- * @return string
- */
- function getTo() { return $this->to; }
-
- function setFrom($from) { $this->from = $from; }
- function setPort($port) { $this->port = (int)$port; }
- function setSmtpHost($smtpHost) { $this->smtpHost = $smtpHost; }
- function setSubject($subject) { $this->subject = $subject; }
- function setTo($to) { $this->to = $to; }
-
- function append($event)
- {
- $from = $this->getFrom();
- $to = $this->getTo();
- if (empty($from) or empty($to))
- return;
-
- $smtpHost = $this->getSmtpHost();
- $prevSmtpHost = ini_get('SMTP');
- if (!empty($smtpHost)) {
- ini_set('SMTP', $smtpHost);
- } else {
- $smtpHost = $prevSmtpHost;
- }
-
- $smtpPort = $this->getPort();
- $prevSmtpPort= ini_get('smtp_port');
- if ($smtpPort > 0 and $smtpPort < 65535) {
- ini_set('smtp_port', $smtpPort);
- } else {
- $smtpPort = $prevSmtpPort;
- }
-
- LoggerLog::debug(
- "LoggerAppenderMailEvent::append()" .
- ":from=[{$from}]:to=[{$to}]:smtpHost=[{$smtpHost}]:smtpPort=[{$smtpPort}]"
- );
-
- if (!@mail( $to, $this->getSubject(),
- $this->layout->getHeader() . $this->layout->format($event) . $this->layout->getFooter($event),
- "From: {$from}\r\n"
- )) {
- LoggerLog::debug("LoggerAppenderMailEvent::append() mail error");
- }
-
- ini_set('SMTP', $prevSmtpHost);
- ini_set('smtp_port', $prevSmtpPort);
- }
+class LoggerAppenderMailEvent extends LoggerAppender {
+
+ /**
+ * @var string 'from' field
+ */
+ var $from = null;
+
+ /**
+ * @var integer 'from' field
+ */
+ var $port = 25;
+
+ /**
+ * @var string hostname.
+ */
+ var $smtpHost = null;
+
+ /**
+ * @var string 'subject' field
+ */
+ var $subject = '';
+
+ /**
+ * @var string 'to' field
+ */
+ var $to = null;
+
+ /**
+ * @access private
+ */
+ var $requiresLayout = true;
+
+ /**
+ * Constructor.
+ *
+ * @param string $name appender name
+ */
+ public function __construct($name) {
+ parent::__construct($name);
+ }
+
+ function activateOptions() {
+ $this->closed = false;
+ }
+
+ function close() {
+ $this->closed = true;
+ }
+
+ /**
+ * @return string
+ */
+ function getFrom() {
+ return $this->from;
+ }
+
+ /**
+ * @return integer
+ */
+ function getPort() {
+ return $this->port;
+ }
+
+ /**
+ * @return string
+ */
+ function getSmtpHost() {
+ return $this->smtpHost;
+ }
+
+ /**
+ * @return string
+ */
+ function getSubject() {
+ return $this->subject;
+ }
+
+ /**
+ * @return string
+ */
+ function getTo() {
+ return $this->to;
+ }
+
+ function setFrom($from) {
+ $this->from = $from;
+ }
+
+ function setPort($port) {
+ $this->port = (int)$port;
+ }
+
+ function setSmtpHost($smtpHost) {
+ $this->smtpHost = $smtpHost;
+ }
+
+ function setSubject($subject) {
+ $this->subject = $subject;
+ }
+
+ function setTo($to) {
+ $this->to = $to;
+ }
+
+ function append($event) {
+ $from = $this->getFrom();
+ $to = $this->getTo();
+ if(empty($from) or empty($to)) {
+ return;
+ }
+
+ $smtpHost = $this->getSmtpHost();
+ $prevSmtpHost = ini_get('SMTP');
+ if(!empty($smtpHost)) {
+ ini_set('SMTP', $smtpHost);
+ } else {
+ $smtpHost = $prevSmtpHost;
+ }
+
+ $smtpPort = $this->getPort();
+ $prevSmtpPort= ini_get('smtp_port');
+ if($smtpPort > 0 and $smtpPort < 65535) {
+ ini_set('smtp_port', $smtpPort);
+ } else {
+ $smtpPort = $prevSmtpPort;
+ }
+
+ @mail($to, $this->getSubject(),
+ $this->layout->getHeader() . $this->layout->format($event) . $this->layout->getFooter($event),
+ "From: {$from}\r\n");
+
+ ini_set('SMTP', $prevSmtpHost);
+ ini_set('smtp_port', $prevSmtpPort);
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderNull.php b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderNull.php
index b94f89d..63f85cc 100644
--- a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderNull.php
+++ b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderNull.php
@@ -1,13 +1,13 @@
closed = false;
- }
-
- public function close()
- {
- $this->closed = true;
- }
-
- /**
- * Do nothing.
- * How I Love it !! :)
- *
- * @param LoggerLoggingEvent $event
- */
- protected function append($event)
- {
- LoggerLog::debug("LoggerAppenderNull::append()");
- }
+ protected $requiresLayout = false;
+
+ public function __construct($name) {
+ parent::__construct($name);
+ }
+
+ public function activateOptions() {
+ $this->closed = false;
+ }
+
+ public function close() {
+ $this->closed = true;
+ }
+
+ /**
+ * Do nothing.
+ *
+ * @param LoggerLoggingEvent $event
+ */
+ public function append($event) {
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderPDO.php b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderPDO.php
new file mode 100644
index 0000000..73916cd
--- /dev/null
+++ b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderPDO.php
@@ -0,0 +1,203 @@
+This appender uses a table in a database to log events.
+ * Parameters are {@link $host}, {@link $user}, {@link $password},
+ * {@link $database}, {@link $createTable}, {@link $table} and {@link $sql}.
+ *
+ * @package log4php
+ * @subpackage appenders
+ * @since 2.0
+ */
+class LoggerAppenderPDO extends LoggerAppender {
+ /** Create the log table if it does not exists (optional). */
+ private $createTable = true;
+
+ /** Database user name */
+ private $user = '';
+
+ /** Database password */
+ private $password = '';
+
+ /** DSN string for enabling a connection */
+ private $dsn;
+
+ /** A {@link LoggerPatternLayout} string used to format a valid insert query (mandatory) */
+ private $sql;
+
+ /** Table name to write events. Used only if {@link $createTable} is true. */
+ private $table = 'log4php_log';
+
+ /** The instance */
+ private $db = null;
+
+ /** boolean used to check if all conditions to append are true */
+ private $canAppend = true;
+
+ /**
+ * Constructor.
+ * This apender doesn't require a layout.
+ * @param string $name appender name
+ */
+ function __construct($name) {
+ parent::__construct($name);
+ $this->requiresLayout = false;
+ }
+
+ /**
+ * Setup db connection.
+ * Based on defined options, this method connects to db defined in {@link $dsn}
+ * and creates a {@link $table} table if {@link $createTable} is true.
+ * @return boolean true if all ok.
+ * @throws a PDOException if the attempt to connect to the requested database fails.
+ */
+ public function activateOptions() {
+ if($this->user === null) {
+ $this->db = new PDO($this->dsn);
+ } else if($this->password === null) {
+ $this->db = new PDO($this->dsn, $this->user);
+ } else {
+ $this->db = new PDO($this->dsn,$this->user,$this->password);
+ }
+
+ // test if log table exists
+ $result = $this->db->query('select * from ' . $this->table . ' where 1 = 0');
+ if ($result == false and $this->createTable) {
+ // TODO mysql syntax?
+ $query = "CREATE TABLE {$this->table} ( timestamp varchar(32)," .
+ "logger varchar(32)," .
+ "level varchar(32)," .
+ "message varchar(64)," .
+ "thread varchar(32)," .
+ "file varchar(64)," .
+ "line varchar(4) );";
+
+ $result = $this->db->query($query);
+ if (!$result) {
+ $this->canAppend = false;
+ return;
+ // TODO throw exception?
+ }
+ }
+
+ if($this->sql == '' || $this->sql == null) {
+ $this->sql = "INSERT INTO $this->table ( timestamp, " .
+ "logger, " .
+ "level, " .
+ "message, " .
+ "thread, " .
+ "file, " .
+ "line" .
+ ") VALUES ('%d','%c','%p','%m','%t','%F','%L')";
+ }
+
+ $this->layout = LoggerReflectionUtils::createObject('LoggerLayoutPattern');
+ $this->layout->setConversionPattern($this->sql);
+ $this->canAppend = true;
+ return true;
+ }
+
+ /**
+ * Appends a new event to the database using the sql format.
+ */
+ // TODO:should work with prepared statement
+ public function append($event) {
+ if ($this->canAppend) {
+ $query = $this->layout->format($event);
+ $this->db->exec($query);
+ }
+ }
+
+ /**
+ * Closes the connection to the logging database
+ */
+ public function close() {
+ if ($this->db !== null) {
+ $db = null;
+ }
+ $this->closed = true;
+ }
+
+ /**
+ * Indicator if the logging table should be created on startup,
+ * if its not existing.
+ */
+ public function setCreateTable($flag) {
+ $this->createTable = LoggerOptionConverter::toBoolean($flag, true);
+ }
+
+ /**
+ * Sets the username for this connection.
+ * Defaults to ''
+ */
+ function setUser($user) {
+ $this->user = $user;
+ }
+
+ /**
+ * Sets the password for this connection.
+ * Defaults to ''
+ */
+ public function setPassword($password) {
+ $this->password = $password;
+ }
+
+ /**
+ * Sets the SQL string into which the event should be transformed.
+ * Defaults to:
+ *
+ * INSERT INTO $this->table
+ * ( timestamp, logger, level, message, thread, file, line)
+ * VALUES
+ * ('%d','%c','%p','%m','%t','%F','%L')
+ *
+ * It's not necessary to change this except you have customized logging'
+ */
+ public function setSql($sql) {
+ $this->sql = $sql;
+ }
+
+ /**
+ * Sets the tablename to which this appender should log.
+ * Defaults to log4php_log
+ */
+ public function setTable($table) {
+ $this->table = $table;
+ }
+
+ /**
+ * Sets the DSN string for this connection. In case of
+ * SQLite it could look like this: 'sqlite:appenders/pdotest.sqlite'
+ */
+ public function setDSN($dsn) {
+ $this->dsn = $dsn;
+ }
+
+ /**
+ * Sometimes databases allow only one connection to themselves in one thread.
+ * SQLite has this behaviour. In that case this handle is needed if the database
+ * must be checked for events
+ */
+ public function getDatabaseHandle() {
+ return $this->db;
+ }
+}
+
diff --git a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderPhp.php b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderPhp.php
index 8c82ceb..40c9bcd 100644
--- a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderPhp.php
+++ b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderPhp.php
@@ -1,13 +1,13 @@
Levels are mapped as follows:
@@ -37,34 +28,35 @@ require_once(LOG4PHP_DIR . '/LoggerLog.php');
* - WARN <= level < ERROR mapped to E_USER_WARNING
* - level >= ERROR mapped to E_USER_ERROR
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 771547 $
* @package log4php
* @subpackage appenders
*/
-class LoggerAppenderPhp extends LoggerAppenderSkeleton {
+class LoggerAppenderPhp extends LoggerAppender {
-
- public function activateOptions() {
- $this->layout = LoggerLayout::factory('LoggerLayoutTTCC');
- $this->closed = false;
- }
+ public function __construct($name) {
+ parent::__construct($name);
+ $this->requiresLayout = true;
+ }
+
+ public function activateOptions() {
+ $this->closed = false;
+ }
- public function close() {
- $this->closed = true;
- }
+ public function close() {
+ $this->closed = true;
+ }
- public function append($event) {
- if ($this->layout !== null) {
- LoggerLog::debug("LoggerAppenderPhp::append()");
- $level = $event->getLevel();
- if ($level->isGreaterOrEqual(LoggerLevel::getLevelError())) {
- trigger_error($this->layout->format($event), E_USER_ERROR);
- } elseif ($level->isGreaterOrEqual(LoggerLevel::getLevelWarn())) {
- trigger_error($this->layout->format($event), E_USER_WARNING);
- } else {
- trigger_error($this->layout->format($event), E_USER_NOTICE);
- }
- }
- }
+ public function append($event) {
+ if($this->layout !== null) {
+ $level = $event->getLevel();
+ if($level->isGreaterOrEqual(LoggerLevel::getLevelError())) {
+ trigger_error($this->layout->format($event), E_USER_ERROR);
+ } else if ($level->isGreaterOrEqual(LoggerLevel::getLevelWarn())) {
+ trigger_error($this->layout->format($event), E_USER_WARNING);
+ } else {
+ trigger_error($this->layout->format($event), E_USER_NOTICE);
+ }
+ }
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderRollingFile.php b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderRollingFile.php
index 011067a..cbff808 100644
--- a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderRollingFile.php
+++ b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderRollingFile.php
@@ -1,13 +1,13 @@
Contributors: Sergio Strampelli.
*
- * @author Marco Vassura
- * @version $Revision: 640254 $
+ * @version $Revision: 771217 $
* @package log4php
* @subpackage appenders
*/
class LoggerAppenderRollingFile extends LoggerAppenderFile {
- /**
- * Set the maximum size that the output file is allowed to reach
- * before being rolled over to backup files.
- *
- * In configuration files, the MaxFileSize option takes a
- * long integer in the range 0 - 2^63. You can specify the value
- * with the suffixes "KB", "MB" or "GB" so that the integer is
- * interpreted being expressed respectively in kilobytes, megabytes
- * or gigabytes. For example, the value "10KB" will be interpreted
- * as 10240.
- * The default maximum file size is 10MB.
- *
- * Note that MaxFileSize cannot exceed 2 GB.
- *
- * @var integer
- */
- var $maxFileSize = 10485760;
-
- /**
- * Set the maximum number of backup files to keep around.
- *
- * The MaxBackupIndex option determines how many backup
- * files are kept before the oldest is erased. This option takes
- * a positive integer value. If set to zero, then there will be no
- * backup files and the log file will be truncated when it reaches
- * MaxFileSize.
- * There is one backup file by default.
- *
- * @var integer
- */
- var $maxBackupIndex = 1;
-
- /**
- * @var string the filename expanded
- * @access private
- */
- var $expandedFileName = null;
+ /**
+ * Set the maximum size that the output file is allowed to reach
+ * before being rolled over to backup files.
+ *
+ * In configuration files, the MaxFileSize option takes a
+ * long integer in the range 0 - 2^63. You can specify the value
+ * with the suffixes "KB", "MB" or "GB" so that the integer is
+ * interpreted being expressed respectively in kilobytes, megabytes
+ * or gigabytes. For example, the value "10KB" will be interpreted
+ * as 10240.
+ * The default maximum file size is 10MB.
+ *
+ * Note that MaxFileSize cannot exceed 2 GB.
+ *
+ * @var integer
+ */
+ var $maxFileSize = 10485760;
+
+ /**
+ * Set the maximum number of backup files to keep around.
+ *
+ * The MaxBackupIndex option determines how many backup
+ * files are kept before the oldest is erased. This option takes
+ * a positive integer value. If set to zero, then there will be no
+ * backup files and the log file will be truncated when it reaches
+ * MaxFileSize.
+ * There is one backup file by default.
+ *
+ * @var integer
+ */
+ var $maxBackupIndex = 1;
+
+ /**
+ * @var string the filename expanded
+ * @access private
+ */
+ var $expandedFileName = null;
- /**
- * Constructor.
- *
- * @param string $name appender name
- */
- public function __construct($name) {
- parent::__construct($name);
- }
-
- /**
- * Returns the value of the MaxBackupIndex option.
- * @return integer
- */
- function getExpandedFileName() {
- return $this->expandedFileName;
- }
+ /**
+ * Constructor.
+ *
+ * @param string $name appender name
+ */
+ public function __construct($name) {
+ parent::__construct($name);
+ }
+
+ /**
+ * Returns the value of the MaxBackupIndex option.
+ * @return integer
+ */
+ function getExpandedFileName() {
+ return $this->expandedFileName;
+ }
- /**
- * Returns the value of the MaxBackupIndex option.
- * @return integer
- */
- function getMaxBackupIndex() {
- return $this->maxBackupIndex;
- }
+ /**
+ * Returns the value of the MaxBackupIndex option.
+ * @return integer
+ */
+ function getMaxBackupIndex() {
+ return $this->maxBackupIndex;
+ }
- /**
- * Get the maximum size that the output file is allowed to reach
- * before being rolled over to backup files.
- * @return integer
- */
- function getMaximumFileSize() {
- return $this->maxFileSize;
- }
+ /**
+ * Get the maximum size that the output file is allowed to reach
+ * before being rolled over to backup files.
+ * @return integer
+ */
+ function getMaximumFileSize() {
+ return $this->maxFileSize;
+ }
- /**
- * Implements the usual roll over behaviour.
- *
- * If MaxBackupIndex is positive, then files File.1, ..., File.MaxBackupIndex -1 are renamed to File.2, ..., File.MaxBackupIndex.
- * Moreover, File is renamed File.1 and closed. A new File is created to receive further log output.
- *
- *
If MaxBackupIndex is equal to zero, then the File is truncated with no backup files created.
- */
- function rollOver()
- {
- // If maxBackups <= 0, then there is no file renaming to be done.
- if($this->maxBackupIndex > 0) {
- $fileName = $this->getExpandedFileName();
- // Delete the oldest file, to keep Windows happy.
- $file = $fileName . '.' . $this->maxBackupIndex;
- if (is_writable($file))
- unlink($file);
- // Map {(maxBackupIndex - 1), ..., 2, 1} to {maxBackupIndex, ..., 3, 2}
- for ($i = $this->maxBackupIndex - 1; $i >= 1; $i--) {
- $file = $fileName . "." . $i;
- if (is_readable($file)) {
- $target = $fileName . '.' . ($i + 1);
- rename($file, $target);
- }
- }
-
- // Rename fileName to fileName.1
- $target = $fileName . ".1";
-
- $this->closeFile(); // keep windows happy.
-
- $file = $fileName;
- rename($file, $target);
- }
-
- $this->setFile($fileName, false);
- unset($this->fp);
- $this->activateOptions();
- }
-
- function setFileName($fileName)
- {
- $this->fileName = $fileName;
- $this->expandedFileName = realpath($fileName);
- LoggerLog::debug("LoggerAppenderRollingFile::setFileName():filename=[{$fileName}]:expandedFileName=[{$this->expandedFileName}]");
- }
+ /**
+ * Implements the usual roll over behaviour.
+ *
+ *
If MaxBackupIndex is positive, then files File.1, ..., File.MaxBackupIndex -1 are renamed to File.2, ..., File.MaxBackupIndex.
+ * Moreover, File is renamed File.1 and closed. A new File is created to receive further log output.
+ *
+ *
If MaxBackupIndex is equal to zero, then the File is truncated with no backup files created.
+ */
+ function rollOver() {
+ // If maxBackups <= 0, then there is no file renaming to be done.
+ if($this->maxBackupIndex > 0) {
+ $fileName = $this->getExpandedFileName();
+ // Delete the oldest file, to keep Windows happy.
+ $file = $fileName . '.' . $this->maxBackupIndex;
+ if(is_writable($file))
+ unlink($file);
+ // Map {(maxBackupIndex - 1), ..., 2, 1} to {maxBackupIndex, ..., 3, 2}
+ for($i = $this->maxBackupIndex - 1; $i >= 1; $i--) {
+ $file = $fileName . "." . $i;
+ if(is_readable($file)) {
+ $target = $fileName . '.' . ($i + 1);
+ rename($file, $target);
+ }
+ }
+
+ // Rename fileName to fileName.1
+ $target = $fileName . ".1";
+
+ $this->closeFile(); // keep windows happy.
+
+ $file = $fileName;
+ rename($file, $target);
+ }
+
+ unset($this->fp);
+ $this->activateOptions();
+ $this->setFile($fileName, false);
+ }
+
+ function setFileName($fileName) {
+ $this->fileName = $fileName;
+ $this->expandedFileName = realpath($fileName);
+ }
- /**
- * Set the maximum number of backup files to keep around.
- *
- *
The MaxBackupIndex option determines how many backup
- * files are kept before the oldest is erased. This option takes
- * a positive integer value. If set to zero, then there will be no
- * backup files and the log file will be truncated when it reaches
- * MaxFileSize.
- *
- * @param mixed $maxBackups
- */
- function setMaxBackupIndex($maxBackups)
- {
- if (is_numeric($maxBackups))
- $this->maxBackupIndex = abs((int)$maxBackups);
- }
+ /**
+ * Set the maximum number of backup files to keep around.
+ *
+ *
The MaxBackupIndex option determines how many backup
+ * files are kept before the oldest is erased. This option takes
+ * a positive integer value. If set to zero, then there will be no
+ * backup files and the log file will be truncated when it reaches
+ * MaxFileSize.
+ *
+ * @param mixed $maxBackups
+ */
+ function setMaxBackupIndex($maxBackups) {
+ if(is_numeric($maxBackups)) {
+ $this->maxBackupIndex = abs((int)$maxBackups);
+ }
+ }
- /**
- * Set the maximum size that the output file is allowed to reach
- * before being rolled over to backup files.
- *
- * @param mixed $maxFileSize
- * @see setMaxFileSize()
- */
- function setMaximumFileSize($maxFileSize)
- {
- $this->setMaxFileSize($maxFileSize);
- }
+ /**
+ * Set the maximum size that the output file is allowed to reach
+ * before being rolled over to backup files.
+ *
+ * @param mixed $maxFileSize
+ * @see setMaxFileSize()
+ */
+ function setMaximumFileSize($maxFileSize) {
+ $this->setMaxFileSize($maxFileSize);
+ }
- /**
- * Set the maximum size that the output file is allowed to reach
- * before being rolled over to backup files.
- *
In configuration files, the MaxFileSize option takes an
- * long integer in the range 0 - 2^63. You can specify the value
- * with the suffixes "KB", "MB" or "GB" so that the integer is
- * interpreted being expressed respectively in kilobytes, megabytes
- * or gigabytes. For example, the value "10KB" will be interpreted
- * as 10240.
- *
- * @param mixed $value
- */
- function setMaxFileSize($value)
- {
- $maxFileSize = null;
- $numpart = substr($value,0, strlen($value) -2);
- $suffix = strtoupper(substr($value, -2));
+ /**
+ * Set the maximum size that the output file is allowed to reach
+ * before being rolled over to backup files.
+ *
In configuration files, the MaxFileSize option takes an
+ * long integer in the range 0 - 2^63. You can specify the value
+ * with the suffixes "KB", "MB" or "GB" so that the integer is
+ * interpreted being expressed respectively in kilobytes, megabytes
+ * or gigabytes. For example, the value "10KB" will be interpreted
+ * as 10240.
+ *
+ * @param mixed $value
+ */
+ function setMaxFileSize($value) {
+ $maxFileSize = null;
+ $numpart = substr($value,0, strlen($value) -2);
+ $suffix = strtoupper(substr($value, -2));
- switch ($suffix) {
- case 'KB': $maxFileSize = (int)((int)$numpart * 1024); break;
- case 'MB': $maxFileSize = (int)((int)$numpart * 1024 * 1024); break;
- case 'GB': $maxFileSize = (int)((int)$numpart * 1024 * 1024 * 1024); break;
- default:
- if (is_numeric($value)) {
- $maxFileSize = (int)$value;
- }
- }
-
- if ($maxFileSize === null) {
- LoggerLog::debug("LoggerAppenderRollingFile::setMaxFileSize():value=[$value] wrong declaration");
- } else {
- $this->maxFileSize = abs($maxFileSize);
- }
- }
+ switch($suffix) {
+ case 'KB': $maxFileSize = (int)((int)$numpart * 1024); break;
+ case 'MB': $maxFileSize = (int)((int)$numpart * 1024 * 1024); break;
+ case 'GB': $maxFileSize = (int)((int)$numpart * 1024 * 1024 * 1024); break;
+ default:
+ if(is_numeric($value)) {
+ $maxFileSize = (int)$value;
+ }
+ }
+
+ if($maxFileSize === null) {
+ } else {
+ $this->maxFileSize = abs($maxFileSize);
+ }
+ }
- /**
- * @param LoggerLoggingEvent $event
- */
- function append($event)
- {
- if ($this->fp) {
- parent::append($event);
- if (ftell($this->fp) > $this->getMaximumFileSize())
- $this->rollOver();
- }
- }
+ /**
+ * @param LoggerLoggingEvent $event
+ */
+ function append($event) {
+ if($this->fp) {
+ parent::append($event);
+ if(ftell($this->fp) > $this->getMaximumFileSize()) {
+ $this->rollOver();
+ }
+ }
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderSocket.php b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderSocket.php
index 75bb930..6dddeaa 100644
--- a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderSocket.php
+++ b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderSocket.php
@@ -1,13 +1,13 @@
false.
- */
- var $log4jNamespace = false;
+ /**
+ * @var mixed socket connection resource
+ * @access private
+ */
+ var $sp = false;
+
+ /**
+ * Target host. On how to define remote hostaname see
+ * {@link PHP_MANUAL#fsockopen}
+ * @var string
+ */
+ var $remoteHost = '';
+
+ /**
+ * @var integer the network port.
+ */
+ var $port = 4446;
+
+ /**
+ * @var boolean get event's location info.
+ */
+ var $locationInfo = false;
+
+ /**
+ * @var integer connection timeout
+ */
+ var $timeout = 30;
+
+ /**
+ * @var boolean output events via {@link LoggerXmlLayout}
+ */
+ var $useXml = false;
+
+ /**
+ * @var boolean forward this option to {@link LoggerXmlLayout}.
+ * Ignored if {@link $useXml} is false.
+ */
+ var $log4jNamespace = false;
- /**
- * @var LoggerXmlLayout
- * @access private
- */
- var $xmlLayout = null;
-
- /**
- * Create a socket connection using defined parameters
- */
- public function activateOptions() {
- LoggerLog::debug("LoggerAppenderSocket::activateOptions() creating a socket...");
- $errno = 0;
- $errstr = '';
- $this->sp = @fsockopen($this->getRemoteHost(), $this->getPort(), $errno, $errstr, $this->getTimeout());
- if ($errno) {
- LoggerLog::debug("LoggerAppenderSocket::activateOptions() socket error [$errno] $errstr");
- $this->closed = true;
- } else {
- LoggerLog::debug("LoggerAppenderSocket::activateOptions() socket created [".$this->sp."]");
- if ($this->getUseXml()) {
- $this->xmlLayout = LoggerLayout::factory('LoggerXmlLayout');
- if ($this->xmlLayout === null) {
- LoggerLog::debug("LoggerAppenderSocket::activateOptions() useXml is true but layout is null");
- $this->setUseXml(false);
- } else {
- $this->xmlLayout->setLocationInfo($this->getLocationInfo());
- $this->xmlLayout->setLog4jNamespace($this->getLog4jNamespace());
- $this->xmlLayout->activateOptions();
- }
- }
- $this->closed = false;
- }
- }
-
- public function close() {
- fclose($this->sp);
- $this->closed = true;
- }
+ /**
+ * @var LoggerXmlLayout
+ * @access private
+ */
+ var $xmlLayout = null;
+
+ /**
+ * Create a socket connection using defined parameters
+ */
+ public function activateOptions() {
+ $errno = 0;
+ $errstr = '';
+ $this->sp = @fsockopen($this->getRemoteHost(), $this->getPort(), $errno, $errstr, $this->getTimeout());
+ if($errno) {
+ $this->closed = true;
+ } else {
+ if($this->getUseXml()) {
+ $this->xmlLayout = LoggerReflectionUtils::createObject('LoggerXmlLayout');
+ 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() {
+ fclose($this->sp);
+ $this->closed = true;
+ }
- /**
- * @return string
- */
- public function getHostname() {
- return $this->getRemoteHost();
- }
-
- /**
- * @return boolean
- */
- public function getLocationInfo() {
- return $this->locationInfo;
- }
-
- /**
- * @return boolean
- */
- public function getLog4jNamespace() {
- return $this->log4jNamespace;
- }
+ /**
+ * @return string
+ */
+ public function getHostname() {
+ return $this->getRemoteHost();
+ }
+
+ /**
+ * @return boolean
+ */
+ public function getLocationInfo() {
+ return $this->locationInfo;
+ }
+
+ /**
+ * @return boolean
+ */
+ public function getLog4jNamespace() {
+ return $this->log4jNamespace;
+ }
- /**
- * @return integer
- */
- public function getPort() {
- return $this->port;
- }
-
- public function getRemoteHost() {
- return $this->remoteHost;
- }
-
- /**
- * @return integer
- */
- public function getTimeout() {
- return $this->timeout;
- }
-
- /**
- * @var boolean
- */
- public function getUseXml() {
- return $this->useXml;
- }
-
- public function reset() {
- $this->close();
- parent::reset();
- }
+ /**
+ * @return integer
+ */
+ public function getPort() {
+ return $this->port;
+ }
+
+ public function getRemoteHost() {
+ return $this->remoteHost;
+ }
+
+ /**
+ * @return integer
+ */
+ public function getTimeout() {
+ return $this->timeout;
+ }
+
+ /**
+ * @var boolean
+ */
+ public function getUseXml() {
+ return $this->useXml;
+ }
+
+ public function reset() {
+ $this->close();
+ parent::reset();
+ }
- /**
- * @param mixed
- */
- public function setLocationInfo($flag) {
- $this->locationInfo = LoggerOptionConverter::toBoolean($flag, $this->getLocationInfo());
- }
+ /**
+ * @param mixed
+ */
+ public function setLocationInfo($flag) {
+ $this->locationInfo = LoggerOptionConverter::toBoolean($flag, $this->getLocationInfo());
+ }
- /**
- * @param mixed
- */
- public function setLog4jNamespace($flag) {
- $this->log4jNamespace = LoggerOptionConverter::toBoolean($flag, $this->getLog4jNamespace());
- }
-
- /**
- * @param integer
- */
- public function setPort($port) {
- $port = LoggerOptionConverter::toInt($port, 0);
- if ($port > 0 and $port < 65535)
- $this->port = $port;
- }
-
- /**
- * @param string
- */
- public function setRemoteHost($hostname) {
- $this->remoteHost = $hostname;
- }
-
- /**
- * @param integer
- */
- public function setTimeout($timeout) {
- $this->timeout = LoggerOptionConverter::toInt($timeout, $this->getTimeout());
- }
-
- /**
- * @param mixed
- */
- public function setUseXml($flag) {
- $this->useXml = LoggerOptionConverter::toBoolean($flag, $this->getUseXml());
- }
+ /**
+ * @param mixed
+ */
+ public function setLog4jNamespace($flag) {
+ $this->log4jNamespace = LoggerOptionConverter::toBoolean($flag, $this->getLog4jNamespace());
+ }
+
+ /**
+ * @param integer
+ */
+ public function setPort($port) {
+ $port = LoggerOptionConverter::toInt($port, 0);
+ if($port > 0 and $port < 65535) {
+ $this->port = $port;
+ }
+ }
+
+ /**
+ * @param string
+ */
+ public function setRemoteHost($hostname) {
+ $this->remoteHost = $hostname;
+ }
+
+ /**
+ * @param integer
+ */
+ public function setTimeout($timeout) {
+ $this->timeout = LoggerOptionConverter::toInt($timeout, $this->getTimeout());
+ }
+
+ /**
+ * @param mixed
+ */
+ public function setUseXml($flag) {
+ $this->useXml = LoggerOptionConverter::toBoolean($flag, $this->getUseXml());
+ }
- /**
- * @param LoggerLoggingEvent
- */
- public function append($event) {
- if ($this->sp) {
-
- LoggerLog::debug("LoggerAppenderSocket::append()");
-
- if ($this->getLocationInfo())
- $event->getLocationInformation();
-
- if (!$this->getUseXml()) {
- $sEvent = serialize($event);
- fwrite($this->sp, $sEvent, strlen($sEvent));
- } else {
- fwrite($this->sp, $this->xmlLayout->format($event));
- }
+ /**
+ * @param LoggerLoggingEvent
+ */
+ public function append($event) {
+ if($this->sp) {
+ if($this->getLocationInfo()) {
+ $event->getLocationInformation();
+ }
+
+ if(!$this->getUseXml()) {
+ $sEvent = serialize($event);
+ fwrite($this->sp, $sEvent, strlen($sEvent));
+ } else {
+ fwrite($this->sp, $this->xmlLayout->format($event));
+ }
- // not sure about it...
- fflush($this->sp);
- }
- }
+ // not sure about it...
+ fflush($this->sp);
+ }
+ }
}
-
diff --git a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderSyslog.php b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderSyslog.php
index 04d68eb..2513716 100644
--- a/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderSyslog.php
+++ b/thirdparty/apache-log4php/src/main/php/appenders/LoggerAppenderSyslog.php
@@ -1,13 +1,13 @@
WARN > level >= INFO to LOG_INFO
* - INFO > level >= DEBUG to LOG_DEBUG
*
- * @author VxR
- * @version $Revision: 635069 $
+ * @version $Revision: 771547 $
* @package log4php
* @subpackage appenders
*/
-class LoggerAppenderSyslog extends LoggerAppenderSkeleton {
-
- /**
- * The ident string is added to each message. Typically the name of your application.
- *
- * @var string Ident for your application
- */
- private $_ident = "Log4PHP Syslog-Event";
+class LoggerAppenderSyslog extends LoggerAppender {
+
+ /**
+ * The ident string is added to each message. Typically the name of your application.
+ *
+ * @var string Ident for your application
+ */
+ private $_ident = "Log4PHP Syslog-Event";
+
+ /**
+ * The priority parameter value indicates the level of importance of the message.
+ * It is passed on to the Syslog daemon.
+ *
+ * @var int Syslog priority
+ */
+ private $_priority;
+
+ /**
+ * The option used when generating a log message.
+ * It is passed on to the Syslog daemon.
+ *
+ * @var int Syslog priority
+ */
+ private $_option;
+
+ /**
+ * The facility value indicates the source of the message.
+ * It is passed on to the Syslog daemon.
+ *
+ * @var const int Syslog facility
+ */
+ private $_facility;
+
+ /**
+ * If it is necessary to define logging priority in the .properties-file,
+ * set this variable to "true".
+ *
+ * @var const int value indicating whether the priority of the message is defined in the .properties-file
+ * (or properties-array)
+ */
+ private $_overridePriority;
+
+ public function __construct($name) {
+ parent::__construct($name);
+ $this->requiresLayout = true;
+ }
- /**
- * The priority parameter value indicates the level of importance of the message.
- * It is passed on to the Syslog daemon.
- *
- * @var int Syslog priority
- */
- private $_priority;
-
- /**
- * The option used when generating a log message.
- * It is passed on to the Syslog daemon.
- *
- * @var int Syslog priority
- */
- private $_option;
-
- /**
- * The facility value indicates the source of the message.
- * It is passed on to the Syslog daemon.
- *
- * @var const int Syslog facility
- */
- private $_facility;
-
- /**
- * If it is necessary to define logging priority in the .properties-file,
- * set this variable to "true".
- *
- * @var const int value indicating whether the priority of the message is defined in the .properties-file
- * (or properties-array)
- */
- private $_overridePriority;
+ /**
+ * Set the ident of the syslog message.
+ *
+ * @param string Ident
+ */
+ public function setIdent($ident) {
+ $this->_ident = $ident;
+ }
- /**
- * Set the ident of the syslog message.
- *
- * @param string Ident
- */
- public function setIdent($ident) {
- $this->_ident = $ident;
- }
+ /**
+ * Set the priority value for the syslog message.
+ *
+ * @param const int Priority
+ */
+ public function setPriority($priority) {
+ $this->_priority = $priority;
+ }
+
+
+ /**
+ * Set the facility value for the syslog message.
+ *
+ * @param const int Facility
+ */
+ public function setFacility($facility) {
+ $this->_facility = $facility;
+ }
+
+ /**
+ * If the priority of the message to be sent can be defined by a value in the properties-file,
+ * set parameter value to "true".
+ *
+ * @param bool Override priority
+ */
+ public function setOverridePriority($overridePriority) {
+ $this->_overridePriority = $overridePriority;
+ }
+
+ /**
+ * Set the option value for the syslog message.
+ * This value is used as a parameter for php openlog()
+ * and passed on to the syslog daemon.
+ *
+ * @param string $option
+ */
+ public function setOption($option) {
+ $this->_option = $option;
+ }
+
+ public function activateOptions() {
+ define_syslog_variables();
+ $this->closed = false;
+ }
- /**
- * Set the priority value for the syslog message.
- *
- * @param const int Priority
- */
- public function setPriority($priority) {
- $this->_priority = $priority;
- }
-
-
- /**
- * Set the facility value for the syslog message.
- *
- * @param const int Facility
- */
- public function setFacility($facility) {
- $this->_facility = $facility;
- }
-
- /**
- * If the priority of the message to be sent can be defined by a value in the properties-file,
- * set parameter value to "true".
- *
- * @param bool Override priority
- */
- public function setOverridePriority($overridePriority) {
- $this->_overridePriority = $overridePriority;
- }
-
- /**
- * Set the option value for the syslog message.
- * This value is used as a parameter for php openlog()
- * and passed on to the syslog daemon.
- *
- * @param string $option
- */
- public function setOption($option) {
- $this->_option = $option;
- }
-
-
- public function activateOptions() {
- define_syslog_variables();
- $this->closed = false;
- }
+ public function close() {
+ closelog();
+ $this->closed = true;
+ }
- public function close() {
- closelog();
- $this->closed = true;
- }
+ public function append($event) {
- public function append($event) {
+ if($this->_option == NULL){
+ $this->_option = LOG_PID | LOG_CONS;
+ }
+
+ // Attach the process ID to the message, use the facility defined in the .properties-file
+ openlog($this->_ident, $this->_option, $this->_facility);
+
+ $level = $event->getLevel();
+ if($this->layout === null) {
+ $message = $event->getRenderedMessage();
+ } else {
+ $message = $this->layout->format($event);
+ }
- if($this->_option == NULL){
- $this->_option = LOG_PID | LOG_CONS;
- }
-
- // Attach the process ID to the message, use the facility defined in the .properties-file
- openlog($this->_ident, $this->_option, $this->_facility);
-
- $level = $event->getLevel();
- $message = $event->getRenderedMessage();
-
- // If the priority of a syslog message can be overridden by a value defined in the properties-file,
- // use that value, else use the one that is defined in the code.
- if($this->_overridePriority){
- syslog($this->_priority, $message);
- } else {
- if ($level->isGreaterOrEqual(LoggerLevel::getLevelFatal())) {
- syslog(LOG_ALERT, $message);
- } elseif ($level->isGreaterOrEqual(LoggerLevel::getLevelError())) {
- syslog(LOG_ERR, $message);
- } elseif ($level->isGreaterOrEqual(LoggerLevel::getLevelWarn())) {
- syslog(LOG_WARNING, $message);
- } elseif ($level->isGreaterOrEqual(LoggerLevel::getLevelInfo())) {
- syslog(LOG_INFO, $message);
- } elseif ($level->isGreaterOrEqual(LoggerLevel::getLevelDebug())) {
- syslog(LOG_DEBUG, $message);
- }
- }
- closelog();
- }
+ // If the priority of a syslog message can be overridden by a value defined in the properties-file,
+ // use that value, else use the one that is defined in the code.
+ if($this->_overridePriority){
+ syslog($this->_priority, $message);
+ } else {
+ if($level->isGreaterOrEqual(LoggerLevel::getLevelFatal())) {
+ syslog(LOG_ALERT, $message);
+ } else if ($level->isGreaterOrEqual(LoggerLevel::getLevelError())) {
+ syslog(LOG_ERR, $message);
+ } else if ($level->isGreaterOrEqual(LoggerLevel::getLevelWarn())) {
+ syslog(LOG_WARNING, $message);
+ } else if ($level->isGreaterOrEqual(LoggerLevel::getLevelInfo())) {
+ syslog(LOG_INFO, $message);
+ } else if ($level->isGreaterOrEqual(LoggerLevel::getLevelDebug())) {
+ syslog(LOG_DEBUG, $message);
+ }
+ }
+ closelog();
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/LoggerBasicConfigurator.php b/thirdparty/apache-log4php/src/main/php/configurators/LoggerConfiguratorBasic.php
index 359591f..f12e542 100644
--- a/thirdparty/apache-log4php/src/main/php/LoggerBasicConfigurator.php
+++ b/thirdparty/apache-log4php/src/main/php/configurators/LoggerConfiguratorBasic.php
@@ -1,13 +1,13 @@
For file based configuration see {@link LoggerPropertyConfigurator}.
- * For XML based configuration see {@link LoggerDOMConfigurator}.
+ *
For file based configuration see {@link LoggerConfiguratorIni}.
+ *
For XML based configuration see {@link LoggerConfiguratorXml}.
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 771742 $
* @package log4php
*/
-class LoggerBasicConfigurator implements LoggerConfigurator {
+class LoggerConfiguratorBasic implements LoggerConfigurator {
- /**
- * Add a {@link LoggerAppenderConsole} that uses
- * the {@link LoggerLayoutTTCC} to the root category.
- *
- * @param string $url not used here
- */
- public static function configure($url = null)
- {
- $root = LoggerManager::getRootLogger();
- $appender = new LoggerAppenderConsole('A1');
- $appender->setLayout( new LoggerLayoutTTCC() );
- $root->addAppender($appender);
- }
+ /**
+ * Add a {@link LoggerAppenderConsole} that uses
+ * the {@link LoggerLayoutTTCC} to the root category.
+ *
+ * @param string $url not used here
+ */
+ public static function configure($url = null) {
+ $root = LoggerManager::getRootLogger();
+ $appender = new LoggerAppenderConsole('A1');
+ $appender->setLayout( new LoggerLayoutTTCC() );
+ $root->addAppender($appender);
+ }
- /**
- * Reset the default hierarchy to its default.
- * It is equivalent to
- *
- * LoggerManager::resetConfiguration();
- *
- *
- * @see LoggerHierarchy::resetConfiguration()
- * @static
- */
- public static function resetConfiguration()
- {
- LoggerManager::resetConfiguration();
- }
+ /**
+ * Reset the default hierarchy to its default.
+ * It is equivalent to
+ *
+ * LoggerManager::resetConfiguration();
+ *
+ *
+ * @see LoggerHierarchy::resetConfiguration()
+ * @static
+ */
+ public static function resetConfiguration() {
+ LoggerManager::resetConfiguration();
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/LoggerPropertyConfigurator.php b/thirdparty/apache-log4php/src/main/php/configurators/LoggerConfiguratorIni.php
index 011f23b..440e52f 100644
--- a/thirdparty/apache-log4php/src/main/php/LoggerPropertyConfigurator.php
+++ b/thirdparty/apache-log4php/src/main/php/configurators/LoggerConfiguratorIni.php
@@ -1,13 +1,13 @@
It is sometimes useful to see how log4php is reading configuration
* files. You can enable log4php internal logging by defining the
* log4php.debug variable.
*
- * The LoggerPropertyConfigurator does not handle the
- * advanced configuration features supported by the {@link LoggerDOMConfigurator}
- * such as support for {@link LoggerFilter},
- custom {@link LoggerErrorHandlers}, nested appenders such as the
- {@link Logger AsyncAppender},
+ *
The LoggerConfiguratorIni does not handle the
+ * advanced configuration features supported by the {@link LoggerConfiguratorXml}
+ * such as support for {@link LoggerFilter},
+ custom {@link LoggerErrorHandlers}, nested appenders such as the
+ {@link Logger AsyncAppender},
* etc.
- *
+ *
*
All option values admit variable substitution. The
* syntax of variable substitution is similar to that of Unix
* shells. The string between an opening "${" and
@@ -87,7 +71,7 @@ define('LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_INTERNAL_ROOT_NAME', "root");
* /home/xyz. See {@link LoggerOptionConverter::getSystemProperty()}
* for details.
*
- * Please note that boolean values should be quoted otherwise the default
+ *
Please note that boolean values should be quoted otherwise the default
* value will be chosen. E.g.:
*
* // Does *not* work. Will always result in default value
@@ -98,576 +82,489 @@ define('LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_INTERNAL_ROOT_NAME', "root");
*
*
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 784933 $
* @package log4php
- * @since 0.5
+ * @subpackage configurators
+ * @since 0.5
*/
-class LoggerPropertyConfigurator implements LoggerConfigurator {
-
- /**
- * @var LoggerFactory
- */
- var $loggerFactory = null;
-
- /**
- * Constructor
- */
- public function LoggerPropertyConfigurator() {
- $this->loggerFactory = new LoggerDefaultCategoryFactory();
- }
-
- /**
- * Configure the default repository using the resource pointed by url.
- * Url is any valid resurce as defined in {@link PHP_MANUAL#file} function.
- * Note that the resource will be search with use_include_path parameter
- * set to "1".
- *
- * @param string $url
- * @return boolean configuration result
- * @static
- */
- public static function configure($url = '') {
- $configurator = new LoggerPropertyConfigurator();
- $repository =& LoggerManager::getLoggerRepository();
- return $configurator->doConfigure($url, $repository);
- }
-
- /**
- * Read configuration from a file.
- *
- * The function {@link PHP_MANUAL#parse_ini_file} is used to read the
- * file.
- *
- * The existing configuration is not cleared nor reset.
- * If you require a different behavior, then call
- * {@link LoggerManager::resetConfiguration()}
- * method before calling {@link doConfigure()}.
- *
- * The configuration file consists of statements in the format
- * key=value. The syntax of different configuration
- * elements are discussed below.
- *
- *
Repository-wide threshold
- *
- * The repository-wide threshold filters logging requests by level
- * regardless of logger. The syntax is:
- *
- *
- * log4php.threshold=[level]
- *
- *
- * The level value can consist of the string values OFF, FATAL,
- * ERROR, WARN, INFO, DEBUG, ALL or a custom level value. A
- * custom level value can be specified in the form
- * level#classname. By default the repository-wide threshold is set
- * to the lowest possible value, namely the level ALL.
- *
- *
- *
- * Appender configuration
- *
- * Appender configuration syntax is:
- *
- * ; For appender named appenderName, set its class.
- * ; Note: The appender name can contain dots.
- * log4php.appender.appenderName=name_of_appender_class
- *
- * ; Set appender specific options.
- *
- * log4php.appender.appenderName.option1=value1
- * log4php.appender.appenderName.optionN=valueN
- *
- *
- * For each named appender you can configure its {@link LoggerLayout}. The
- * syntax for configuring an appender's layout is:
- *
- * log4php.appender.appenderName.layout=name_of_layout_class
- * log4php.appender.appenderName.layout.option1=value1
- * ....
- * log4php.appender.appenderName.layout.optionN=valueN
- *
- *
- * Configuring loggers
- *
- * The syntax for configuring the root logger is:
- *
- * log4php.rootLogger=[level], appenderName, appenderName, ...
- *
- *
- * This syntax means that an optional level can be
- * supplied followed by appender names separated by commas.
- *
- *
The level value can consist of the string values OFF, FATAL,
- * ERROR, WARN, INFO, DEBUG, ALL or a custom level value. A
- * custom level value can be specified in the form
- *
- * level#classname
- *
- * If a level value is specified, then the root level is set
- * to the corresponding level. If no level value is specified,
- * then the root level remains untouched.
- *
- *
The root logger can be assigned multiple appenders.
- *
- *
Each appenderName (separated by commas) will be added to
- * the root logger. The named appender is defined using the
- * appender syntax defined above.
- *
- *
For non-root categories the syntax is almost the same:
- *
- * log4php.logger.logger_name=[level|INHERITED|NULL], appenderName, appenderName, ...
- *
- *
- * The meaning of the optional level value is discussed above
- * in relation to the root logger. In addition however, the value
- * INHERITED can be specified meaning that the named logger should
- * inherit its level from the logger hierarchy.
- *
- * If no level value is supplied, then the level of the
- * named logger remains untouched.
- *
- * By default categories inherit their level from the
- * hierarchy. However, if you set the level of a logger and later
- * decide that that logger should inherit its level, then you should
- * specify INHERITED as the value for the level value. NULL is a
- * synonym for INHERITED.
- *
- * Similar to the root logger syntax, each appenderName
- * (separated by commas) will be attached to the named logger.
- *
- * See the appender additivity rule in the user manual for
- * the meaning of the additivity flag.
- *
- *
ObjectRenderers
- *
- * You can customize the way message objects of a given type are
- * converted to String before being logged. This is done by
- * specifying a {@link LoggerObjectRenderer}
- * for the object type would like to customize.
- *
- * The syntax is:
- *
- *
- * log4php.renderer.name_of_rendered_class=name_of_rendering.class
- *
- *
- * As in,
- *
- * log4php.renderer.myFruit=myFruitRenderer
- *
- *
- * Logger Factories
- *
- * The usage of custom logger factories is discouraged and no longer
- * documented.
- *
- * Example
- *
- * An example configuration is given below. Other configuration
- * file examples are given in the tests folder.
- *
- *
- * ; Set options for appender named "A1".
- * ; Appender "A1" will be a LoggerAppenderSyslog
- * log4php.appender.A1=LoggerAppenderSyslog
- *
- * ; The syslog daemon resides on www.abc.net
- * log4php.appender.A1.ident=log4php-test
- *
- * ; A1's layout is a LoggerPatternLayout, using the conversion pattern
- * ; %r %-5p %c{2} %M.%L %x - %m%n. Thus, the log output will
- * ; include the relative time since the start of the application in
- * ; milliseconds, followed by the level of the log request,
- * ; followed by the two rightmost components of the logger name,
- * ; followed by the callers method name, followed by the line number,
- * ; the nested disgnostic context and finally the message itself.
- * ; Refer to the documentation of LoggerPatternLayout} for further information
- * ; on the syntax of the ConversionPattern key.
- * log4php.appender.A1.layout=LoggerPatternLayout
- * log4php.appender.A1.layout.ConversionPattern="%-4r %-5p %c{2} %M.%L %x - %m%n"
- *
- * ; Set options for appender named "A2"
- * ; A2 should be a LoggerAppenderRollingFile, with maximum file size of 10 MB
- * ; using at most one backup file. A2's layout is TTCC, using the
- * ; ISO8061 date format with context printing enabled.
- * log4php.appender.A2=LoggerAppenderRollingFile
- * log4php.appender.A2.MaxFileSize=10MB
- * log4php.appender.A2.MaxBackupIndex=1
- * log4php.appender.A2.layout=LoggerLayoutTTCC
- * log4php.appender.A2.layout.ContextPrinting="true"
- * log4php.appender.A2.layout.DateFormat="%c"
- *
- * ; Root logger set to DEBUG using the A2 appender defined above.
- * log4php.rootLogger=DEBUG, A2
- *
- * ; Logger definitions:
- * ; The SECURITY logger inherits is level from root. However, it's output
- * ; will go to A1 appender defined above. It's additivity is non-cumulative.
- * log4php.logger.SECURITY=INHERIT, A1
- * log4php.additivity.SECURITY=false
- *
- * ; Only warnings or above will be logged for the logger "SECURITY.access".
- * ; Output will go to A1.
- * log4php.logger.SECURITY.access=WARN
- *
- *
- * ; The logger "class.of.the.day" inherits its level from the
- * ; logger hierarchy. Output will go to the appender's of the root
- * ; logger, A2 in this case.
- * log4php.logger.class.of.the.day=INHERIT
- *
- *
- * Refer to the setOption method in each Appender and
- * Layout for class specific options.
- *
- * Use the ";" character at the
- * beginning of a line for comments.
- *
- * @param string $url The name of the configuration file where the
- * configuration information is stored.
- * @param LoggerHierarchy &$repository the repository to apply the configuration
- */
- function doConfigure($url, &$repository)
- {
- $properties = @parse_ini_file($url);
- if ($properties === false) {
- LoggerLog::warn("LoggerPropertyConfigurator::doConfigure() cannot load '$url' configuration.");
- return false;
- }
- return $this->doConfigureProperties($properties, $repository);
- }
-
-
- /**
- * Read configuration options from properties.
- *
- * @see doConfigure().
- * @param array $properties
- * @param LoggerHierarchy &$hierarchy
- */
- function doConfigureProperties($properties, &$hierarchy)
- {
- $value = null;
-
- if (isset($properties[LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_LOGGER_DEBUG_KEY]))
- {
- $value = @$properties[LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_LOGGER_DEBUG_KEY];
- }
-
- if (!empty($value)) {
- LoggerLog::internalDebugging(LoggerOptionConverter::toBoolean($value, LoggerLog::internalDebugging()));
- }
-
- $thresholdStr = '';
- if (isset($properties[LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_THRESHOLD_PREFIX]))
- {
- $thresholdStr = @$properties[LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_THRESHOLD_PREFIX];
- }
- $hierarchy->setThreshold(LoggerOptionConverter::toLevel($thresholdStr, LoggerLevel::getLevelAll()));
-
- $this->configureRootCategory($properties, $hierarchy);
- $this->configureLoggerFactory($properties);
- $this->parseCatsAndRenderers($properties, $hierarchy);
-
- LoggerLog::debug("LoggerPropertyConfigurator::doConfigureProperties() Finished configuring.");
-
- return true;
- }
-
- // --------------------------------------------------------------------------
- // Internal stuff
- // --------------------------------------------------------------------------
-
- /**
- * Check the provided Properties object for a
- * {@link LoggerFactory} entry specified by
- * {@link LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_LOGGER_FACTORY_KEY}.
- *
- * If such an entry exists, an attempt is made to create an instance using
- * the default constructor.
- * This instance is used for subsequent Category creations
- * within this configurator.
- *
- * @see parseCatsAndRenderers()
- * @param array $props array of properties
- */
- function configureLoggerFactory($props)
- {
- $factoryFqcn = null;
- if (isset($props[LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_LOGGER_FACTORY_KEY]))
- {
- $factoryFqcn = @$props[LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_LOGGER_FACTORY_KEY];
- }
- if(!empty($factoryFqcn)) {
- $factoryClassName = basename($factoryFqcn);
- LoggerLog::debug(
- "LoggerPropertyConfigurator::configureLoggerFactory() Trying to load factory [" .
- $factoryClassName .
- "]."
- );
-
- if (!class_exists($factoryClassName))
- @include_once("{$factoryFqcn}.php");
- if (class_exists($factoryClassName)) {
- $loggerFactory = new $factoryClassName();
- } else {
- LoggerLog::debug(
- "LoggerPropertyConfigurator::configureLoggerFactory() Unable to load factory [" .
- $factoryClassName .
- "]. Using default."
- );
- $loggerFactory = $this->loggerFactory;
- }
-
- LoggerLog::debug(
- "LoggerPropertyConfigurator::configureLoggerFactory() ".
- "Setting properties for category factory [" . get_class($loggerFactory) . "]."
- );
-
- LoggerPropertySetter::setPropertiesByObject($loggerFactory, $props, LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_FACTORY_PREFIX . ".");
- }
- }
-
- /**
- * @param array $props array of properties
- * @param LoggerHierarchy &$hierarchy
- */
- function configureRootCategory($props, &$hierarchy)
- {
- $effectivePrefix = LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_ROOT_LOGGER_PREFIX;
- $value = @$props[LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_ROOT_LOGGER_PREFIX];
-
- if(empty($value)) {
- $value = @$props[LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_ROOT_CATEGORY_PREFIX];
- $effectivePrefix = LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_ROOT_CATEGORY_PREFIX;
- }
-
- if (empty($value)) {
- LoggerLog::debug(
- "LoggerPropertyConfigurator::configureRootCategory() ".
- "Could not find root logger information. Is this OK?"
- );
- } else {
- $root = $hierarchy->getRootLogger();
- // synchronized(root) {
- $this->parseCategory(
- $props,
- $root,
- $effectivePrefix,
- LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_INTERNAL_ROOT_NAME,
- $value
- );
- // }
- }
- }
-
- /**
- * Parse non-root elements, such non-root categories and renderers.
- *
- * @param array $props array of properties
- * @param LoggerHierarchy &$hierarchy
- */
- function parseCatsAndRenderers($props, &$hierarchy)
- {
- while(list($key,$value) = each($props)) {
- if( strpos($key, LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_CATEGORY_PREFIX) === 0 or
- strpos($key, LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_LOGGER_PREFIX) === 0) {
- if(strpos($key, LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_CATEGORY_PREFIX) === 0) {
- $loggerName = substr($key, strlen(LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_CATEGORY_PREFIX));
- } elseif (strpos($key, LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_LOGGER_PREFIX) === 0) {
- $loggerName = substr($key, strlen(LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_LOGGER_PREFIX));
- }
- $logger =& $hierarchy->getLogger($loggerName, $this->loggerFactory);
- // synchronized(logger) {
- $this->parseCategory($props, $logger, $key, $loggerName, $value);
- $this->parseAdditivityForLogger($props, $logger, $loggerName);
- // }
- } elseif (strpos($key, LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_RENDERER_PREFIX) === 0) {
- $renderedClass = substr($key, strlen(LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_RENDERER_PREFIX));
- $renderingClass = $value;
- if (method_exists($hierarchy, 'addrenderer')) { // ?
- LoggerRendererMap::addRenderer($hierarchy, $renderedClass, $renderingClass);
- }
- }
- }
- }
-
- /**
- * Parse the additivity option for a non-root category.
- *
- * @param array $props array of properties
- * @param Logger &$cat
- * @param string $loggerName
- */
- function parseAdditivityForLogger($props, &$cat, $loggerName)
- {
- $value = LoggerOptionConverter::findAndSubst(
- LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_ADDITIVITY_PREFIX . $loggerName,
- $props
- );
- LoggerLog::debug(
- "LoggerPropertyConfigurator::parseAdditivityForLogger() ".
- "Handling " . LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_ADDITIVITY_PREFIX . $loggerName . "=[{$value}]"
- );
- // touch additivity only if necessary
- if(!empty($value)) {
- $additivity = LoggerOptionConverter::toBoolean($value, true);
- LoggerLog::debug(
- "LoggerPropertyConfigurator::parseAdditivityForLogger() ".
- "Setting additivity for [{$loggerName}] to [{$additivity}]"
- );
- $cat->setAdditivity($additivity);
- }
- }
-
- /**
- * This method must work for the root category as well.
- *
- * @param array $props array of properties
- * @param Logger &$logger
- * @param string $optionKey
- * @param string $loggerName
- * @param string $value
- * @return Logger
- */
- public function parseCategory($props, &$logger, $optionKey, $loggerName, $value) {
- LoggerLog::debug(
- "LoggerPropertyConfigurator::parseCategory() ".
- "Parsing for [{$loggerName}] with value=[{$value}]."
- );
-
- // We must skip over ',' but not white space
- $st = explode(',', $value);
-
- // If value is not in the form ", appender.." or "", then we should set
- // the level of the loggeregory.
-
- if(!(empty($value) || @$value[0] == ',')) {
- // just to be on the safe side...
- if(sizeof($st) == 0)
- return;
-
- $levelStr = current($st);
- LoggerLog::debug(
- "LoggerPropertyConfigurator::parseCategory() ".
- "Level token is [$levelStr]."
- );
-
- // If the level value is inherited, set category level value to
- // null. We also check that the user has not specified inherited for the
- // root category.
- if('INHERITED' == strtoupper($levelStr) || 'NULL' == strtoupper($levelStr)) {
- if ($loggerName == LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_INTERNAL_ROOT_NAME) {
- LoggerLog::warn(
- "LoggerPropertyConfigurator::parseCategory() ".
- "The root logger cannot be set to null."
- );
- } else {
- $logger->setLevel(null);
- }
- } else {
- $logger->setLevel(LoggerOptionConverter::toLevel($levelStr, LoggerLevel::getLevelDebug()));
- }
- }
-
- // Begin by removing all existing appenders.
- $logger->removeAllAppenders();
- while($appenderName = next($st)) {
- $appenderName = trim($appenderName);
- if(empty($appenderName))
- continue;
- LoggerLog::debug(
- "LoggerPropertyConfigurator::parseCategory() ".
- "Parsing appender named [{$appenderName}]."
- );
- $appender = $this->parseAppender($props, $appenderName);
- if($appender !== null) {
- $logger->addAppender($appender);
- }
- }
- }
-
- /**
- * @param array $props array of properties
- * @param string $appenderName
- * @return LoggerAppender
- */
- function parseAppender($props, $appenderName)
- {
- $appender = LoggerAppender::singleton($appenderName);
- if($appender !== null) {
- LoggerLog::debug(
- "LoggerPropertyConfigurator::parseAppender() ".
- "Appender [{$appenderName}] was already parsed."
- );
- return $appender;
- }
- // Appender was not previously initialized.
- $prefix = LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_APPENDER_PREFIX . $appenderName;
- $layoutPrefix = $prefix . ".layout";
- $appenderClass = @$props[$prefix];
- if (!empty($appenderClass)) {
- $appender = LoggerAppender::singleton($appenderName, $appenderClass);
- if($appender === null) {
- LoggerLog::warn(
- "LoggerPropertyConfigurator::parseAppender() ".
- "Could not instantiate appender named [$appenderName]."
- );
- return null;
- }
- } else {
- LoggerLog::warn(
- "LoggerPropertyConfigurator::parseAppender() ".
- "Could not instantiate appender named [$appenderName] with null className."
- );
- return null;
- }
-
- $appender->setName($appenderName);
- if( $appender->requiresLayout() ) {
- LoggerLog::debug(
- "LoggerPropertyConfigurator::parseAppender() ".
- "Parsing layout section for [$appenderName]."
- );
- $layoutClass = @$props[$layoutPrefix];
- $layoutClass = LoggerOptionConverter::substVars($layoutClass, $props);
- if (empty($layoutClass)) {
- LoggerLog::warn(
- "LoggerPropertyConfigurator::parseAppender() ".
- "layout class is empty in '$layoutPrefix'. Using Simple layout"
- );
- $layout = LoggerLayout::factory('LoggerLayoutSimple');
- } else {
- $layout = LoggerLayout::factory($layoutClass);
-
- if($layout === null) {
- LoggerLog::warn(
- "LoggerPropertyConfigurator::parseAppender() ".
- "cannot create layout '$layoutClass'. Using Simple layout"
- );
- $layout = LoggerLayout::factory('LoggerLayoutSimple');
- }
- }
-
- LoggerLog::debug(
- "LoggerPropertyConfigurator::parseAppender() ".
- "Parsing layout options for [$appenderName]."
- );
- LoggerPropertySetter::setPropertiesByObject($layout, $props, $layoutPrefix . ".");
- LoggerLog::debug(
- "LoggerPropertyConfigurator::parseAppender() ".
- "End Parsing layout options for [$appenderName]."
- );
- $appender->setLayout($layout);
-
- }
- LoggerPropertySetter::setPropertiesByObject($appender, $props, $prefix . ".");
- LoggerLog::debug(
- "LoggerPropertyConfigurator::parseAppender() ".
- "Parsed [{$appenderName}] options."
- );
- return $appender;
- }
+class LoggerConfiguratorIni implements LoggerConfigurator {
+
+ /**
+ * @var LoggerFactory
+ */
+ var $loggerFactory = null;
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+ $this->loggerFactory = new LoggerDefaultCategoryFactory();
+ }
+
+ /**
+ * Configure the default repository using the resource pointed by url.
+ * Url is any valid resurce as defined in {@link PHP_MANUAL#file} function.
+ * Note that the resource will be search with use_include_path parameter
+ * set to "1".
+ *
+ * @param string $url
+ * @return boolean configuration result
+ * @static
+ */
+ public static function configure($url = '') {
+ $configurator = new LoggerConfiguratorIni();
+ $repository = LoggerManager::getLoggerRepository();
+ return $configurator->doConfigure($url, $repository);
+ }
+
+ /**
+ * Read configuration from a file.
+ *
+ * The function {@link PHP_MANUAL#parse_ini_file} is used to read the
+ * file.
+ *
+ * The existing configuration is not cleared nor reset.
+ * If you require a different behavior, then call
+ * {@link LoggerManager::resetConfiguration()}
+ * method before calling {@link doConfigure()}.
+ *
+ * The configuration file consists of statements in the format
+ * key=value. The syntax of different configuration
+ * elements are discussed below.
+ *
+ *
Repository-wide threshold
+ *
+ * The repository-wide threshold filters logging requests by level
+ * regardless of logger. The syntax is:
+ *
+ *
+ * log4php.threshold=[level]
+ *
+ *
+ * The level value can consist of the string values OFF, FATAL,
+ * ERROR, WARN, INFO, DEBUG, ALL or a custom level value. A
+ * custom level value can be specified in the form
+ * level#classname. By default the repository-wide threshold is set
+ * to the lowest possible value, namely the level ALL.
+ *
+ *
+ *
+ * Appender configuration
+ *
+ * Appender configuration syntax is:
+ *
+ * ; For appender named appenderName, set its class.
+ * ; Note: The appender name can contain dots.
+ * log4php.appender.appenderName=name_of_appender_class
+ *
+ * ; Set appender specific options.
+ *
+ * log4php.appender.appenderName.option1=value1
+ * log4php.appender.appenderName.optionN=valueN
+ *
+ *
+ * For each named appender you can configure its {@link LoggerLayout}. The
+ * syntax for configuring an appender's layout is:
+ *
+ * log4php.appender.appenderName.layout=name_of_layout_class
+ * log4php.appender.appenderName.layout.option1=value1
+ * ....
+ * log4php.appender.appenderName.layout.optionN=valueN
+ *
+ *
+ * Configuring loggers
+ *
+ * The syntax for configuring the root logger is:
+ *
+ * log4php.rootLogger=[level], appenderName, appenderName, ...
+ *
+ *
+ * This syntax means that an optional level can be
+ * supplied followed by appender names separated by commas.
+ *
+ *
The level value can consist of the string values OFF, FATAL,
+ * ERROR, WARN, INFO, DEBUG, ALL or a custom level value. A
+ * custom level value can be specified in the form
+ *
+ * level#classname
+ *
+ * If a level value is specified, then the root level is set
+ * to the corresponding level. If no level value is specified,
+ * then the root level remains untouched.
+ *
+ *
The root logger can be assigned multiple appenders.
+ *
+ *
Each appenderName (separated by commas) will be added to
+ * the root logger. The named appender is defined using the
+ * appender syntax defined above.
+ *
+ *
For non-root categories the syntax is almost the same:
+ *
+ * log4php.logger.logger_name=[level|INHERITED|NULL], appenderName, appenderName, ...
+ *
+ *
+ * The meaning of the optional level value is discussed above
+ * in relation to the root logger. In addition however, the value
+ * INHERITED can be specified meaning that the named logger should
+ * inherit its level from the logger hierarchy.
+ *
+ * If no level value is supplied, then the level of the
+ * named logger remains untouched.
+ *
+ * By default categories inherit their level from the
+ * hierarchy. However, if you set the level of a logger and later
+ * decide that that logger should inherit its level, then you should
+ * specify INHERITED as the value for the level value. NULL is a
+ * synonym for INHERITED.
+ *
+ * Similar to the root logger syntax, each appenderName
+ * (separated by commas) will be attached to the named logger.
+ *
+ * See the appender additivity rule in the user manual for
+ * the meaning of the additivity flag.
+ *
+ *
ObjectRenderers
+ *
+ * You can customize the way message objects of a given type are
+ * converted to String before being logged. This is done by
+ * specifying a {@link LoggerRendererObject}
+ * for the object type would like to customize.
+ *
+ * The syntax is:
+ *
+ *
+ * log4php.renderer.name_of_rendered_class=name_of_rendering.class
+ *
+ *
+ * As in,
+ *
+ * log4php.renderer.myFruit=myFruitRenderer
+ *
+ *
+ * Logger Factories
+ *
+ * The usage of custom logger factories is discouraged and no longer
+ * documented.
+ *
+ * Example
+ *
+ * An example configuration is given below. Other configuration
+ * file examples are given in the tests folder.
+ *
+ *
+ * ; Set options for appender named "A1".
+ * ; Appender "A1" will be a LoggerAppenderSyslog
+ * log4php.appender.A1=LoggerAppenderSyslog
+ *
+ * ; The syslog daemon resides on www.abc.net
+ * log4php.appender.A1.ident=log4php-test
+ *
+ * ; A1's layout is a LoggerPatternLayout, using the conversion pattern
+ * ; %r %-5p %c{2} %M.%L %x - %m%n. Thus, the log output will
+ * ; include the relative time since the start of the application in
+ * ; milliseconds, followed by the level of the log request,
+ * ; followed by the two rightmost components of the logger name,
+ * ; followed by the callers method name, followed by the line number,
+ * ; the nested disgnostic context and finally the message itself.
+ * ; Refer to the documentation of LoggerPatternLayout} for further information
+ * ; on the syntax of the ConversionPattern key.
+ * log4php.appender.A1.layout=LoggerPatternLayout
+ * log4php.appender.A1.layout.ConversionPattern="%-4r %-5p %c{2} %M.%L %x - %m%n"
+ *
+ * ; Set options for appender named "A2"
+ * ; A2 should be a LoggerAppenderRollingFile, with maximum file size of 10 MB
+ * ; using at most one backup file. A2's layout is TTCC, using the
+ * ; ISO8061 date format with context printing enabled.
+ * log4php.appender.A2=LoggerAppenderRollingFile
+ * log4php.appender.A2.MaxFileSize=10MB
+ * log4php.appender.A2.MaxBackupIndex=1
+ * log4php.appender.A2.layout=LoggerLayoutTTCC
+ * log4php.appender.A2.layout.ContextPrinting="true"
+ * log4php.appender.A2.layout.DateFormat="%c"
+ *
+ * ; Root logger set to DEBUG using the A2 appender defined above.
+ * log4php.rootLogger=DEBUG, A2
+ *
+ * ; Logger definitions:
+ * ; The SECURITY logger inherits is level from root. However, it's output
+ * ; will go to A1 appender defined above. It's additivity is non-cumulative.
+ * log4php.logger.SECURITY=INHERIT, A1
+ * log4php.additivity.SECURITY=false
+ *
+ * ; Only warnings or above will be logged for the logger "SECURITY.access".
+ * ; Output will go to A1.
+ * log4php.logger.SECURITY.access=WARN
+ *
+ *
+ * ; The logger "class.of.the.day" inherits its level from the
+ * ; logger hierarchy. Output will go to the appender's of the root
+ * ; logger, A2 in this case.
+ * log4php.logger.class.of.the.day=INHERIT
+ *
+ *
+ * Refer to the setOption method in each Appender and
+ * Layout for class specific options.
+ *
+ * Use the ";" character at the
+ * beginning of a line for comments.
+ *
+ * @param string $url The name of the configuration file where the
+ * configuration information is stored.
+ * @param LoggerHierarchy &$repository the repository to apply the configuration
+ */
+ function doConfigure($url, &$repository) {
+ $properties = @parse_ini_file($url);
+ if($properties === false || count($properties) == 0) {
+ // as of PHP 5.2.7 parse_ini_file() returns FALSE instead of an empty array
+ return false;
+ }
+ return $this->doConfigureProperties($properties, $repository);
+ }
+
+
+ /**
+ * Read configuration options from properties.
+ *
+ * @see doConfigure().
+ * @param array $properties
+ * @param LoggerHierarchy &$hierarchy
+ */
+ function doConfigureProperties($properties, &$hierarchy) {
+ /*
+ $value = @$properties[LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_LOGGER_DEBUG_KEY];
+
+ if(!empty($value)) {
+ LoggerLog::internalDebugging(LoggerOptionConverter::toBoolean($value, LoggerLog::internalDebugging()));
+ }
+ */
+
+
+ $thresholdStr = @$properties[LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_THRESHOLD_PREFIX];
+ $hierarchy->setThreshold(LoggerOptionConverter::toLevel($thresholdStr, LoggerLevel::getLevelAll()));
+
+ $this->configureRootCategory($properties, $hierarchy);
+ $this->configureLoggerFactory($properties);
+ $this->parseCatsAndRenderers($properties, $hierarchy);
+
+ return true;
+ }
+
+ // --------------------------------------------------------------------------
+ // Internal stuff
+ // --------------------------------------------------------------------------
+
+ /**
+ * Check the provided Properties object for a
+ * {@link LoggerFactory} entry specified by
+ * {@link LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_LOGGER_FACTORY_KEY}.
+ *
+ * If such an entry exists, an attempt is made to create an instance using
+ * the default constructor.
+ * This instance is used for subsequent Category creations
+ * within this configurator.
+ *
+ * @see parseCatsAndRenderers()
+ * @param array $props array of properties
+ */
+ function configureLoggerFactory($props) {
+ $factoryFqcn = @$props[LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_LOGGER_FACTORY_KEY];
+ if(!empty($factoryFqcn)) {
+ $factoryClassName = basename($factoryFqcn);
+
+ if(class_exists($factoryClassName)) {
+ $loggerFactory = new $factoryClassName();
+ } else {
+ // LoggerPropertyConfigurator::configureLoggerFactory() Unable to load factory
+ $loggerFactory = $this->loggerFactory;
+ }
+
+ LoggerReflectionUtils::setPropertiesByObject($loggerFactory, $props, LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_FACTORY_PREFIX . ".");
+ }
+ }
+
+ /**
+ * @param array $props array of properties
+ * @param LoggerHierarchy &$hierarchy
+ */
+ function configureRootCategory($props, &$hierarchy) {
+ $effectivePrefix = LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_ROOT_LOGGER_PREFIX;
+ $value = @$props[LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_ROOT_LOGGER_PREFIX];
+
+ if(empty($value)) {
+ $value = @$props[LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_ROOT_CATEGORY_PREFIX];
+ $effectivePrefix = LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_ROOT_CATEGORY_PREFIX;
+ }
+
+ if(empty($value)) {
+// LoggerLog::debug(
+// "LoggerPropertyConfigurator::configureRootCategory() ".
+// "Could not find root logger information. Is this OK?"
+// );
+ } else {
+ $root = $hierarchy->getRootLogger();
+ // synchronized(root) {
+ $this->parseCategory(
+ $props,
+ $root,
+ $effectivePrefix,
+ LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_INTERNAL_ROOT_NAME,
+ $value
+ );
+ // }
+ }
+ }
+
+ /**
+ * Parse non-root elements, such non-root categories and renderers.
+ *
+ * @param array $props array of properties
+ * @param LoggerHierarchy &$hierarchy
+ */
+ function parseCatsAndRenderers($props, &$hierarchy) {
+ while(list($key,$value) = each($props)) {
+ if(strpos($key, LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_CATEGORY_PREFIX) === 0 or
+ strpos($key, LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_LOGGER_PREFIX) === 0) {
+ if(strpos($key, LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_CATEGORY_PREFIX) === 0) {
+ $loggerName = substr($key, strlen(LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_CATEGORY_PREFIX));
+ } else if(strpos($key, LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_LOGGER_PREFIX) === 0) {
+ $loggerName = substr($key, strlen(LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_LOGGER_PREFIX));
+ }
+
+ $logger = $hierarchy->getLogger($loggerName, $this->loggerFactory);
+ // synchronized(logger) {
+ $this->parseCategory($props, $logger, $key, $loggerName, $value);
+ $this->parseAdditivityForLogger($props, $logger, $loggerName);
+ // }
+ } else if(strpos($key, LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_RENDERER_PREFIX) === 0) {
+ $renderedClass = substr($key, strlen(LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_RENDERER_PREFIX));
+ $renderingClass = $value;
+ if(method_exists($hierarchy, 'addrenderer')) { // ?
+ LoggerRendererMap::addRenderer($hierarchy, $renderedClass, $renderingClass);
+ }
+ }
+ }
+ }
+
+ /**
+ * Parse the additivity option for a non-root category.
+ *
+ * @param array $props array of properties
+ * @param Logger &$cat
+ * @param string $loggerName
+ */
+ function parseAdditivityForLogger($props, &$cat, $loggerName) {
+ $value = LoggerOptionConverter::findAndSubst(
+ LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_ADDITIVITY_PREFIX . $loggerName,
+ $props
+ );
+
+ // touch additivity only if necessary
+ if(!empty($value)) {
+ $additivity = LoggerOptionConverter::toBoolean($value, true);
+ $cat->setAdditivity($additivity);
+ }
+ }
+
+ /**
+ * This method must work for the root category as well.
+ *
+ * @param array $props array of properties
+ * @param Logger &$logger
+ * @param string $optionKey
+ * @param string $loggerName
+ * @param string $value
+ * @return Logger
+ */
+ public function parseCategory($props, &$logger, $optionKey, $loggerName, $value) {
+
+ // We must skip over ',' but not white space
+ $st = explode(',', $value);
+
+ // If value is not in the form ", appender.." or "", then we should set
+ // the level of the loggeregory.
+
+ if(!(empty($value) || @$value[0] == ',')) {
+ // just to be on the safe side...
+ if(count($st) == 0) {
+ return;
+ }
+ $levelStr = current($st);
+
+ // If the level value is inherited, set category level value to
+ // null. We also check that the user has not specified inherited for the
+ // root category.
+ if('INHERITED' == strtoupper($levelStr) || 'NULL' == strtoupper($levelStr)) {
+ if($loggerName == LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_INTERNAL_ROOT_NAME) {
+// TODO: throw exception?
+// LoggerLog::warn(
+// "LoggerPropertyConfigurator::parseCategory() ".
+// "The root logger cannot be set to null."
+// );
+ } else {
+ $logger->setLevel(null);
+ }
+ } else {
+ $logger->setLevel(LoggerOptionConverter::toLevel($levelStr, LoggerLevel::getLevelDebug()));
+ }
+ }
+
+ // Begin by removing all existing appenders.
+ $logger->removeAllAppenders();
+ while($appenderName = next($st)) {
+ $appenderName = trim($appenderName);
+ if(empty($appenderName)) {
+ continue;
+ }
+
+ $appender =& $this->parseAppender($props, $appenderName);
+ if($appender !== null) {
+ $logger->addAppender($appender);
+ }
+ }
+ }
+
+ /**
+ * @param array $props array of properties
+ * @param string $appenderName
+ * @return LoggerAppender
+ */
+ function &parseAppender($props, $appenderName) {
+ $appender = LoggerAppender::singleton($appenderName);
+ if($appender !== null) {
+ return $appender;
+ }
+ // Appender was not previously initialized.
+ $prefix = LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_APPENDER_PREFIX . $appenderName;
+ $layoutPrefix = $prefix . ".layout";
+ $appenderClass = @$props[$prefix];
+ if(!empty($appenderClass)) {
+ $appender = LoggerAppender::singleton($appenderName, $appenderClass);
+ if($appender === null) {
+ return null;
+ }
+ } else {
+ return null;
+ }
+
+ $appender->setName($appenderName);
+ if($appender->requiresLayout() ) {
+ $layoutClass = @$props[$layoutPrefix];
+ $layoutClass = LoggerOptionConverter::substVars($layoutClass, $props);
+ if(empty($layoutClass)) {
+ $layout = LoggerReflectionUtils::createObject('LoggerLayoutSimple');
+ } else {
+ $layout = LoggerReflectionUtils::createObject($layoutClass);
+ if($layout === null) {
+ $layout = LoggerReflectionUtils::createObject('LoggerLayoutSimple');
+ }
+ }
+
+ LoggerReflectionUtils::setPropertiesByObject($layout, $props, $layoutPrefix . ".");
+ $appender->setLayout($layout);
+
+ }
+ LoggerReflectionUtils::setPropertiesByObject($appender, $props, $prefix . ".");
+ return $appender;
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/configurators/LoggerConfiguratorPhp.php b/thirdparty/apache-log4php/src/main/php/configurators/LoggerConfiguratorPhp.php
new file mode 100644
index 0000000..0701f90
--- /dev/null
+++ b/thirdparty/apache-log4php/src/main/php/configurators/LoggerConfiguratorPhp.php
@@ -0,0 +1,157 @@
+
+ * 'ALL',
+ * 'rootLogger' => array(
+ * 'level' => 'INFO',
+ * 'appenders' => array('default'),
+ * ),
+ * 'loggers' => array(
+ * 'dev' => array(
+ * 'level' => 'DEBUG',
+ * 'appenders' => array('default'),
+ * ),
+ * ),
+ * 'appenders' => array(
+ * 'default' => array(
+ * 'class' => 'LoggerAppenderEcho',
+ * 'layout' => array(
+ * 'class' => 'LoggerPatternLayout',
+ * 'conversionPattern' => "%d{Y-m-d H:i:s} %-5p %c %X{username}: %m in %F at %L%n",
+ * ),
+ * ),
+ * ),
+ * );
+ *
+ *
+ * @package log4php
+ * @subpackage configurators
+ * @since 2.0
+ */
+class LoggerConfiguratorPhp implements LoggerConfigurator {
+
+ public static function configure($url = '') {
+ $configurator = new self();
+ $hierarchy = LoggerManager::getLoggerRepository();
+ return $configurator->doConfigure($url, $hierarchy);
+ }
+
+ public function doConfigure($url, &$hierarchy) {
+
+ $config = require $url;
+
+ // set threshold
+ if(isset($config['threshold'])) {
+ $hierarchy->setThreshold(LoggerOptionConverter::toLevel($config['threshold'], LoggerLevel::getLevelAll()));
+ }
+
+ // parse and create appenders
+ if(isset($config['appenders'])) {
+
+ foreach($config['appenders'] as $appenderName => $appenderProperties) {
+
+ $appender = LoggerAppender::singleton($appenderName, $appenderProperties['class']);
+
+ if($appender->requiresLayout()) {
+
+ if(isset($appenderProperties['layout'])) {
+
+ if(isset($appenderProperties['layout']['class']) and !empty($appenderProperties['layout']['class'])) {
+ $layoutClass = $appenderProperties['layout']['class'];
+ } else {
+ $layoutClass = 'LoggerLayoutSimple';
+ }
+
+ $layout = LoggerReflectionUtils::createObject($layoutClass);
+ if($layout === null) {
+ $layout = LoggerReflectionUtils::createObject('LoggerLayoutSimple');
+ }
+
+ if($layout instanceof LoggerLayoutPattern) {
+ $layout->setConversionPattern($appenderProperties['layout']['conversionPattern']);
+ }
+
+ $appender->setLayout($layout);
+
+ } else {
+ // TODO: throw exception?
+ }
+
+ }
+
+ }
+
+ }
+
+ // parse and create root logger
+ if(isset($config['rootLogger'])) {
+ $rootLogger = $hierarchy->getRootLogger();
+ if(isset($config['rootLogger']['level'])) {
+ $rootLogger->setLevel(LoggerOptionConverter::toLevel($config['rootLogger']['level'], LoggerLevel::getLevelDebug()));
+ if(isset($config['rootLogger']['appenders'])) {
+ foreach($config['rootLogger']['appenders'] as $appenderName) {
+ $appender = LoggerAppender::singleton($appenderName);
+ if($appender !== null) {
+ $rootLogger->addAppender($appender);
+ }
+ }
+ }
+ }
+ }
+
+ // parse and create loggers
+ if(isset($config['loggers'])) {
+ foreach($config['loggers'] as $loggerName => $loggerProperties) {
+ if(is_string($loggerName)) {
+ $logger = $hierarchy->getLogger($loggerName);
+
+ if(isset($loggerProperties['level'])) {
+ $logger->setLevel(LoggerOptionConverter::toLevel($loggerProperties['level'], LoggerLevel::getLevelDebug()));
+ if(isset($loggerProperties['appenders'])) {
+ foreach($loggerProperties['appenders'] as $appenderName) {
+ $appender = LoggerAppender::singleton($appenderName);
+ if($appender !== null) {
+ $logger->addAppender($appender);
+ }
+ }
+ }
+ }
+ } else {
+ // TODO: throw exception
+ }
+ }
+ }
+
+ return true;
+ }
+
+}
diff --git a/thirdparty/apache-log4php/src/main/php/xml/LoggerDOMConfigurator.php b/thirdparty/apache-log4php/src/main/php/configurators/LoggerConfiguratorXml.php
index b5505b3..825cf12 100644
--- a/thirdparty/apache-log4php/src/main/php/xml/LoggerDOMConfigurator.php
+++ b/thirdparty/apache-log4php/src/main/php/configurators/LoggerConfiguratorXml.php
@@ -17,21 +17,8 @@
*
*
* @package log4php
- * @subpackage xml
- */
-
-/**
- * @ignore
+ * @subpackage configurators
*/
-if (!defined('LOG4PHP_DIR')) define('LOG4PHP_DIR', dirname(__FILE__) . '/..');
-
-require_once(LOG4PHP_DIR . '/helpers/LoggerOptionConverter.php');
-require_once(LOG4PHP_DIR . '/or/LoggerObjectRenderer.php');
-require_once(LOG4PHP_DIR . '/spi/LoggerConfigurator.php');
-require_once(LOG4PHP_DIR . '/LoggerAppender.php');
-require_once(LOG4PHP_DIR . '/LoggerLayout.php');
-require_once(LOG4PHP_DIR . '/LoggerLog.php');
-require_once(LOG4PHP_DIR . '/LoggerManager.php');
define('LOG4PHP_LOGGER_DOM_CONFIGURATOR_APPENDER_STATE', 1000);
define('LOG4PHP_LOGGER_DOM_CONFIGURATOR_LAYOUT_STATE', 1010);
@@ -79,14 +66,12 @@ define('LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS', 'HTTP://LOGGING.APACHE.ORG/LOG4P
* There are sample XML files included in the package under tests/
* subdirectories.
*
- * @author Marco Vassura
- * @author Knut Urdalen
- * @version $Revision: 635069 $
+ * @version $Revision: 785337 $
* @package log4php
* @subpackage xml
* @since 0.4
*/
-class LoggerDOMConfigurator implements LoggerConfigurator {
+class LoggerConfiguratorXml implements LoggerConfigurator {
/**
* @var LoggerHierarchy
@@ -121,8 +106,7 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
/**
* Constructor
*/
- function LoggerDOMConfigurator()
- {
+ public function __construct() {
$this->state = array();
$this->logger = null;
$this->appender = null;
@@ -140,8 +124,8 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
* @static
*/
public static function configure($url = '') {
- $configurator = new LoggerDOMConfigurator();
- $repository =& LoggerManager::getLoggerRepository();
+ $configurator = new self();
+ $repository = LoggerManager::getLoggerRepository();
return $configurator->doConfigure($url, $repository);
}
@@ -199,10 +183,6 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
$errorCode = xml_get_error_code($parser);
$errorStr = xml_error_string($errorCode);
$errorLine = xml_get_current_line_number($parser);
- LoggerLog::warn(
- "LoggerDOMConfigurator::parse() ".
- "Parsing error [{$errorCode}] {$errorStr}, line {$errorLine}"
- );
$this->repository->resetConfiguration();
} else {
xml_parser_free($parser);
@@ -224,8 +204,6 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
case 'CONFIGURATION' :
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS.':CONFIGURATION':
- LoggerLog::debug("LoggerDOMConfigurator::tagOpen() CONFIGURATION");
-
if (isset($attribs['THRESHOLD'])) {
$this->repository->setThreshold(
@@ -235,6 +213,8 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
)
);
}
+ /*
+ * TODO: Remove due to LOG4PHP-34
if (isset($attribs['DEBUG'])) {
$debug = LoggerOptionConverter::toBoolean($this->subst($attribs['DEBUG']), LoggerLog::internalDebugging());
$this->repository->debug = $debug;
@@ -242,6 +222,7 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
LoggerLog::debug("LoggerDOMConfigurator::tagOpen() LOG4PHP:CONFIGURATION. Internal Debug turned ".($debug ? 'on':'off'));
}
+ */
break;
case 'APPENDER' :
@@ -253,12 +234,7 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
$name = $this->subst(@$attribs['NAME']);
$class = $this->subst(@$attribs['CLASS']);
- LoggerLog::debug("LoggerDOMConfigurator::tagOpen():tag=[$tag]:name=[$name]:class=[$class]");
-
- $this->appender =& LoggerAppender::singleton($name, $class);
- if ($this->appender === null) {
- LoggerLog::warn("LoggerDOMConfigurator::tagOpen() APPENDER cannot instantiate appender '$name'");
- }
+ $this->appender = LoggerAppender::singleton($name, $class);
$this->state[] = LOG4PHP_LOGGER_DOM_CONFIGURATOR_APPENDER_STATE;
break;
@@ -266,14 +242,10 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
case 'APPENDER-REF' :
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS.':APPENDER_REF':
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS.':APPENDER-REF':
-
-
if (isset($attribs['REF']) and !empty($attribs['REF'])) {
$appenderName = $this->subst($attribs['REF']);
- LoggerLog::debug("LoggerDOMConfigurator::tagOpen() APPENDER-REF ref='$appenderName'");
-
- $appender =& LoggerAppender::singleton($appenderName);
+ $appender = LoggerAppender::singleton($appenderName);
if ($appender !== null) {
switch (end($this->state)) {
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_LOGGER_STATE:
@@ -281,55 +253,31 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
$this->logger->addAppender($appender);
break;
}
- } else {
- LoggerLog::warn("LoggerDOMConfigurator::tagOpen() APPENDER-REF ref '$appenderName' points to a null appender");
}
- } else {
- LoggerLog::warn("LoggerDOMConfigurator::tagOpen() APPENDER-REF ref not set or empty");
- }
+ }
break;
case 'FILTER' :
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS.':FILTER':
-
- LoggerLog::debug("LoggerDOMConfigurator::tagOpen() FILTER");
-
unset($this->filter);
$this->filter = null;
$filterName = basename($this->subst(@$attribs['CLASS']));
if (!empty($filterName)) {
- if (!class_exists($filterName)) {
- @include_once(LOG4PHP_DIR . "/varia/{$filterName}.php");
- }
- if (class_exists($filterName)) {
- $this->filter = new $filterName();
- } else {
- LoggerLog::warn("LoggerDOMConfigurator::tagOpen() FILTER. class '$filterName' doesnt exist");
- }
+ $this->filter = new $filterName();
$this->state[] = LOG4PHP_LOGGER_DOM_CONFIGURATOR_FILTER_STATE;
- } else {
- LoggerLog::warn("LoggerDOMConfigurator::tagOpen() FILTER filter name cannot be empty");
- }
+ }
break;
case 'LAYOUT':
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS.':LAYOUT':
-
$class = @$attribs['CLASS'];
-
- LoggerLog::debug("LoggerDOMConfigurator::tagOpen() LAYOUT class='{$class}'");
-
- $this->layout = LoggerLayout::factory($this->subst($class));
- if ($this->layout === null)
- LoggerLog::warn("LoggerDOMConfigurator::tagOpen() LAYOUT unable to instanciate class='{$class}'");
-
+ $this->layout = LoggerReflectionUtils::createObject($this->subst($class));
$this->state[] = LOG4PHP_LOGGER_DOM_CONFIGURATOR_LAYOUT_STATE;
break;
case 'LOGGER':
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS.':LOGGER':
-
// $this->logger is assigned by reference.
// Only '$this->logger=null;' destroys referenced object
unset($this->logger);
@@ -337,29 +285,29 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
$loggerName = $this->subst(@$attribs['NAME']);
if (!empty($loggerName)) {
- LoggerLog::debug("LoggerDOMConfigurator::tagOpen() LOGGER. name='$loggerName'");
-
$class = $this->subst(@$attribs['CLASS']);
if (empty($class)) {
$this->logger =& $this->repository->getLogger($loggerName);
} else {
$className = basename($class);
- if (!class_exists($className))
- @include_once("{$class}.php");
if (!class_exists($className)) {
- LoggerLog::warn(
+ // TODO throw exception?
+ /*LoggerLog::warn(
"LoggerDOMConfigurator::tagOpen() LOGGER. ".
"cannot find '$className'."
- );
+ );*/
} else {
if (in_array('getlogger', get_class_methods($className))) {
$this->logger =& call_user_func(array($className, 'getlogger'), $loggerName);
} else {
+ // TODO throw exception?
+ /*
LoggerLog::warn(
"LoggerDOMConfigurator::tagOpen() LOGGER. ".
"class '$className' doesnt implement 'getLogger()' method."
- );
+ );
+ */
}
}
}
@@ -367,9 +315,7 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
$additivity = LoggerOptionConverter::toBoolean($this->subst($attribs['ADDITIVITY']), true);
$this->logger->setAdditivity($additivity);
}
- } else {
- LoggerLog::warn("LoggerDOMConfigurator::tagOpen() LOGGER. Attribute 'name' is not set or is empty.");
- }
+ }
$this->state[] = LOG4PHP_LOGGER_DOM_CONFIGURATOR_LOGGER_STATE;;
break;
@@ -379,14 +325,12 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS.':PRIORITY':
if (!isset($attribs['VALUE'])) {
- LoggerLog::debug("LoggerDOMConfigurator::tagOpen() LEVEL value not set");
+ // LoggerDOMConfigurator::tagOpen() LEVEL value not set
break;
}
- LoggerLog::debug("LoggerDOMConfigurator::tagOpen() LEVEL value={$attribs['VALUE']}");
-
if ($this->logger === null) {
- LoggerLog::warn("LoggerDOMConfigurator::tagOpen() LEVEL. parent logger is null");
+ // LoggerDOMConfigurator::tagOpen() LEVEL. parent logger is null
break;
}
@@ -398,7 +342,6 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
$this->logger->getLevel()
)
);
- LoggerLog::debug("LoggerDOMConfigurator::tagOpen() LEVEL root level is now '{$attribs['VALUE']}' ");
break;
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_LOGGER_STATE:
$this->logger->setLevel(
@@ -409,63 +352,39 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
);
break;
default:
- LoggerLog::warn("LoggerDOMConfigurator::tagOpen() LEVEL state '{$this->state}' not allowed here");
+ //LoggerLog::warn("LoggerDOMConfigurator::tagOpen() LEVEL state '{$this->state}' not allowed here");
}
break;
case 'PARAM':
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS.':PARAM':
-
- LoggerLog::debug("LoggerDOMConfigurator::tagOpen() PARAM");
-
if (!isset($attribs['NAME'])) {
- LoggerLog::warn(
- "LoggerDOMConfigurator::tagOpen() PARAM. ".
- "attribute 'name' not defined."
- );
+ // LoggerDOMConfigurator::tagOpen() PARAM attribute 'name' not defined.
break;
}
if (!isset($attribs['VALUE'])) {
- LoggerLog::warn(
- "LoggerDOMConfigurator::tagOpen() PARAM. ".
- "attribute 'value' not defined."
- );
+ // LoggerDOMConfigurator::tagOpen() PARAM. attribute 'value' not defined.
break;
}
switch (end($this->state)) {
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_APPENDER_STATE:
if ($this->appender !== null) {
- $this->setter($this->appender, $this->subst($attribs['NAME']), $this->subst($attribs['VALUE']));
- } else {
- LoggerLog::warn(
- "LoggerDOMConfigurator::tagOpen() PARAM. ".
- " trying to set property to a null appender."
- );
+ LoggerReflectionUtils::setter($this->appender, $this->subst($attribs['NAME']), $this->subst($attribs['VALUE']));
}
break;
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_LAYOUT_STATE:
if ($this->layout !== null) {
- $this->setter($this->layout, $this->subst($attribs['NAME']), $this->subst($attribs['VALUE']));
- } else {
- LoggerLog::warn(
- "LoggerDOMConfigurator::tagOpen() PARAM. ".
- " trying to set property to a null layout."
- );
+ LoggerReflectionUtils::setter($this->layout, $this->subst($attribs['NAME']), $this->subst($attribs['VALUE']));
}
break;
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_FILTER_STATE:
if ($this->filter !== null) {
- $this->setter($this->filter, $this->subst($attribs['NAME']), $this->subst($attribs['VALUE']));
- } else {
- LoggerLog::warn(
- "LoggerDOMConfigurator::tagOpen() PARAM. ".
- " trying to set property to a null filter."
- );
+ LoggerReflectionUtils::setter($this->filter, $this->subst($attribs['NAME']), $this->subst($attribs['VALUE']));
}
break;
default:
- LoggerLog::warn("LoggerDOMConfigurator::tagOpen() PARAM state '{$this->state}' not allowed here");
+ //LoggerLog::warn("LoggerDOMConfigurator::tagOpen() PARAM state '{$this->state}' not allowed here");
}
break;
@@ -475,32 +394,22 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
$renderedClass = $this->subst(@$attribs['RENDEREDCLASS']);
$renderingClass = $this->subst(@$attribs['RENDERINGCLASS']);
- LoggerLog::debug("LoggerDOMConfigurator::tagOpen() RENDERER renderedClass='$renderedClass' renderingClass='$renderingClass'");
-
if (!empty($renderedClass) and !empty($renderingClass)) {
- $renderer = LoggerObjectRenderer::factory($renderingClass);
+ $renderer = LoggerReflectionUtils::createObject($renderingClass);
if ($renderer === null) {
- LoggerLog::warn("LoggerDOMConfigurator::tagOpen() RENDERER cannot instantiate '$renderingClass'");
+ // LoggerDOMConfigurator::tagOpen() RENDERER cannot instantiate '$renderingClass'
} else {
$this->repository->setRenderer($renderedClass, $renderer);
}
- } else {
- LoggerLog::warn("LoggerDOMConfigurator::tagOpen() RENDERER renderedClass or renderingClass is empty");
}
break;
case 'ROOT':
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS.':ROOT':
-
- LoggerLog::debug("LoggerDOMConfigurator::tagOpen() ROOT");
-
- $this->logger =& LoggerManager::getRootLogger();
-
+ $this->logger = LoggerManager::getRootLogger();
$this->state[] = LOG4PHP_LOGGER_DOM_CONFIGURATOR_ROOT_STATE;
break;
-
}
-
}
@@ -514,24 +423,14 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
case 'CONFIGURATION' :
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS.':CONFIGURATION':
-
- LoggerLog::debug("LoggerDOMConfigurator::tagClose() CONFIGURATION");
break;
case 'APPENDER' :
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS.':APPENDER':
-
- LoggerLog::debug("LoggerDOMConfigurator::tagClose() APPENDER");
-
if ($this->appender !== null) {
if ($this->appender->requiresLayout() and $this->appender->getLayout() === null) {
$appenderName = $this->appender->getName();
- LoggerLog::warn(
- "LoggerDOMConfigurator::tagClose() APPENDER. ".
- "'$appenderName' requires a layout that is not defined. ".
- "Using a simple layout"
- );
- $this->appender->setLayout(LoggerLayout::factory('LoggerLayoutSimple'));
+ $this->appender->setLayout(LoggerReflectionUtils::createObject('LoggerLayoutSimple'));
}
$this->appender->activateOptions();
}
@@ -540,9 +439,6 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
case 'FILTER' :
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS.':FILTER':
-
- LoggerLog::debug("LoggerDOMConfigurator::tagClose() FILTER");
-
if ($this->filter !== null) {
$this->filter->activateOptions();
$this->appender->addFilter($this->filter);
@@ -553,9 +449,6 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
case 'LAYOUT':
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS.':LAYOUT':
-
- LoggerLog::debug("LoggerDOMConfigurator::tagClose() LAYOUT");
-
if ($this->appender !== null and $this->layout !== null and $this->appender->requiresLayout()) {
$this->layout->activateOptions();
$this->appender->setLayout($this->layout);
@@ -566,43 +459,16 @@ class LoggerDOMConfigurator implements LoggerConfigurator {
case 'LOGGER':
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS.':LOGGER':
-
- LoggerLog::debug("LoggerDOMConfigurator::tagClose() LOGGER");
-
array_pop($this->state);
break;
case 'ROOT':
case LOG4PHP_LOGGER_DOM_CONFIGURATOR_XMLNS.':ROOT':
-
- LoggerLog::debug("LoggerDOMConfigurator::tagClose() ROOT");
-
array_pop($this->state);
break;
}
}
- /**
- * @param object $object
- * @param string $name
- * @param mixed $value
- */
- function setter(&$object, $name, $value)
- {
- if (empty($name)) {
- LoggerLog::debug("LoggerDOMConfigurator::setter() 'name' param cannot be empty");
- return false;
- }
- $methodName = 'set'.ucfirst($name);
- if (method_exists($object, $methodName)) {
- LoggerLog::debug("LoggerDOMConfigurator::setter() Calling ".get_class($object)."::{$methodName}({$value})");
- return call_user_func(array(&$object, $methodName), $value);
- } else {
- LoggerLog::warn("LoggerDOMConfigurator::setter() ".get_class($object)."::{$methodName}() does not exists");
- return false;
- }
- }
-
function subst($value)
{
return LoggerOptionConverter::substVars($value);
diff --git a/thirdparty/apache-log4php/src/main/php/varia/LoggerDenyAllFilter.php b/thirdparty/apache-log4php/src/main/php/filters/LoggerFilterDenyAll.php
index 31022f7..b3d974f 100644
--- a/thirdparty/apache-log4php/src/main/php/varia/LoggerDenyAllFilter.php
+++ b/thirdparty/apache-log4php/src/main/php/filters/LoggerFilterDenyAll.php
@@ -1,13 +1,13 @@
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 779002 $
* @package log4php
* @subpackage varia
* @since 0.3
*/
-class LoggerDenyAllFilter extends LoggerFilter {
+class LoggerFilterDenyAll extends LoggerFilter {
- /**
- * Always returns the integer constant {@link LOG4PHP_LOGGER_FILTER_DENY}
- * regardless of the {@link LoggerLoggingEvent} parameter.
- *
- * @param LoggerLoggingEvent $event The {@link LoggerLoggingEvent} to filter.
- * @return LOG4PHP_LOGGER_FILTER_DENY Always returns {@link LOG4PHP_LOGGER_FILTER_DENY}
- */
- function decide($event)
- {
- return LOG4PHP_LOGGER_FILTER_DENY;
- }
+ /**
+ * Always returns the integer constant {@link LoggerFilter::DENY}
+ * regardless of the {@link LoggerLoggingEvent} parameter.
+ *
+ * @param LoggerLoggingEvent $event The {@link LoggerLoggingEvent} to filter.
+ * @return LoggerFilter::DENY Always returns {@link LoggerFilter::DENY}
+ */
+ public function decide(LoggerLoggingEvent $event) {
+ return LoggerFilter::DENY;
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/varia/LoggerLevelMatchFilter.php b/thirdparty/apache-log4php/src/main/php/filters/LoggerFilterLevelMatch.php
index 43a6c83..7dc912e 100644
--- a/thirdparty/apache-log4php/src/main/php/varia/LoggerLevelMatchFilter.php
+++ b/thirdparty/apache-log4php/src/main/php/filters/LoggerFilterLevelMatch.php
@@ -1,13 +1,13 @@
AcceptOnMatch. If there is an exact match between the value
* of the LevelToMatch option and the level of the
* {@link LoggerLoggingEvent}, then the {@link decide()} method returns
- * {@link LOG4PHP_LOGGER_FILTER_ACCEPT} in case the AcceptOnMatch
+ * {@link LoggerFilter::ACCEPT} in case the AcceptOnMatch
* option value is set to true, if it is false then
- * {@link LOG4PHP_LOGGER_FILTER_DENY} is returned. If there is no match,
- * {@link LOG4PHP_LOGGER_FILTER_NEUTRAL} is returned.
+ * {@link LoggerFilter::DENY} is returned. If there is no match,
+ * {@link LoggerFilter::NEUTRAL} is returned.
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 779001 $
* @package log4php
* @subpackage varia
* @since 0.6
*/
-class LoggerLevelMatchFilter extends LoggerFilter {
+class LoggerFilterLevelMatch extends LoggerFilter {
- /**
- * @var boolean
- */
- var $acceptOnMatch = true;
+ /**
+ * Indicates if this event should be accepted or denied on match
+ * @var boolean
+ */
+ private $acceptOnMatch = true;
- /**
- * @var LoggerLevel
- */
- var $levelToMatch;
+ /**
+ * The level, when to match
+ * @var LoggerLevel
+ */
+ private $levelToMatch;
- /**
- * @return boolean
- */
- function getAcceptOnMatch()
- {
- return $this->acceptOnMatch;
- }
-
- /**
- * @param boolean $acceptOnMatch
- */
- function setAcceptOnMatch($acceptOnMatch)
- {
- $this->acceptOnMatch = LoggerOptionConverter::toBoolean($acceptOnMatch, true);
- }
-
- /**
- * @return LoggerLevel
- */
- function getLevelToMatch()
- {
- return $this->levelToMatch;
- }
-
- /**
- * @param string $l the level to match
- */
- function setLevelToMatch($l)
- {
- $this->levelToMatch = LoggerOptionConverter::toLevel($l, null);
- }
+ /**
+ * @param boolean $acceptOnMatch
+ */
+ public function setAcceptOnMatch($acceptOnMatch) {
+ $this->acceptOnMatch = LoggerOptionConverter::toBoolean($acceptOnMatch, true);
+ }
+
+ /**
+ * @param string $l the level to match
+ */
+ public function setLevelToMatch($l) {
+ if($l instanceof LoggerLevel) {
+ $this->levelToMatch = $l;
+ } else {
+ $this->levelToMatch = LoggerOptionConverter::toLevel($l, null);
+ }
+ }
- /**
- * Return the decision of this filter.
- *
- * Returns {@link LOG4PHP_LOGGER_FILTER_NEUTRAL} if the LevelToMatch
- * option is not set or if there is not match. Otherwise, if there is a
- * match, then the returned decision is {@link LOG4PHP_LOGGER_FILTER_ACCEPT} if the
- * AcceptOnMatch property is set to true. The
- * returned decision is {@link LOG4PHP_LOGGER_FILTER_DENY} if the
- * AcceptOnMatch property is set to false.
- *
- * @param LoggerLoggingEvent $event
- * @return integer
- */
- function decide($event)
- {
- if($this->levelToMatch === null)
- return LOG4PHP_LOGGER_FILTER_NEUTRAL;
-
- if ($this->levelToMatch->equals($event->getLevel())) {
- return $this->getAcceptOnMatch() ?
- LOG4PHP_LOGGER_FILTER_ACCEPT :
- LOG4PHP_LOGGER_FILTER_DENY;
- } else {
- return LOG4PHP_LOGGER_FILTER_NEUTRAL;
- }
- }
+ /**
+ * Return the decision of this filter.
+ *
+ * Returns {@link LoggerFilter::NEUTRAL} if the LevelToMatch
+ * option is not set or if there is not match. Otherwise, if there is a
+ * match, then the returned decision is {@link LoggerFilter::ACCEPT} if the
+ * AcceptOnMatch property is set to true. The
+ * returned decision is {@link LoggerFilter::DENY} if the
+ * AcceptOnMatch property is set to false.
+ *
+ * @param LoggerLoggingEvent $event
+ * @return integer
+ */
+ public function decide(LoggerLoggingEvent $event) {
+ if($this->levelToMatch === null) {
+ return LoggerFilter::NEUTRAL;
+ }
+
+ if($this->levelToMatch->equals($event->getLevel())) {
+ return $this->acceptOnMatch ? LoggerFilter::ACCEPT : LoggerFilter::DENY;
+ } else {
+ return LoggerFilter::NEUTRAL;
+ }
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/varia/LoggerLevelRangeFilter.php b/thirdparty/apache-log4php/src/main/php/filters/LoggerFilterLevelRange.php
index b8d2368..8a5de03 100644
--- a/thirdparty/apache-log4php/src/main/php/varia/LoggerLevelRangeFilter.php
+++ b/thirdparty/apache-log4php/src/main/php/filters/LoggerFilterLevelRange.php
@@ -1,13 +1,13 @@
The filter admits three options LevelMin, LevelMax
* and AcceptOnMatch.
*
* If the level of the {@link LoggerLoggingEvent} is not between Min and Max
- * (inclusive), then {@link LOG4PHP_LOGGER_FILTER_DENY} is returned.
- *
+ * (inclusive), then {@link LoggerFilter::DENY} is returned.
+ *
* If the Logging event level is within the specified range, then if
* AcceptOnMatch is true,
- * {@link LOG4PHP_LOGGER_FILTER_ACCEPT} is returned, and if
+ * {@link LoggerFilter::ACCEPT} is returned, and if
* AcceptOnMatch is false,
- * {@link LOG4PHP_LOGGER_FILTER_NEUTRAL} is returned.
- *
+ * {@link LoggerFilter::NEUTRAL} is returned.
+ *
* If LevelMin is not defined, then there is no
* minimum acceptable level (i.e. a level is never rejected for
* being too "low"/unimportant). If LevelMax is not
* defined, then there is no maximum acceptable level (ie a
* level is never rejected for being too "high"/important).
*
- * Refer to the {@link LoggerAppenderSkeleton::setThreshold()} method
- * available to all appenders extending {@link LoggerAppenderSkeleton}
+ *
Refer to the {@link LoggerAppender::setThreshold()} method
+ * available to all appenders extending {@link LoggerAppender}
* for a more convenient way to filter out events by level.
*
* @log4j-class org.apache.log4j.varia.LevelRangeFilter
* @log4j-author Simon Kitching
* @log4j-author based on code by Ceki Gülcü
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 779006 $
* @package log4php
* @subpackage varia
* @since 0.6
*/
-class LoggerLevelRangeFilter extends LoggerFilter {
-
- /**
- * @var boolean
- */
- var $acceptOnMatch = true;
+class LoggerFilterLevelRange extends LoggerFilter {
+
+ /**
+ * @var boolean
+ */
+ private $acceptOnMatch = true;
- /**
- * @var LoggerLevel
- */
- var $levelMin;
+ /**
+ * @var LoggerLevel
+ */
+ private $levelMin;
- /**
- * @var LoggerLevel
- */
- var $levelMax;
+ /**
+ * @var LoggerLevel
+ */
+ private $levelMax;
- /**
- * @return boolean
- */
- function getAcceptOnMatch()
- {
- return $this->acceptOnMatch;
- }
-
- /**
- * @param boolean $acceptOnMatch
- */
- function setAcceptOnMatch($acceptOnMatch)
- {
- $this->acceptOnMatch = LoggerOptionConverter::toBoolean($acceptOnMatch, true);
- }
-
- /**
- * @return LoggerLevel
- */
- function getLevelMin()
- {
- return $this->levelMin;
- }
-
- /**
- * @param string $l the level min to match
- */
- function setLevelMin($l)
- {
- $this->levelMin = LoggerOptionConverter::toLevel($l, null);
- }
+ /**
+ * @param boolean $acceptOnMatch
+ */
+ public function setAcceptOnMatch($acceptOnMatch) {
+ $this->acceptOnMatch = LoggerOptionConverter::toBoolean($acceptOnMatch, true);
+ }
+
+ /**
+ * @param string $l the level min to match
+ */
+ public function setLevelMin($l) {
+ if($l instanceof LoggerLevel) {
+ $this->levelMin = $l;
+ } else {
+ $this->levelMin = LoggerOptionConverter::toLevel($l, null);
+ }
+ }
- /**
- * @return LoggerLevel
- */
- function getLevelMax()
- {
- return $this->levelMax;
- }
-
- /**
- * @param string $l the level max to match
- */
- function setLevelMax($l)
- {
- $this->levelMax = LoggerOptionConverter::toLevel($l, null);
- }
+ /**
+ * @param string $l the level max to match
+ */
+ public function setLevelMax($l) {
+ if($l instanceof LoggerLevel) {
+ $this->levelMax = $l;
+ } else {
+ $this->levelMax = LoggerOptionConverter::toLevel($l, null);
+ }
+ }
- /**
- * Return the decision of this filter.
- *
- * @param LoggerLoggingEvent $event
- * @return integer
- */
- function decide($event)
- {
- $level = $event->getLevel();
-
- if($this->levelMin !== null) {
- if ($level->isGreaterOrEqual($this->levelMin) == false) {
- // level of event is less than minimum
- return LOG4PHP_LOGGER_FILTER_DENY;
- }
- }
+ /**
+ * Return the decision of this filter.
+ *
+ * @param LoggerLoggingEvent $event
+ * @return integer
+ */
+ public function decide(LoggerLoggingEvent $event) {
+ $level = $event->getLevel();
+
+ if($this->levelMin !== null) {
+ if($level->isGreaterOrEqual($this->levelMin) == false) {
+ // level of event is less than minimum
+ return LoggerFilter::DENY;
+ }
+ }
- if($this->levelMax !== null) {
- if ($level->toInt() > $this->levelMax->toInt()) {
- // level of event is greater than maximum
- // Alas, there is no Level.isGreater method. and using
- // a combo of isGreaterOrEqual && !Equal seems worse than
- // checking the int values of the level objects..
- return LOG4PHP_LOGGER_FILTER_DENY;
- }
- }
+ if($this->levelMax !== null) {
+ if($level->toInt() > $this->levelMax->toInt()) {
+ // level of event is greater than maximum
+ // Alas, there is no Level.isGreater method. and using
+ // a combo of isGreaterOrEqual && !Equal seems worse than
+ // checking the int values of the level objects..
+ return LoggerFilter::DENY;
+ }
+ }
- if ($this->getAcceptOnMatch()) {
- // this filter set up to bypass later filters and always return
- // accept if level in range
- return LOG4PHP_LOGGER_FILTER_ACCEPT;
- } else {
- // event is ok for this filter; allow later filters to have a look..
- return LOG4PHP_LOGGER_FILTER_NEUTRAL;
- }
- }
+ if($this->acceptOnMatch) {
+ // this filter set up to bypass later filters and always return
+ // accept if level in range
+ return LoggerFilter::ACCEPT;
+ } else {
+ // event is ok for this filter; allow later filters to have a look..
+ return LoggerFilter::NEUTRAL;
+ }
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/varia/LoggerStringMatchFilter.php b/thirdparty/apache-log4php/src/main/php/filters/LoggerFilterStringMatch.php
index 80c5b58..464c0c1 100644
--- a/thirdparty/apache-log4php/src/main/php/varia/LoggerStringMatchFilter.php
+++ b/thirdparty/apache-log4php/src/main/php/filters/LoggerFilterStringMatch.php
@@ -1,13 +1,13 @@
AcceptOnMatch option value is true, if it is false then
- * {@link LOG4PHP_LOGGER_FILTER_DENY} is returned. If there is no match, {@link LOG4PHP_LOGGER_FILTER_NEUTRAL}
+ * {@link LoggerFilter::DENY} is returned. If there is no match, {@link LoggerFilter::NEUTRAL}
* is returned.
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 779002 $
* @package log4php
* @subpackage varia
* @since 0.3
*/
-class LoggerStringMatchFilter extends LoggerFilter {
-
- /**
- * @var boolean
- */
- var $acceptOnMatch = true;
+class LoggerFilterStringMatch extends LoggerFilter {
+
+ /**
+ * @var boolean
+ */
+ private $acceptOnMatch = true;
+
+ /**
+ * @var string
+ */
+ private $stringToMatch = null;
- /**
- * @var string
- */
- var $stringToMatch = null;
-
- /**
- * @return boolean
- */
- function getAcceptOnMatch()
- {
- return $this->acceptOnMatch;
- }
-
- /**
- * @param mixed $acceptOnMatch a boolean or a string ('true' or 'false')
- */
- function setAcceptOnMatch($acceptOnMatch)
- {
- $this->acceptOnMatch = is_bool($acceptOnMatch) ?
- $acceptOnMatch :
- (bool)(strtolower($acceptOnMatch) == 'true');
- }
-
- /**
- * @return string
- */
- function getStringToMatch()
- {
- return $this->stringToMatch;
- }
-
- /**
- * @param string $s the string to match
- */
- function setStringToMatch($s)
- {
- $this->stringToMatch = $s;
- }
+ /**
+ * @param mixed $acceptOnMatch a boolean or a string ('true' or 'false')
+ */
+ public function setAcceptOnMatch($acceptOnMatch) {
+ $this->acceptOnMatch = is_bool($acceptOnMatch) ? $acceptOnMatch : (bool)(strtolower($acceptOnMatch) == 'true');
+ }
+
+ /**
+ * @param string $s the string to match
+ */
+ public function setStringToMatch($s) {
+ $this->stringToMatch = $s;
+ }
- /**
- * @return integer a {@link LOGGER_FILTER_NEUTRAL} is there is no string match.
- */
- function decide($event)
- {
- $msg = $event->getRenderedMessage();
-
- if($msg === null or $this->stringToMatch === null)
- return LOG4PHP_LOGGER_FILTER_NEUTRAL;
- if( strpos($msg, $this->stringToMatch) !== false ) {
- return ($this->acceptOnMatch) ? LOG4PHP_LOGGER_FILTER_ACCEPT : LOG4PHP_LOGGER_FILTER_DENY ;
- }
- return LOG4PHP_LOGGER_FILTER_NEUTRAL;
- }
+ /**
+ * @return integer a {@link LOGGER_FILTER_NEUTRAL} is there is no string match.
+ */
+ public function decide(LoggerLoggingEvent $event) {
+ $msg = $event->getRenderedMessage();
+
+ if($msg === null or $this->stringToMatch === null) {
+ return LoggerFilter::NEUTRAL;
+ }
+
+ if(strpos($msg, $this->stringToMatch) !== false ) {
+ return ($this->acceptOnMatch) ? LoggerFilter::ACCEPT : LoggerFilter::DENY;
+ }
+ return LoggerFilter::NEUTRAL;
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/helpers/LoggerBasicPatternConverter.php b/thirdparty/apache-log4php/src/main/php/helpers/LoggerBasicPatternConverter.php
new file mode 100644
index 0000000..2dd152a
--- /dev/null
+++ b/thirdparty/apache-log4php/src/main/php/helpers/LoggerBasicPatternConverter.php
@@ -0,0 +1,73 @@
+LoggerPatternConverter($formattingInfo);
+ $this->type = $type;
+ }
+
+ /**
+ * @param LoggerLoggingEvent $event
+ * @return string
+ */
+ function convert($event) {
+ switch($this->type) {
+ case LOG4PHP_LOGGER_PATTERN_PARSER_RELATIVE_TIME_CONVERTER:
+ $timeStamp = $event->getTimeStamp();
+ $startTime = LoggerLoggingEvent::getStartTime();
+ return (string)(int)($timeStamp * 1000 - $startTime * 1000);
+
+ case LOG4PHP_LOGGER_PATTERN_PARSER_THREAD_CONVERTER:
+ return $event->getThreadName();
+
+ case LOG4PHP_LOGGER_PATTERN_PARSER_LEVEL_CONVERTER:
+ $level = $event->getLevel();
+ return $level->toString();
+
+ case LOG4PHP_LOGGER_PATTERN_PARSER_NDC_CONVERTER:
+ return $event->getNDC();
+
+ case LOG4PHP_LOGGER_PATTERN_PARSER_MESSAGE_CONVERTER:
+ return $event->getRenderedMessage();
+
+ default:
+ return '';
+ }
+ }
+}
diff --git a/thirdparty/apache-log4php/src/main/php/helpers/LoggerCategoryPatternConverter.php b/thirdparty/apache-log4php/src/main/php/helpers/LoggerCategoryPatternConverter.php
new file mode 100644
index 0000000..c1f2178
--- /dev/null
+++ b/thirdparty/apache-log4php/src/main/php/helpers/LoggerCategoryPatternConverter.php
@@ -0,0 +1,46 @@
+LoggerNamedPatternConverter($formattingInfo, $precision);
+ }
+
+ /**
+ * @param LoggerLoggingEvent $event
+ * @return string
+ */
+ function getFullyQualifiedName($event) {
+ return $event->getLoggerName();
+ }
+}
diff --git a/thirdparty/apache-log4php/src/main/php/helpers/LoggerClassNamePatternConverter.php b/thirdparty/apache-log4php/src/main/php/helpers/LoggerClassNamePatternConverter.php
new file mode 100644
index 0000000..03cab0f
--- /dev/null
+++ b/thirdparty/apache-log4php/src/main/php/helpers/LoggerClassNamePatternConverter.php
@@ -0,0 +1,47 @@
+LoggerNamedPatternConverter($formattingInfo, $precision);
+ }
+
+ /**
+ * @param LoggerLoggingEvent $event
+ * @return string
+ */
+ function getFullyQualifiedName($event) {
+ return $event->fqcn;
+ }
+}
+
diff --git a/thirdparty/apache-log4php/src/main/php/helpers/LoggerDatePatternConverter.php b/thirdparty/apache-log4php/src/main/php/helpers/LoggerDatePatternConverter.php
new file mode 100644
index 0000000..228ce0f
--- /dev/null
+++ b/thirdparty/apache-log4php/src/main/php/helpers/LoggerDatePatternConverter.php
@@ -0,0 +1,55 @@
+LoggerPatternConverter($formattingInfo);
+ $this->df = $df;
+ }
+
+ /**
+ * @param LoggerLoggingEvent $event
+ * @return string
+ */
+ function convert($event) {
+ $timeStamp = $event->getTimeStamp();
+ $usecs = round(($timeStamp - (int)$timeStamp) * 1000);
+ $this->df = preg_replace('/((?df);
+ return date($this->df, $event->getTimeStamp());
+ }
+}
diff --git a/thirdparty/apache-log4php/src/main/php/helpers/LoggerFormattingInfo.php b/thirdparty/apache-log4php/src/main/php/helpers/LoggerFormattingInfo.php
index 70a7f52..e0436ea 100644
--- a/thirdparty/apache-log4php/src/main/php/helpers/LoggerFormattingInfo.php
+++ b/thirdparty/apache-log4php/src/main/php/helpers/LoggerFormattingInfo.php
@@ -1,13 +1,13 @@
min = -1;
- $this->max = 0x7FFFFFFF;
- $this->leftAlign = false;
- }
+ /**
+ * Constructor
+ */
+ function LoggerFormattingInfo() {}
+
+ function reset() {
+ $this->min = -1;
+ $this->max = 0x7FFFFFFF;
+ $this->leftAlign = false;
+ }
- function dump()
- {
- LoggerLog::debug("LoggerFormattingInfo::dump() min={$this->min}, max={$this->max}, leftAlign={$this->leftAlign}");
- }
-}
+ function dump() {
+ // TODO: other option to dump?
+ // LoggerLog::debug("LoggerFormattingInfo::dump() min={$this->min}, max={$this->max}, leftAlign={$this->leftAlign}");
+ }
+}
diff --git a/thirdparty/apache-log4php/src/main/php/helpers/LoggerLiteralPatternConverter.php b/thirdparty/apache-log4php/src/main/php/helpers/LoggerLiteralPatternConverter.php
new file mode 100644
index 0000000..6a979dd
--- /dev/null
+++ b/thirdparty/apache-log4php/src/main/php/helpers/LoggerLiteralPatternConverter.php
@@ -0,0 +1,59 @@
+literal = $value;
+ }
+
+ /**
+ * @param string &$sbuf
+ * @param LoggerLoggingEvent $event
+ */
+ function format(&$sbuf, $event) {
+ $sbuf .= $this->literal;
+ }
+
+ /**
+ * @param LoggerLoggingEvent $event
+ * @return string
+ */
+ function convert($event) {
+ return $this->literal;
+ }
+}
+
diff --git a/thirdparty/apache-log4php/src/main/php/helpers/LoggerLocationPatternConverter.php b/thirdparty/apache-log4php/src/main/php/helpers/LoggerLocationPatternConverter.php
new file mode 100644
index 0000000..01e474d
--- /dev/null
+++ b/thirdparty/apache-log4php/src/main/php/helpers/LoggerLocationPatternConverter.php
@@ -0,0 +1,65 @@
+LoggerPatternConverter($formattingInfo);
+ $this->type = $type;
+ }
+
+ /**
+ * @param LoggerLoggingEvent $event
+ * @return string
+ */
+ function convert($event) {
+ $locationInfo = $event->getLocationInformation();
+ switch($this->type) {
+ case LOG4PHP_LOGGER_PATTERN_PARSER_FULL_LOCATION_CONVERTER:
+ return $locationInfo->getFullInfo();
+ case LOG4PHP_LOGGER_PATTERN_PARSER_METHOD_LOCATION_CONVERTER:
+ return $locationInfo->getMethodName();
+ case LOG4PHP_LOGGER_PATTERN_PARSER_LINE_LOCATION_CONVERTER:
+ return $locationInfo->getLineNumber();
+ case LOG4PHP_LOGGER_PATTERN_PARSER_FILE_LOCATION_CONVERTER:
+ return $locationInfo->getFileName();
+ default:
+ return '';
+ }
+ }
+}
+
diff --git a/thirdparty/apache-log4php/src/main/php/helpers/LoggerMDCPatternConverter.php b/thirdparty/apache-log4php/src/main/php/helpers/LoggerMDCPatternConverter.php
new file mode 100644
index 0000000..03eada6
--- /dev/null
+++ b/thirdparty/apache-log4php/src/main/php/helpers/LoggerMDCPatternConverter.php
@@ -0,0 +1,52 @@
+LoggerPatternConverter($formattingInfo);
+ $this->key = $key;
+ }
+
+ /**
+ * @param LoggerLoggingEvent $event
+ * @return string
+ */
+ function convert($event) {
+ return $event->getMDC($this->key);
+ }
+}
diff --git a/thirdparty/apache-log4php/src/main/php/helpers/LoggerNamedPatternConverter.php b/thirdparty/apache-log4php/src/main/php/helpers/LoggerNamedPatternConverter.php
new file mode 100644
index 0000000..05abb68
--- /dev/null
+++ b/thirdparty/apache-log4php/src/main/php/helpers/LoggerNamedPatternConverter.php
@@ -0,0 +1,79 @@
+LoggerPatternConverter($formattingInfo);
+ $this->precision = $precision;
+ }
+
+ /**
+ * @param LoggerLoggingEvent $event
+ * @return string
+ * @abstract
+ */
+ function getFullyQualifiedName($event) {
+ // abstract
+ return;
+ }
+
+ /**
+ * @param LoggerLoggingEvent $event
+ * @return string
+ */
+ function convert($event) {
+ $n = $this->getFullyQualifiedName($event);
+ if($this->precision <= 0) {
+ return $n;
+ } else {
+ $len = strlen($n);
+ // We substract 1 from 'len' when assigning to 'end' to avoid out of
+ // bounds exception in return r.substring(end+1, len). This can happen if
+ // precision is 1 and the category name ends with a dot.
+ $end = $len -1 ;
+ for($i = $this->precision; $i > 0; $i--) {
+ $end = strrpos(substr($n, 0, ($end - 1)), '.');
+ if($end == false) {
+ return $n;
+ }
+ }
+ return substr($n, ($end + 1), $len);
+ }
+ }
+}
diff --git a/thirdparty/apache-log4php/src/main/php/helpers/LoggerOptionConverter.php b/thirdparty/apache-log4php/src/main/php/helpers/LoggerOptionConverter.php
index a26dd83..773dc1c 100644
--- a/thirdparty/apache-log4php/src/main/php/helpers/LoggerOptionConverter.php
+++ b/thirdparty/apache-log4php/src/main/php/helpers/LoggerOptionConverter.php
@@ -1,13 +1,13 @@
$key using this search criteria:
- * - if $key is a constant then return it. Else
- * - if $key is set in $_ENV then return it. Else
- * - return $def.
- *
- * @param string $key The key to search for.
- * @param string $def The default value to return.
- * @return string the string value of the system property, or the default
- * value if there is no property with that key.
- *
- * @static
- */
- public static function getSystemProperty($key, $def)
- {
- LoggerLog::debug("LoggerOptionConverter::getSystemProperty():key=[{$key}]:def=[{$def}].");
-
- if (defined($key)) {
- return (string)constant($key);
- } elseif (isset($_ENV[$key])) {
- return (string)$_ENV[$key];
- } else {
- return $def;
- }
- }
-
- /**
- * If $value is true, then true is
- * returned. If $value is false, then
- * true is returned. Otherwise, $default is
- * returned.
- *
- * Case of value is unimportant.
- *
- * @param string $value
- * @param boolean $default
- * @return boolean
- *
- * @static
- */
- public static function toBoolean($value, $default)
- {
- if($value === null)
- return $default;
- if ($value == 1)
- return true;
- $trimmedVal = strtolower(trim($value));
- if ("true" == $trimmedVal or "yes" == $trimmedVal)
- return true;
- if ("false" == $trimmedVal)
- return false;
- return $default;
- }
-
- /**
- * @param string $value
- * @param integer $default
- * @return integer
- * @static
- */
- public static function toInt($value, $default)
- {
- $value = trim($value);
- if (is_numeric($value)) {
- return (int)$value;
- } else {
- return $default;
- }
- }
+ const DELIM_START = '${';
+ const DELIM_STOP = '}';
+ const DELIM_START_LEN = 2;
+ const DELIM_STOP_LEN = 1;
- /**
- * Converts a standard or custom priority level to a Level
- * object.
- *
- * If $value is of form "level#full_file_classname",
- * where full_file_classname means the class filename with path
- * but without php extension, then the specified class' toLevel() method
- * is called to process the specified level string; if no '#'
- * character is present, then the default {@link LoggerLevel}
- * class is used to process the level value.
- *
- * As a special case, if the $value parameter is
- * equal to the string "NULL", then the value null will
- * be returned.
- *
- * If any error occurs while converting the value to a level,
- * the $defaultValue parameter, which may be
- * null, is returned.
- *
- * Case of $value is insignificant for the level level, but is
- * significant for the class name part, if present.
- *
- * @param string $value
- * @param LoggerLevel $defaultValue
- * @return LoggerLevel a {@link LoggerLevel} or null
- * @static
- */
- public static function toLevel($value, $defaultValue)
- {
- if($value === null)
- return $defaultValue;
+ /**
+ * Read a predefined var.
+ *
+ * It returns a value referenced by $key using this search criteria:
+ * - if $key is a constant then return it. Else
+ * - if $key is set in $_ENV then return it. Else
+ * - return $def.
+ *
+ * @param string $key The key to search for.
+ * @param string $def The default value to return.
+ * @return string the string value of the system property, or the default
+ * value if there is no property with that key.
+ *
+ * @static
+ */
+ public static function getSystemProperty($key, $def) {
+ if(defined($key)) {
+ return (string)constant($key);
+ } else if(isset($_SERVER[$key])) {
+ return (string)$_SERVER[$key];
+ } else if(isset($_ENV[$key])) {
+ return (string)$_ENV[$key];
+ } else {
+ return $def;
+ }
+ }
- $hashIndex = strpos($value, '#');
- if ($hashIndex === false) {
- if("NULL" == strtoupper($value)) {
- return null;
- } else {
- // no class name specified : use standard Level class
- return LoggerLevel::toLevel($value, $defaultValue);
- }
- }
+ /**
+ * If $value is true, then true is
+ * returned. If $value is false, then
+ * true is returned. Otherwise, $default is
+ * returned.
+ *
+ * Case of value is unimportant.
+ *
+ * @param string $value
+ * @param boolean $default
+ * @return boolean
+ *
+ * @static
+ */
+ public static function toBoolean($value, $default) {
+ if($value === null) {
+ return $default;
+ }
+ if($value == 1) {
+ return true;
+ }
+ $trimmedVal = strtolower(trim($value));
+ if("true" == $trimmedVal or "yes" == $trimmedVal) {
+ return true;
+ }
+ if("false" == $trimmedVal) {
+ return false;
+ }
+ return $default;
+ }
- $result = $defaultValue;
+ /**
+ * @param string $value
+ * @param integer $default
+ * @return integer
+ * @static
+ */
+ public static function toInt($value, $default) {
+ $value = trim($value);
+ if(is_numeric($value)) {
+ return (int)$value;
+ } else {
+ return $default;
+ }
+ }
- $clazz = substr($value, ($hashIndex + 1));
- $levelName = substr($value, 0, $hashIndex);
+ /**
+ * Converts a standard or custom priority level to a Level
+ * object.
+ *
+ * If $value is of form "level#full_file_classname",
+ * where full_file_classname means the class filename with path
+ * but without php extension, then the specified class' toLevel() method
+ * is called to process the specified level string; if no '#'
+ * character is present, then the default {@link LoggerLevel}
+ * class is used to process the level value.
+ *
+ * As a special case, if the $value parameter is
+ * equal to the string "NULL", then the value null will
+ * be returned.
+ *
+ * If any error occurs while converting the value to a level,
+ * the $defaultValue parameter, which may be
+ * null, is returned.
+ *
+ * Case of $value is insignificant for the level level, but is
+ * significant for the class name part, if present.
+ *
+ * @param string $value
+ * @param LoggerLevel $defaultValue
+ * @return LoggerLevel a {@link LoggerLevel} or null
+ * @static
+ */
+ public static function toLevel($value, $defaultValue) {
+ if($value === null) {
+ return $defaultValue;
+ }
+ $hashIndex = strpos($value, '#');
+ if($hashIndex === false) {
+ if("NULL" == strtoupper($value)) {
+ return null;
+ } else {
+ // no class name specified : use standard Level class
+ return LoggerLevel::toLevel($value, $defaultValue);
+ }
+ }
- // This is degenerate case but you never know.
- if("NULL" == strtoupper($levelName)) {
- return null;
- }
+ $result = $defaultValue;
- LoggerLog::debug("LoggerOptionConverter::toLevel():class=[{$clazz}]:pri=[{$levelName}]");
+ $clazz = substr($value, ($hashIndex + 1));
+ $levelName = substr($value, 0, $hashIndex);
- if (!class_exists($clazz))
- @include_once("{$clazz}.php");
+ // This is degenerate case but you never know.
+ if("NULL" == strtoupper($levelName)) {
+ return null;
+ }
- $clazz = basename($clazz);
+ $clazz = basename($clazz);
- if (class_exists($clazz)) {
- $result = @call_user_func(array($clazz, 'toLevel'), $levelName, $defaultValue);
- if (!is_a($result, 'loggerlevel')) {
- LoggerLog::debug("LoggerOptionConverter::toLevel():class=[{$clazz}] cannot call toLevel(). Returning default.");
- $result = $defaultValue;
- }
- } else {
- LoggerLog::warn("LoggerOptionConverter::toLevel() class '{$clazz}' doesnt exists.");
- }
- return $result;
- }
+ if(class_exists($clazz)) {
+ $result = @call_user_func(array($clazz, 'toLevel'), $levelName, $defaultValue);
+ if(!$result instanceof LoggerLevel) {
+ $result = $defaultValue;
+ }
+ }
+ return $result;
+ }
- /**
- * @param string $value
- * @param float $default
- * @return float
- *
- * @static
- */
- public static function toFileSize($value, $default)
- {
- if ($value === null)
- return $default;
+ /**
+ * @param string $value
+ * @param float $default
+ * @return float
+ *
+ * @static
+ */
+ public static function toFileSize($value, $default) {
+ if($value === null) {
+ return $default;
+ }
- $s = strtoupper(trim($value));
- $multiplier = (float)1;
- if(($index = strpos($s, 'KB')) !== false) {
- $multiplier = 1024;
- $s = substr($s, 0, $index);
- } elseif(($index = strpos($s, 'MB')) !== false) {
- $multiplier = 1024 * 1024;
- $s = substr($s, 0, $index);
- } elseif(($index = strpos($s, 'GB')) !== false) {
- $multiplier = 1024 * 1024 * 1024;
- $s = substr($s, 0, $index);
- }
- if(is_numeric($s)) {
- return (float)$s * $multiplier;
- } else {
- LoggerLog::warn("LoggerOptionConverter::toFileSize() [{$s}] is not in proper form.");
- }
- return $default;
- }
+ $s = strtoupper(trim($value));
+ $multiplier = (float)1;
+ if(($index = strpos($s, 'KB')) !== false) {
+ $multiplier = 1024;
+ $s = substr($s, 0, $index);
+ } else if(($index = strpos($s, 'MB')) !== false) {
+ $multiplier = 1024 * 1024;
+ $s = substr($s, 0, $index);
+ } else if(($index = strpos($s, 'GB')) !== false) {
+ $multiplier = 1024 * 1024 * 1024;
+ $s = substr($s, 0, $index);
+ }
+ if(is_numeric($s)) {
+ return (float)$s * $multiplier;
+ }
+ return $default;
+ }
- /**
- * Find the value corresponding to $key in
- * $props. Then perform variable substitution on the
- * found value.
- *
- * @param string $key
- * @param array $props
- * @return string
- *
- * @static
- */
- public static function findAndSubst($key, $props)
- {
- $value = @$props[$key];
- if(empty($value)) {
- return null;
- }
- return LoggerOptionConverter::substVars($value, $props);
- }
+ /**
+ * Find the value corresponding to $key in
+ * $props. Then perform variable substitution on the
+ * found value.
+ *
+ * @param string $key
+ * @param array $props
+ * @return string
+ *
+ * @static
+ */
+ public static function findAndSubst($key, $props) {
+ $value = @$props[$key];
+ if(!empty($value)) {
+ return LoggerOptionConverter::substVars($value, $props);
+ }
+ }
- /**
- * Perform variable substitution in string $val from the
- * values of keys found with the {@link getSystemProperty()} method.
- *
- * The variable substitution delimeters are ${ and }.
- *
- *
For example, if the "MY_CONSTANT" contains "value", then
- * the call
- *
- * $s = LoggerOptionConverter::substituteVars("Value of key is ${MY_CONSTANT}.");
- *
- * will set the variable $s to "Value of key is value.".
- *
- * If no value could be found for the specified key, then the
- * $props parameter is searched, if the value could not
- * be found there, then substitution defaults to the empty string.
- *
- * For example, if {@link getSystemProperty()} cannot find any value for the key
- * "inexistentKey", then the call
- *
- * $s = LoggerOptionConverter::substVars("Value of inexistentKey is [${inexistentKey}]");
- *
- * will set $s to "Value of inexistentKey is []".
- *
- * A warn is thrown if $val contains a start delimeter "${"
- * which is not balanced by a stop delimeter "}" and an empty string is returned.
- *
- * @log4j-author Avy Sharell
- *
- * @param string $val The string on which variable substitution is performed.
- * @param array $props
- * @return string
- *
- * @static
- */
- public static function substVars($val, $props = null)
- {
- LoggerLog::debug("LoggerOptionConverter::substVars():val=[{$val}]");
-
- $sbuf = '';
- $i = 0;
- while(true) {
- $j = strpos($val, LOG4PHP_OPTION_CONVERTER_DELIM_START, $i);
- if ($j === false) {
- LoggerLog::debug("LoggerOptionConverter::substVars() no more variables");
- // no more variables
- if ($i == 0) { // this is a simple string
- LoggerLog::debug("LoggerOptionConverter::substVars() simple string");
- return $val;
- } else { // add the tail string which contails no variables and return the result.
- $sbuf .= substr($val, $i);
- LoggerLog::debug("LoggerOptionConverter::substVars():sbuf=[{$sbuf}]. Returning sbuf");
- return $sbuf;
- }
- } else {
-
- $sbuf .= substr($val, $i, $j-$i);
- LoggerLog::debug("LoggerOptionConverter::substVars():sbuf=[{$sbuf}]:i={$i}:j={$j}.");
- $k = strpos($val, LOG4PHP_OPTION_CONVERTER_DELIM_STOP, $j);
- if ($k === false) {
- LoggerLog::warn(
- "LoggerOptionConverter::substVars() " .
- "'{$val}' has no closing brace. Opening brace at position {$j}."
- );
- return '';
- } else {
- $j += LOG4PHP_OPTION_CONVERTER_DELIM_START_LEN;
- $key = substr($val, $j, $k - $j);
- // first try in System properties
- $replacement = LoggerOptionConverter::getSystemProperty($key, null);
- // then try props parameter
- if($replacement == null and $props !== null) {
- $replacement = @$props[$key];
- }
+ /**
+ * Perform variable substitution in string $val from the
+ * values of keys found with the {@link getSystemProperty()} method.
+ *
+ * The variable substitution delimeters are ${ and }.
+ *
+ *
For example, if the "MY_CONSTANT" contains "value", then
+ * the call
+ *
+ * $s = LoggerOptionConverter::substituteVars("Value of key is ${MY_CONSTANT}.");
+ *
+ * will set the variable $s to "Value of key is value.".
+ *
+ * If no value could be found for the specified key, then the
+ * $props parameter is searched, if the value could not
+ * be found there, then substitution defaults to the empty string.
+ *
+ * For example, if {@link getSystemProperty()} cannot find any value for the key
+ * "inexistentKey", then the call
+ *
+ * $s = LoggerOptionConverter::substVars("Value of inexistentKey is [${inexistentKey}]");
+ *
+ * will set $s to "Value of inexistentKey is []".
+ *
+ * A warn is thrown if $val contains a start delimeter "${"
+ * which is not balanced by a stop delimeter "}" and an empty string is returned.
+ *
+ * @log4j-author Avy Sharell
+ *
+ * @param string $val The string on which variable substitution is performed.
+ * @param array $props
+ * @return string
+ *
+ * @static
+ */
+ // TODO: this method doesn't work correctly with key = true, it needs key = "true" which is odd
+ public static function substVars($val, $props = null) {
+ $sbuf = '';
+ $i = 0;
+ while(true) {
+ $j = strpos($val, self::DELIM_START, $i);
+ if($j === false) {
+ // no more variables
+ if($i == 0) { // this is a simple string
+ return $val;
+ } else { // add the tail string which contails no variables and return the result.
+ $sbuf .= substr($val, $i);
+ return $sbuf;
+ }
+ } else {
+
+ $sbuf .= substr($val, $i, $j-$i);
+ $k = strpos($val, self::DELIM_STOP, $j);
+ if($k === false) {
+ // LoggerOptionConverter::substVars() has no closing brace. Opening brace
+ return '';
+ } else {
+ $j += self::START_LEN;
+ $key = substr($val, $j, $k - $j);
+ // first try in System properties
+ $replacement = LoggerOptionConverter::getSystemProperty($key, null);
+ // then try props parameter
+ if($replacement == null and $props !== null) {
+ $replacement = @$props[$key];
+ }
- if(!empty($replacement)) {
- // Do variable substitution on the replacement string
- // such that we can solve "Hello ${x2}" as "Hello p1"
- // the where the properties are
- // x1=p1
- // x2=${x1}
- $recursiveReplacement = LoggerOptionConverter::substVars($replacement, $props);
- $sbuf .= $recursiveReplacement;
- }
- $i = $k + LOG4PHP_OPTION_CONVERTER_DELIM_STOP_LEN;
- }
- }
- }
- }
+ if(!empty($replacement)) {
+ // Do variable substitution on the replacement string
+ // such that we can solve "Hello ${x2}" as "Hello p1"
+ // the where the properties are
+ // x1=p1
+ // x2=${x1}
+ $recursiveReplacement = LoggerOptionConverter::substVars($replacement, $props);
+ $sbuf .= $recursiveReplacement;
+ }
+ $i = $k + self::DELIM_STOP_LEN;
+ }
+ }
+ }
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/helpers/LoggerPatternConverter.php b/thirdparty/apache-log4php/src/main/php/helpers/LoggerPatternConverter.php
index a163c94..465bd1d 100644
--- a/thirdparty/apache-log4php/src/main/php/helpers/LoggerPatternConverter.php
+++ b/thirdparty/apache-log4php/src/main/php/helpers/LoggerPatternConverter.php
@@ -1,13 +1,13 @@
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 778046 $
* @package log4php
* @subpackage helpers
* @abstract
@@ -54,453 +49,89 @@ $GLOBALS['log4php.LoggerPatternConverter.spaces'] = array(" ", " ", " ", "
*/
class LoggerPatternConverter {
- /**
- * @var LoggerPatternConverter next converter in converter chain
- */
- var $next = null;
-
- var $min = -1;
- var $max = 0x7FFFFFFF;
- var $leftAlign = false;
-
- /**
- * Constructor
- *
- * @param LoggerFormattingInfo $fi
- */
- function LoggerPatternConverter($fi = null)
- {
- if ($fi !== null) {
- $this->min = $fi->min;
- $this->max = $fi->max;
- $this->leftAlign = $fi->leftAlign;
- }
- }
+ /**
+ * @var LoggerPatternConverter next converter in converter chain
+ */
+ var $next = null;
+
+ var $min = -1;
+ var $max = 0x7FFFFFFF;
+ var $leftAlign = false;
+
+ /**
+ * Constructor
+ *
+ * @param LoggerFormattingInfo $fi
+ */
+ function LoggerPatternConverter($fi = null) {
+ if($fi !== null) {
+ $this->min = $fi->min;
+ $this->max = $fi->max;
+ $this->leftAlign = $fi->leftAlign;
+ }
+ }
- /**
- * Derived pattern converters must override this method in order to
- * convert conversion specifiers in the correct way.
- *
- * @param LoggerLoggingEvent $event
- */
- function convert($event) {}
-
- /**
- * A template method for formatting in a converter specific way.
- *
- * @param string &$sbuf string buffer
- * @param LoggerLoggingEvent $e
- */
- function format(&$sbuf, $e)
- {
- LoggerLog::debug("LoggerPatternConverter::format() sbuf='$sbuf'");
-
- $s = $this->convert($e);
-
- LoggerLog::debug("LoggerPatternConverter::format() converted event is '$s'");
-
-
- if($s == null or empty($s)) {
- if(0 < $this->min)
- $this->spacePad($sbuf, $this->min);
- return;
- }
-
- $len = strlen($s);
-
- if($len > $this->max) {
- $sbuf .= substr($s , 0, ($len - $this->max));
- } elseif($len < $this->min) {
- if($this->leftAlign) {
- $sbuf .= $s;
- $this->spacePad($sbuf, ($this->min - $len));
- } else {
- $this->spacePad($sbuf, ($this->min - $len));
- $sbuf .= $s;
- }
- } else {
- $sbuf .= $s;
- }
- }
-
-
- /**
- * Fast space padding method.
- *
- * @param string &$sbuf string buffer
- * @param integer $length pad length
- *
- * @todo reimplement using PHP string functions
- */
- function spacePad(&$sbuf, $length)
- {
- LoggerLog::debug("LoggerPatternConverter::spacePad() sbuf='$sbuf' len='$length'");
-
- while($length >= 32) {
- $sbuf .= $GLOBALS['log4php.LoggerPatternConverter.spaces'][5];
- $length -= 32;
- }
-
- for($i = 4; $i >= 0; $i--) {
- if(($length & (1<<$i)) != 0) {
- $sbuf .= $GLOBALS['log4php.LoggerPatternConverter.spaces'][$i];
- }
- }
-
- // $sbuf = str_pad($sbuf, $length);
- }
-}
-
-// ---------------------------------------------------------------------
-// PatternConverters
-// ---------------------------------------------------------------------
-
-/**
- * @author Marco Vassura
- * @package log4php
- * @subpackage helpers
- */
-class LoggerBasicPatternConverter extends LoggerPatternConverter {
-
- /**
- * @var integer
- */
- var $type;
-
- /**
- * Constructor
- *
- * @param string $formattingInfo
- * @param integer $type
- */
- function LoggerBasicPatternConverter($formattingInfo, $type)
- {
- LoggerLog::debug("LoggerBasicPatternConverter::LoggerBasicPatternConverter() type='$type'");
-
- $this->LoggerPatternConverter($formattingInfo);
- $this->type = $type;
- }
-
- /**
- * @param LoggerLoggingEvent $event
- * @return string
- */
- function convert($event)
- {
- switch($this->type) {
- case LOG4PHP_LOGGER_PATTERN_PARSER_RELATIVE_TIME_CONVERTER:
- $timeStamp = $event->getTimeStamp();
- $startTime = LoggerLoggingEvent::getStartTime();
- return (string)(int)($timeStamp * 1000 - $startTime * 1000);
-
- case LOG4PHP_LOGGER_PATTERN_PARSER_THREAD_CONVERTER:
- return $event->getThreadName();
-
- case LOG4PHP_LOGGER_PATTERN_PARSER_LEVEL_CONVERTER:
- $level = $event->getLevel();
- return $level->toString();
-
- case LOG4PHP_LOGGER_PATTERN_PARSER_NDC_CONVERTER:
- return $event->getNDC();
-
- case LOG4PHP_LOGGER_PATTERN_PARSER_MESSAGE_CONVERTER:
- return $event->getRenderedMessage();
-
- default:
- return '';
- }
- }
-}
-
-/**
- * @author Marco Vassura
- * @package log4php
- * @subpackage helpers
- */
-class LoggerLiteralPatternConverter extends LoggerPatternConverter {
-
- /**
- * @var string
- */
- var $literal;
-
- /**
- * Constructor
- *
- * @param string $value
- */
- function LoggerLiteralPatternConverter($value)
- {
- LoggerLog::debug("LoggerLiteralPatternConverter::LoggerLiteralPatternConverter() value='$value'");
-
- $this->literal = $value;
- }
-
- /**
- * @param string &$sbuf
- * @param LoggerLoggingEvent $event
- */
- function format(&$sbuf, $event)
- {
- $sbuf .= $this->literal;
- }
-
- /**
- * @param LoggerLoggingEvent $event
- * @return string
- */
- function convert($event)
- {
- return $this->literal;
- }
-}
-
-/**
- * @author Marco Vassura
- * @package log4php
- * @subpackage helpers
- */
-class LoggerDatePatternConverter extends LoggerPatternConverter {
-
- /**
- * @var string
- */
- var $df;
-
- /**
- * Constructor
- *
- * @param string $formattingInfo
- * @param string $df
- */
- function LoggerDatePatternConverter($formattingInfo, $df)
- {
- LoggerLog::debug("LoggerDatePatternConverter::LoggerDatePatternConverter() dateFormat='$df'");
-
- $this->LoggerPatternConverter($formattingInfo);
- $this->df = $df;
- }
-
- /**
- * @param LoggerLoggingEvent $event
- * @return string
- */
- function convert($event)
- {
- $timeStamp = $event->getTimeStamp();
- $usecs = round(($timeStamp - (int)$timeStamp) * 1000);
- $this->df = str_replace("\u", "u", ereg_replace("[^\\]u", sprintf(',%03d', $usecs), $this->df));
-
- return date($this->df, $event->getTimeStamp());
-
- }
-}
-
-/**
- * @author Marco Vassura
- * @package log4php
- * @subpackage helpers
- */
-class LoggerMDCPatternConverter extends LoggerPatternConverter {
-
- /**
- * @var string
- */
- var $key;
-
- /**
- * Constructor
- *
- * @param string $formattingInfo
- * @param string $key
- */
- function LoggerMDCPatternConverter($formattingInfo, $key)
- {
- LoggerLog::debug("LoggerMDCPatternConverter::LoggerMDCPatternConverter() key='$key'");
-
- $this->LoggerPatternConverter($formattingInfo);
- $this->key = $key;
- }
-
- /**
- * @param LoggerLoggingEvent $event
- * @return string
- */
- function convert($event)
- {
- return $event->getMDC($this->key);
- }
-}
-
-/**
- * @author Marco Vassura
- * @package log4php
- * @subpackage helpers
- */
-class LoggerLocationPatternConverter extends LoggerPatternConverter {
-
- /**
- * @var integer
- */
- var $type;
-
- /**
- * Constructor
- *
- * @param string $formattingInfo
- * @param integer $type
- */
- function LoggerLocationPatternConverter($formattingInfo, $type)
- {
- LoggerLog::debug("LoggerLocationPatternConverter::LoggerLocationPatternConverter() type='$type'");
-
- $this->LoggerPatternConverter($formattingInfo);
- $this->type = $type;
- }
-
- /**
- * @param LoggerLoggingEvent $event
- * @return string
- */
- function convert($event)
- {
- $locationInfo = $event->getLocationInformation();
- switch($this->type) {
- case LOG4PHP_LOGGER_PATTERN_PARSER_FULL_LOCATION_CONVERTER:
- return $locationInfo->fullInfo;
- case LOG4PHP_LOGGER_PATTERN_PARSER_METHOD_LOCATION_CONVERTER:
- return $locationInfo->getMethodName();
- case LOG4PHP_LOGGER_PATTERN_PARSER_LINE_LOCATION_CONVERTER:
- return $locationInfo->getLineNumber();
- case LOG4PHP_LOGGER_PATTERN_PARSER_FILE_LOCATION_CONVERTER:
- return $locationInfo->getFileName();
- default:
- return '';
- }
- }
-}
-
-/**
- * @author Marco Vassura
- * @package log4php
- * @subpackage helpers
- * @abstract
- */
-class LoggerNamedPatternConverter extends LoggerPatternConverter {
-
- /**
- * @var integer
- */
- var $precision;
-
- /**
- * Constructor
- *
- * @param string $formattingInfo
- * @param integer $precision
- */
- function LoggerNamedPatternConverter($formattingInfo, $precision)
- {
- LoggerLog::debug("LoggerNamedPatternConverter::LoggerNamedPatternConverter() precision='$precision'");
-
- $this->LoggerPatternConverter($formattingInfo);
- $this->precision = $precision;
- }
-
- /**
- * @param LoggerLoggingEvent $event
- * @return string
- * @abstract
- */
- function getFullyQualifiedName($event)
- {
- // abstract
- return;
- }
-
- /**
- * @param LoggerLoggingEvent $event
- * @return string
- */
- function convert($event)
- {
- $n = $this->getFullyQualifiedName($event);
- if ($this->precision <= 0) {
- return $n;
- } else {
- $len = strlen($n);
-
- // We substract 1 from 'len' when assigning to 'end' to avoid out of
- // bounds exception in return r.substring(end+1, len). This can happen if
- // precision is 1 and the category name ends with a dot.
- $end = $len -1 ;
- for($i = $this->precision; $i > 0; $i--) {
- $end = strrpos(substr($n, 0, ($end - 1)), '.');
- if ($end == false)
- return $n;
- }
- return substr($n, ($end + 1), $len);
- }
- }
-}
-
-/**
- * @author Marco Vassura
- * @package log4php
- * @subpackage helpers
- */
-class LoggerClassNamePatternConverter extends LoggerNamedPatternConverter {
-
- /**
- * Constructor
- *
- * @param string $formattingInfo
- * @param integer $precision
- */
- function LoggerClassNamePatternConverter($formattingInfo, $precision)
- {
- LoggerLog::debug("LoggerClassNamePatternConverter::LoggerClassNamePatternConverter() precision='$precision'");
-
- $this->LoggerNamedPatternConverter($formattingInfo, $precision);
- }
-
- /**
- * @param LoggerLoggingEvent $event
- * @return string
- */
- function getFullyQualifiedName($event)
- {
- return $event->fqcn;
- }
+ /**
+ * Derived pattern converters must override this method in order to
+ * convert conversion specifiers in the correct way.
+ *
+ * @param LoggerLoggingEvent $event
+ */
+ function convert($event) {}
+
+ /**
+ * A template method for formatting in a converter specific way.
+ *
+ * @param string &$sbuf string buffer
+ * @param LoggerLoggingEvent $e
+ */
+ function format(&$sbuf, $e) {
+ $s = $this->convert($e);
+
+ if($s == null or empty($s)) {
+ if(0 < $this->min) {
+ $this->spacePad($sbuf, $this->min);
+ }
+ return;
+ }
+
+ $len = strlen($s);
+
+ if($len > $this->max) {
+ $sbuf .= substr($s , 0, ($len - $this->max));
+ } else if($len < $this->min) {
+ if($this->leftAlign) {
+ $sbuf .= $s;
+ $this->spacePad($sbuf, ($this->min - $len));
+ } else {
+ $this->spacePad($sbuf, ($this->min - $len));
+ $sbuf .= $s;
+ }
+ } else {
+ $sbuf .= $s;
+ }
+ }
+
+ /**
+ * Fast space padding method.
+ *
+ * @param string &$sbuf string buffer
+ * @param integer $length pad length
+ *
+ * @todo reimplement using PHP string functions
+ */
+ function spacePad(&$sbuf, $length) {
+ while($length >= 32) {
+ $sbuf .= $GLOBALS['log4php.LoggerPatternConverter.spaces'][5];
+ $length -= 32;
+ }
+
+ for($i = 4; $i >= 0; $i--) {
+ if(($length & (1<<$i)) != 0) {
+ $sbuf .= $GLOBALS['log4php.LoggerPatternConverter.spaces'][$i];
+ }
+ }
+
+ // $sbuf = str_pad($sbuf, $length);
+ }
}
-
-/**
- * @author Marco Vassura
- * @package log4php
- * @subpackage helpers
- */
-class LoggerCategoryPatternConverter extends LoggerNamedPatternConverter {
-
- /**
- * Constructor
- *
- * @param string $formattingInfo
- * @param integer $precision
- */
- function LoggerCategoryPatternConverter($formattingInfo, $precision)
- {
- LoggerLog::debug("LoggerCategoryPatternConverter::LoggerCategoryPatternConverter() precision='$precision'");
-
- $this->LoggerNamedPatternConverter($formattingInfo, $precision);
- }
-
- /**
- * @param LoggerLoggingEvent $event
- * @return string
- */
- function getFullyQualifiedName($event)
- {
- return $event->getLoggerName();
- }
-}
-
diff --git a/thirdparty/apache-log4php/src/main/php/helpers/LoggerPatternParser.php b/thirdparty/apache-log4php/src/main/php/helpers/LoggerPatternParser.php
index fd69105..ff2429d 100644
--- a/thirdparty/apache-log4php/src/main/php/helpers/LoggerPatternParser.php
+++ b/thirdparty/apache-log4php/src/main/php/helpers/LoggerPatternParser.php
@@ -1,13 +1,13 @@
It is this class that parses conversion patterns and creates
* a chained list of {@link LoggerPatternConverter} converters.
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 771204 $
* @package log4php
* @subpackage helpers
*
@@ -86,323 +60,288 @@ define('LOG4PHP_LOGGER_PATTERN_PARSER_DATE_FORMAT_DATE', 'd M Y H:i:s,u');
*/
class LoggerPatternParser {
- var $state;
- var $currentLiteral;
- var $patternLength;
- var $i;
-
- /**
- * @var LoggerPatternConverter
- */
- var $head = null;
-
- /**
- * @var LoggerPatternConverter
- */
- var $tail = null;
-
- /**
- * @var LoggerFormattingInfo
- */
- var $formattingInfo;
-
- /**
- * @var string pattern to parse
- */
- var $pattern;
-
- /**
- * Constructor
- *
- * @param string $pattern
- */
- function LoggerPatternParser($pattern)
- {
- LoggerLog::debug("LoggerPatternParser::LoggerPatternParser() pattern='$pattern'");
-
- $this->pattern = $pattern;
- $this->patternLength = strlen($pattern);
- $this->formattingInfo = new LoggerFormattingInfo();
- $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_LITERAL_STATE;
- }
-
- /**
- * @param LoggerPatternConverter $pc
- */
- function addToList($pc)
- {
- // LoggerLog::debug("LoggerPatternParser::addToList()");
-
- if($this->head == null) {
- $this->head = $pc;
- $this->tail =& $this->head;
- } else {
- $this->tail->next = $pc;
- $this->tail =& $this->tail->next;
- }
- }
+ var $state;
+ var $currentLiteral;
+ var $patternLength;
+ var $i;
+
+ /**
+ * @var LoggerPatternConverter
+ */
+ var $head = null;
+
+ /**
+ * @var LoggerPatternConverter
+ */
+ var $tail = null;
+
+ /**
+ * @var LoggerFormattingInfo
+ */
+ var $formattingInfo;
+
+ /**
+ * @var string pattern to parse
+ */
+ var $pattern;
- /**
- * @return string
- */
- function extractOption()
- {
- if(($this->i < $this->patternLength) and ($this->pattern{$this->i} == '{')) {
- $end = strpos($this->pattern, '}' , $this->i);
- if ($end !== false) {
- $r = substr($this->pattern, ($this->i + 1), ($end - $this->i - 1));
- $this->i= $end + 1;
- return $r;
- }
- }
- return null;
- }
+ /**
+ * Constructor
+ *
+ * @param string $pattern
+ */
+ function LoggerPatternParser($pattern) {
+ $this->pattern = $pattern;
+ $this->patternLength = strlen($pattern);
+ $this->formattingInfo = new LoggerFormattingInfo();
+ $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_LITERAL_STATE;
+ }
- /**
- * The option is expected to be in decimal and positive. In case of
- * error, zero is returned.
- */
- function extractPrecisionOption()
- {
- $opt = $this->extractOption();
- $r = 0;
- if ($opt !== null) {
- if (is_numeric($opt)) {
- $r = (int)$opt;
- if($r <= 0) {
- LoggerLog::warn("Precision option ({$opt}) isn't a positive integer.");
- $r = 0;
- }
- } else {
- LoggerLog::warn("Category option \"{$opt}\" not a decimal integer.");
- }
- }
- return $r;
- }
+ /**
+ * @param LoggerPatternConverter $pc
+ */
+ function addToList($pc) {
+ if($this->head == null) {
+ $this->head = $pc;
+ $this->tail =& $this->head;
+ } else {
+ $this->tail->next = $pc;
+ $this->tail =& $this->tail->next;
+ }
+ }
- function parse()
- {
- LoggerLog::debug("LoggerPatternParser::parse()");
-
- $c = '';
- $this->i = 0;
- $this->currentLiteral = '';
- while ($this->i < $this->patternLength) {
- $c = $this->pattern{$this->i++};
-// LoggerLog::debug("LoggerPatternParser::parse() char is now '$c' and currentLiteral is '{$this->currentLiteral}'");
- switch($this->state) {
- case LOG4PHP_LOGGER_PATTERN_PARSER_LITERAL_STATE:
- // LoggerLog::debug("LoggerPatternParser::parse() state is 'LOG4PHP_LOGGER_PATTERN_PARSER_LITERAL_STATE'");
- // In literal state, the last char is always a literal.
- if($this->i == $this->patternLength) {
- $this->currentLiteral .= $c;
- continue;
- }
- if($c == LOG4PHP_LOGGER_PATTERN_PARSER_ESCAPE_CHAR) {
- // LoggerLog::debug("LoggerPatternParser::parse() char is an escape char");
- // peek at the next char.
- switch($this->pattern{$this->i}) {
- case LOG4PHP_LOGGER_PATTERN_PARSER_ESCAPE_CHAR:
- // LoggerLog::debug("LoggerPatternParser::parse() next char is an escape char");
- $this->currentLiteral .= $c;
- $this->i++; // move pointer
- break;
- case 'n':
- // LoggerLog::debug("LoggerPatternParser::parse() next char is 'n'");
- $this->currentLiteral .= LOG4PHP_LINE_SEP;
- $this->i++; // move pointer
- break;
- default:
- if(strlen($this->currentLiteral) != 0) {
- $this->addToList(new LoggerLiteralPatternConverter($this->currentLiteral));
- LoggerLog::debug("LoggerPatternParser::parse() Parsed LITERAL converter: \"{$this->currentLiteral}\".");
- }
- $this->currentLiteral = $c;
- $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_CONVERTER_STATE;
- $this->formattingInfo->reset();
- }
- } else {
- $this->currentLiteral .= $c;
- }
- break;
- case LOG4PHP_LOGGER_PATTERN_PARSER_CONVERTER_STATE:
- // LoggerLog::debug("LoggerPatternParser::parse() state is 'LOG4PHP_LOGGER_PATTERN_PARSER_CONVERTER_STATE'");
- $this->currentLiteral .= $c;
- switch($c) {
- case '-':
- $this->formattingInfo->leftAlign = true;
- break;
- case '.':
- $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_DOT_STATE;
- break;
- default:
- if(ord($c) >= ord('0') and ord($c) <= ord('9')) {
- $this->formattingInfo->min = ord($c) - ord('0');
- $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_MIN_STATE;
- } else {
- $this->finalizeConverter($c);
- }
- } // switch
- break;
- case LOG4PHP_LOGGER_PATTERN_PARSER_MIN_STATE:
- // LoggerLog::debug("LoggerPatternParser::parse() state is 'LOG4PHP_LOGGER_PATTERN_PARSER_MIN_STATE'");
- $this->currentLiteral .= $c;
- if(ord($c) >= ord('0') and ord($c) <= ord('9')) {
- $this->formattingInfo->min = ($this->formattingInfo->min * 10) + (ord($c) - ord('0'));
- } elseif ($c == '.') {
- $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_DOT_STATE;
- } else {
- $this->finalizeConverter($c);
- }
- break;
- case LOG4PHP_LOGGER_PATTERN_PARSER_DOT_STATE:
- // LoggerLog::debug("LoggerPatternParser::parse() state is 'LOG4PHP_LOGGER_PATTERN_PARSER_DOT_STATE'");
- $this->currentLiteral .= $c;
- if(ord($c) >= ord('0') and ord($c) <= ord('9')) {
- $this->formattingInfo->max = ord($c) - ord('0');
- $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_MAX_STATE;
- } else {
- LoggerLog::warn("LoggerPatternParser::parse() Error occured in position {$this->i}. Was expecting digit, instead got char \"{$c}\".");
- $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_LITERAL_STATE;
- }
- break;
- case LOG4PHP_LOGGER_PATTERN_PARSER_MAX_STATE:
- // LoggerLog::debug("LoggerPatternParser::parse() state is 'LOG4PHP_LOGGER_PATTERN_PARSER_MAX_STATE'");
- $this->currentLiteral .= $c;
- if(ord($c) >= ord('0') and ord($c) <= ord('9')) {
- $this->formattingInfo->max = ($this->formattingInfo->max * 10) + (ord($c) - ord('0'));
- } else {
- $this->finalizeConverter($c);
- $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_LITERAL_STATE;
- }
- break;
- } // switch
- } // while
- if(strlen($this->currentLiteral) != 0) {
- $this->addToList(new LoggerLiteralPatternConverter($this->currentLiteral));
- // LoggerLog::debug("LoggerPatternParser::parse() Parsed LITERAL converter: \"{$this->currentLiteral}\".");
- }
- return $this->head;
- }
+ /**
+ * @return string
+ */
+ function extractOption() {
+ if(($this->i < $this->patternLength) and ($this->pattern{$this->i} == '{')) {
+ $end = strpos($this->pattern, '}' , $this->i);
+ if($end !== false) {
+ $r = substr($this->pattern, ($this->i + 1), ($end - $this->i - 1));
+ $this->i= $end + 1;
+ return $r;
+ }
+ }
+ return null;
+ }
- function finalizeConverter($c)
- {
- LoggerLog::debug("LoggerPatternParser::finalizeConverter() with char '$c'");
+ /**
+ * The option is expected to be in decimal and positive. In case of
+ * error, zero is returned.
+ */
+ function extractPrecisionOption() {
+ $opt = $this->extractOption();
+ $r = 0;
+ if($opt !== null) {
+ if(is_numeric($opt)) {
+ $r = (int)$opt;
+ if($r <= 0) {
+ $r = 0;
+ }
+ }
+ }
+ return $r;
+ }
- $pc = null;
- switch($c) {
- case 'c':
- $pc = new LoggerCategoryPatternConverter($this->formattingInfo, $this->extractPrecisionOption());
- LoggerLog::debug("LoggerPatternParser::finalizeConverter() CATEGORY converter.");
- $this->currentLiteral = '';
- break;
- case 'C':
- $pc = new LoggerClassNamePatternConverter($this->formattingInfo, $this->extractPrecisionOption());
- LoggerLog::debug("LoggerPatternParser::finalizeConverter() CLASSNAME converter.");
- $this->currentLiteral = '';
- break;
- case 'd':
- $dateFormatStr = LOG4PHP_LOGGER_PATTERN_PARSER_DATE_FORMAT_ISO8601; // ISO8601_DATE_FORMAT;
- $dOpt = $this->extractOption();
+ function parse() {
+ $c = '';
+ $this->i = 0;
+ $this->currentLiteral = '';
+ while($this->i < $this->patternLength) {
+ $c = $this->pattern{$this->i++};
+// LoggerLog::debug("LoggerPatternParser::parse() char is now '$c' and currentLiteral is '{$this->currentLiteral}'");
+ switch($this->state) {
+ case LOG4PHP_LOGGER_PATTERN_PARSER_LITERAL_STATE:
+ // LoggerLog::debug("LoggerPatternParser::parse() state is 'LOG4PHP_LOGGER_PATTERN_PARSER_LITERAL_STATE'");
+ // In literal state, the last char is always a literal.
+ if($this->i == $this->patternLength) {
+ $this->currentLiteral .= $c;
+ continue;
+ }
+ if($c == LOG4PHP_LOGGER_PATTERN_PARSER_ESCAPE_CHAR) {
+ // LoggerLog::debug("LoggerPatternParser::parse() char is an escape char");
+ // peek at the next char.
+ switch($this->pattern{$this->i}) {
+ case LOG4PHP_LOGGER_PATTERN_PARSER_ESCAPE_CHAR:
+ // LoggerLog::debug("LoggerPatternParser::parse() next char is an escape char");
+ $this->currentLiteral .= $c;
+ $this->i++; // move pointer
+ break;
+ case 'n':
+ // LoggerLog::debug("LoggerPatternParser::parse() next char is 'n'");
+ $this->currentLiteral .= PHP_EOL;
+ $this->i++; // move pointer
+ break;
+ default:
+ if(strlen($this->currentLiteral) != 0) {
+ $this->addToList(new LoggerLiteralPatternConverter($this->currentLiteral));
+ }
+ $this->currentLiteral = $c;
+ $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_CONVERTER_STATE;
+ $this->formattingInfo->reset();
+ }
+ } else {
+ $this->currentLiteral .= $c;
+ }
+ break;
+ case LOG4PHP_LOGGER_PATTERN_PARSER_CONVERTER_STATE:
+ // LoggerLog::debug("LoggerPatternParser::parse() state is 'LOG4PHP_LOGGER_PATTERN_PARSER_CONVERTER_STATE'");
+ $this->currentLiteral .= $c;
+ switch($c) {
+ case '-':
+ $this->formattingInfo->leftAlign = true;
+ break;
+ case '.':
+ $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_DOT_STATE;
+ break;
+ default:
+ if(ord($c) >= ord('0') and ord($c) <= ord('9')) {
+ $this->formattingInfo->min = ord($c) - ord('0');
+ $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_MIN_STATE;
+ } else {
+ $this->finalizeConverter($c);
+ }
+ } // switch
+ break;
+ case LOG4PHP_LOGGER_PATTERN_PARSER_MIN_STATE:
+ // LoggerLog::debug("LoggerPatternParser::parse() state is 'LOG4PHP_LOGGER_PATTERN_PARSER_MIN_STATE'");
+ $this->currentLiteral .= $c;
+ if(ord($c) >= ord('0') and ord($c) <= ord('9')) {
+ $this->formattingInfo->min = ($this->formattingInfo->min * 10) + (ord($c) - ord('0'));
+ } else if ($c == '.') {
+ $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_DOT_STATE;
+ } else {
+ $this->finalizeConverter($c);
+ }
+ break;
+ case LOG4PHP_LOGGER_PATTERN_PARSER_DOT_STATE:
+ // LoggerLog::debug("LoggerPatternParser::parse() state is 'LOG4PHP_LOGGER_PATTERN_PARSER_DOT_STATE'");
+ $this->currentLiteral .= $c;
+ if(ord($c) >= ord('0') and ord($c) <= ord('9')) {
+ $this->formattingInfo->max = ord($c) - ord('0');
+ $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_MAX_STATE;
+ } else {
+ $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_LITERAL_STATE;
+ }
+ break;
+ case LOG4PHP_LOGGER_PATTERN_PARSER_MAX_STATE:
+ // LoggerLog::debug("LoggerPatternParser::parse() state is 'LOG4PHP_LOGGER_PATTERN_PARSER_MAX_STATE'");
+ $this->currentLiteral .= $c;
+ if(ord($c) >= ord('0') and ord($c) <= ord('9')) {
+ $this->formattingInfo->max = ($this->formattingInfo->max * 10) + (ord($c) - ord('0'));
+ } else {
+ $this->finalizeConverter($c);
+ $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_LITERAL_STATE;
+ }
+ break;
+ } // switch
+ } // while
+ if(strlen($this->currentLiteral) != 0) {
+ $this->addToList(new LoggerLiteralPatternConverter($this->currentLiteral));
+ // LoggerLog::debug("LoggerPatternParser::parse() Parsed LITERAL converter: \"{$this->currentLiteral}\".");
+ }
+ return $this->head;
+ }
- if($dOpt !== null)
- $dateFormatStr = $dOpt;
-
- if ($dateFormatStr == 'ISO8601') {
- $df = LOG4PHP_LOGGER_PATTERN_PARSER_DATE_FORMAT_ISO8601;
- } elseif($dateFormatStr == 'ABSOLUTE') {
- $df = LOG4PHP_LOGGER_PATTERN_PARSER_DATE_FORMAT_ABSOLUTE;
- } elseif($dateFormatStr == 'DATE') {
- $df = LOG4PHP_LOGGER_PATTERN_PARSER_DATE_FORMAT_DATE;
- } else {
- $df = $dateFormatStr;
- if ($df == null) {
- $df = LOG4PHP_LOGGER_PATTERN_PARSER_DATE_FORMAT_ISO8601;
- }
- }
- $pc = new LoggerDatePatternConverter($this->formattingInfo, $df);
- $this->currentLiteral = '';
- break;
- case 'F':
- $pc = new LoggerLocationPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_FILE_LOCATION_CONVERTER);
- LoggerLog::debug("LoggerPatternParser::finalizeConverter() File name converter.");
- $this->currentLiteral = '';
- break;
- case 'l':
- $pc = new LoggerLocationPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_FULL_LOCATION_CONVERTER);
- LoggerLog::debug("LoggerPatternParser::finalizeConverter() Location converter.");
- $this->currentLiteral = '';
- break;
- case 'L':
- $pc = new LoggerLocationPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_LINE_LOCATION_CONVERTER);
- LoggerLog::debug("LoggerPatternParser::finalizeConverter() LINE NUMBER converter.");
- $this->currentLiteral = '';
- break;
- case 'm':
- $pc = new LoggerBasicPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_MESSAGE_CONVERTER);
- LoggerLog::debug("LoggerPatternParser::finalizeConverter() MESSAGE converter.");
- $this->currentLiteral = '';
- break;
- case 'M':
- $pc = new LoggerLocationPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_METHOD_LOCATION_CONVERTER);
- $this->currentLiteral = '';
- break;
- case 'p':
- $pc = new LoggerBasicPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_LEVEL_CONVERTER);
- $this->currentLiteral = '';
- break;
- case 'r':
- $pc = new LoggerBasicPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_RELATIVE_TIME_CONVERTER);
- LoggerLog::debug("LoggerPatternParser::finalizeConverter() RELATIVE TIME converter.");
- $this->currentLiteral = '';
- break;
- case 't':
- $pc = new LoggerBasicPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_THREAD_CONVERTER);
- LoggerLog::debug("LoggerPatternParser::finalizeConverter() THREAD converter.");
- $this->currentLiteral = '';
- break;
- case 'u':
- if($this->i < $this->patternLength) {
- $cNext = $this->pattern{$this->i};
- if(ord($cNext) >= ord('0') and ord($cNext) <= ord('9')) {
- $pc = new LoggerUserFieldPatternConverter($this->formattingInfo, (string)(ord($cNext) - ord('0')));
- LoggerLog::debug("LoggerPatternParser::finalizeConverter() USER converter [{$cNext}].");
- $this->currentLiteral = '';
- $this->i++;
- } else {
- LoggerLog::warn("LoggerPatternParser::finalizeConverter() Unexpected char '{$cNext}' at position {$this->i}.");
- }
- }
- break;
- case 'x':
- $pc = new LoggerBasicPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_NDC_CONVERTER);
- LoggerLog::debug("LoggerPatternParser::finalizeConverter() NDC converter.");
- $this->currentLiteral = '';
- break;
+ function finalizeConverter($c) {
+ $pc = null;
+ switch($c) {
+ case 'c':
+ $pc = new LoggerCategoryPatternConverter($this->formattingInfo, $this->extractPrecisionOption());
+ $this->currentLiteral = '';
+ break;
+ case 'C':
+ $pc = new LoggerClassNamePatternConverter($this->formattingInfo, $this->extractPrecisionOption());
+ $this->currentLiteral = '';
+ break;
+ case 'd':
+ $dateFormatStr = LOG4PHP_LOGGER_PATTERN_PARSER_DATE_FORMAT_ISO8601; // ISO8601_DATE_FORMAT;
+ $dOpt = $this->extractOption();
- case 'X':
- $xOpt = $this->extractOption();
- $pc = new LoggerMDCPatternConverter($this->formattingInfo, $xOpt);
- LoggerLog::debug("LoggerPatternParser::finalizeConverter() MDC converter.");
- $this->currentLiteral = '';
- break;
- default:
- LoggerLog::warn("LoggerPatternParser::finalizeConverter() Unexpected char [$c] at position {$this->i} in conversion pattern.");
- $pc = new LoggerLiteralPatternConverter($this->currentLiteral);
- $this->currentLiteral = '';
- }
- $this->addConverter($pc);
- }
+ if($dOpt !== null)
+ $dateFormatStr = $dOpt;
+
+ if($dateFormatStr == 'ISO8601') {
+ $df = LOG4PHP_LOGGER_PATTERN_PARSER_DATE_FORMAT_ISO8601;
+ } else if($dateFormatStr == 'ABSOLUTE') {
+ $df = LOG4PHP_LOGGER_PATTERN_PARSER_DATE_FORMAT_ABSOLUTE;
+ } else if($dateFormatStr == 'DATE') {
+ $df = LOG4PHP_LOGGER_PATTERN_PARSER_DATE_FORMAT_DATE;
+ } else {
+ $df = $dateFormatStr;
+ if($df == null) {
+ $df = LOG4PHP_LOGGER_PATTERN_PARSER_DATE_FORMAT_ISO8601;
+ }
+ }
+ $pc = new LoggerDatePatternConverter($this->formattingInfo, $df);
+ $this->currentLiteral = '';
+ break;
+ case 'F':
+ $pc = new LoggerLocationPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_FILE_LOCATION_CONVERTER);
+ $this->currentLiteral = '';
+ break;
+ case 'l':
+ $pc = new LoggerLocationPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_FULL_LOCATION_CONVERTER);
+ $this->currentLiteral = '';
+ break;
+ case 'L':
+ $pc = new LoggerLocationPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_LINE_LOCATION_CONVERTER);
+ $this->currentLiteral = '';
+ break;
+ case 'm':
+ $pc = new LoggerBasicPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_MESSAGE_CONVERTER);
+ $this->currentLiteral = '';
+ break;
+ case 'M':
+ $pc = new LoggerLocationPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_METHOD_LOCATION_CONVERTER);
+ $this->currentLiteral = '';
+ break;
+ case 'p':
+ $pc = new LoggerBasicPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_LEVEL_CONVERTER);
+ $this->currentLiteral = '';
+ break;
+ case 'r':
+ $pc = new LoggerBasicPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_RELATIVE_TIME_CONVERTER);
+ $this->currentLiteral = '';
+ break;
+ case 't':
+ $pc = new LoggerBasicPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_THREAD_CONVERTER);
+ $this->currentLiteral = '';
+ break;
+ case 'u':
+ if($this->i < $this->patternLength) {
+ $cNext = $this->pattern{$this->i};
+ if(ord($cNext) >= ord('0') and ord($cNext) <= ord('9')) {
+ $pc = new LoggerUserFieldPatternConverter($this->formattingInfo, (string)(ord($cNext) - ord('0')));
+ $this->currentLiteral = '';
+ $this->i++;
+ }
+ }
+ break;
+ case 'x':
+ $pc = new LoggerBasicPatternConverter($this->formattingInfo, LOG4PHP_LOGGER_PATTERN_PARSER_NDC_CONVERTER);
+ $this->currentLiteral = '';
+ break;
+ case 'X':
+ $xOpt = $this->extractOption();
+ $pc = new LoggerMDCPatternConverter($this->formattingInfo, $xOpt);
+ $this->currentLiteral = '';
+ break;
+ default:
+ $pc = new LoggerLiteralPatternConverter($this->currentLiteral);
+ $this->currentLiteral = '';
+ }
+ $this->addConverter($pc);
+ }
- function addConverter($pc)
- {
- $this->currentLiteral = '';
- // Add the pattern converter to the list.
- $this->addToList($pc);
- // Next pattern is assumed to be a literal.
- $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_LITERAL_STATE;
- // Reset formatting info
- $this->formattingInfo->reset();
- }
+ function addConverter($pc) {
+ $this->currentLiteral = '';
+ // Add the pattern converter to the list.
+ $this->addToList($pc);
+ // Next pattern is assumed to be a literal.
+ $this->state = LOG4PHP_LOGGER_PATTERN_PARSER_LITERAL_STATE;
+ // Reset formatting info
+ $this->formattingInfo->reset();
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/helpers/LoggerTransform.php b/thirdparty/apache-log4php/src/main/php/helpers/LoggerTransform.php
deleted file mode 100644
index 9d723d1..0000000
--- a/thirdparty/apache-log4php/src/main/php/helpers/LoggerTransform.php
+++ /dev/null
@@ -1,95 +0,0 @@
-');
-define('LOG4PHP_LOGGER_TRANSFORM_CDATA_PSEUDO_END', ']]>');
-define('LOG4PHP_LOGGER_TRANSFORM_CDATA_EMBEDDED_END',
- LOG4PHP_LOGGER_TRANSFORM_CDATA_END .
- LOG4PHP_LOGGER_TRANSFORM_CDATA_PSEUDO_END .
- LOG4PHP_LOGGER_TRANSFORM_CDATA_START
-);
-
-/**
- * Utility class for transforming strings.
- *
- * @author Marco Vassura
- * @package log4php
- * @subpackage helpers
- * @since 0.7
- */
-class LoggerTransform {
-
- /**
- * This method takes a string which may contain HTML tags (ie,
- * <b>, <table>, etc) and replaces any '<' and '>'
- * characters with respective predefined entity references.
- *
- * @param string $input The text to be converted.
- * @return string The input string with the characters '<' and '>' replaced with
- * < and > respectively.
- * @static
- */
- function escapeTags($input)
- {
- //Check if the string is null or zero length -- if so, return
- //what was sent in.
-
- if(empty($input))
- return $input;
-
- //Use a StringBuffer in lieu of String concatenation -- it is
- //much more efficient this way.
-
- return htmlspecialchars($input, ENT_NOQUOTES);
- }
-
- /**
- * Ensures that embeded CDEnd strings (]]>) are handled properly
- * within message, NDC and throwable tag text.
- *
- * @param string $buf String holding the XML data to this point. The
- * initial CDStart ()
- * of the CDATA section are the responsibility of
- * the calling method.
- * @param string &str The String that is inserted into an existing
- * CDATA Section within buf.
- * @static
- */
- function appendEscapingCDATA(&$buf, $str)
- {
- if(empty($str))
- return;
-
- $rStr = str_replace(
- LOG4PHP_LOGGER_TRANSFORM_CDATA_END,
- LOG4PHP_LOGGER_TRANSFORM_CDATA_EMBEDDED_END,
- $str
- );
- $buf .= $rStr;
- }
-}
diff --git a/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutHtml.php b/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutHtml.php
index d956e1b..2e7edd7 100644
--- a/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutHtml.php
+++ b/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutHtml.php
@@ -21,36 +21,11 @@
*/
/**
- * @ignore
- */
-if (!defined('LOG4PHP_DIR')) define('LOG4PHP_DIR', dirname(__FILE__) . '/..');
-
-if (!defined('LOG4PHP_LINE_SEP')) {
- if (substr(php_uname(), 0, 7) == "Windows") {
- /**
- * @ignore
- */
- define('LOG4PHP_LINE_SEP', "\r\n");
- } else {
- /**
- * @ignore
- */
- define('LOG4PHP_LINE_SEP', "\n");
- }
-}
-
-/**
- */
-require_once(LOG4PHP_DIR . '/LoggerLayout.php');
-require_once(LOG4PHP_DIR . '/spi/LoggerLoggingEvent.php');
-
-/**
* This layout outputs events in a HTML table.
*
* Parameters are: {@link $title}, {@link $locationInfo}.
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 777451 $
* @package log4php
* @subpackage layouts
*/
@@ -68,7 +43,7 @@ class LoggerLayoutHtml extends LoggerLayout {
* LocationInfo option of that appender as well.
* @var boolean
*/
- var $locationInfo = false;
+ private $locationInfo = false;
/**
* The Title option takes a String value. This option sets the
@@ -76,14 +51,12 @@ class LoggerLayoutHtml extends LoggerLayout {
* Defaults to 'Log4php Log Messages'.
* @var string
*/
- var $title = "Log4php Log Messages";
+ private $title = "Log4php Log Messages";
/**
* Constructor
*/
- function LoggerLayoutHtml()
- {
- return;
+ public function __construct() {
}
/**
@@ -97,8 +70,7 @@ class LoggerLayoutHtml extends LoggerLayout {
* or a {@link LoggerAppenderMailEvent} then make sure to set the
* LocationInfo option of that appender as well.
*/
- function setLocationInfo($flag)
- {
+ public function setLocationInfo($flag) {
if (is_bool($flag)) {
$this->locationInfo = $flag;
} else {
@@ -109,8 +81,7 @@ class LoggerLayoutHtml extends LoggerLayout {
/**
* Returns the current value of the LocationInfo option.
*/
- function getLocationInfo()
- {
+ public function getLocationInfo() {
return $this->locationInfo;
}
@@ -119,53 +90,38 @@ class LoggerLayoutHtml extends LoggerLayout {
* document title of the generated HTML document.
* Defaults to 'Log4php Log Messages'.
*/
- function setTitle($title)
- {
+ public function setTitle($title) {
$this->title = $title;
}
/**
* @return string Returns the current value of the Title option.
*/
- function getTitle()
- {
+ public function getTitle() {
return $this->title;
}
/**
* @return string Returns the content type output by this layout, i.e "text/html".
*/
- function getContentType()
- {
+ public function getContentType() {
return "text/html";
}
/**
- * No options to activate.
- */
- function activateOptions()
- {
- return true;
- }
-
- /**
* @param LoggerLoggingEvent $event
* @return string
*/
- function format($event)
- {
- $sbuf = LOG4PHP_LINE_SEP . "" . LOG4PHP_LINE_SEP;
+ public function format(LoggerLoggingEvent $event) {
+ $sbuf = PHP_EOL . "
" . PHP_EOL;
$sbuf .= "| ";
-
- $eventTime = (float)$event->getTimeStamp();
- $eventStartTime = (float)LoggerLoggingEvent::getStartTime();
- $sbuf .= number_format(($eventTime - $eventStartTime) * 1000, 0, '', '');
- $sbuf .= " | " . LOG4PHP_LINE_SEP;
+ $sbuf .= $event->getTime();
+ $sbuf .= "" . PHP_EOL;
$sbuf .= "getThreadName() . " thread\">";
$sbuf .= $event->getThreadName();
- $sbuf .= " | " . LOG4PHP_LINE_SEP;
+ $sbuf .= "" . PHP_EOL;
$sbuf .= "";
@@ -175,71 +131,69 @@ class LoggerLayoutHtml extends LoggerLayout {
$sbuf .= "";
$sbuf .= $level->toString();
$sbuf .= "";
- }elseif($level->equals(LoggerLevel::getLevelWarn())) {
+ } else if ($level->equals(LoggerLevel::getLevelWarn())) {
$sbuf .= "";
$sbuf .= $level->toString();
$sbuf .= "";
} else {
$sbuf .= $level->toString();
}
- $sbuf .= " | " . LOG4PHP_LINE_SEP;
+ $sbuf .= "" . PHP_EOL;
$sbuf .= "getLoggerName(), ENT_QUOTES) . " category\">";
$sbuf .= htmlentities($event->getLoggerName(), ENT_QUOTES);
- $sbuf .= " | " . LOG4PHP_LINE_SEP;
+ $sbuf .= "" . PHP_EOL;
if ($this->locationInfo) {
$locInfo = $event->getLocationInformation();
$sbuf .= "";
$sbuf .= htmlentities($locInfo->getFileName(), ENT_QUOTES). ':' . $locInfo->getLineNumber();
- $sbuf .= " | " . LOG4PHP_LINE_SEP;
+ $sbuf .= "" . PHP_EOL;
}
$sbuf .= "";
$sbuf .= htmlentities($event->getRenderedMessage(), ENT_QUOTES);
- $sbuf .= " | " . LOG4PHP_LINE_SEP;
+ $sbuf .= "" . PHP_EOL;
- $sbuf .= "
" . LOG4PHP_LINE_SEP;
+ $sbuf .= "" . PHP_EOL;
if ($event->getNDC() != null) {
$sbuf .= "| ";
$sbuf .= "NDC: " . htmlentities($event->getNDC(), ENT_QUOTES);
- $sbuf .= " |
" . LOG4PHP_LINE_SEP;
+ $sbuf .= "" . PHP_EOL;
}
-
return $sbuf;
}
/**
* @return string Returns appropriate HTML headers.
*/
- function getHeader()
- {
- $sbuf = "" . LOG4PHP_LINE_SEP;
- $sbuf .= "" . LOG4PHP_LINE_SEP;
- $sbuf .= "" . LOG4PHP_LINE_SEP;
- $sbuf .= "" . $this->title . "" . LOG4PHP_LINE_SEP;
- $sbuf .= "" . LOG4PHP_LINE_SEP;
- $sbuf .= "" . LOG4PHP_LINE_SEP;
- $sbuf .= "" . LOG4PHP_LINE_SEP;
- $sbuf .= "
" . LOG4PHP_LINE_SEP;
- $sbuf .= "Log session start time " . strftime('%c', time()) . "
" . LOG4PHP_LINE_SEP;
- $sbuf .= "
" . LOG4PHP_LINE_SEP;
- $sbuf .= "" . LOG4PHP_LINE_SEP;
- $sbuf .= "" . LOG4PHP_LINE_SEP;
- $sbuf .= "| Time | " . LOG4PHP_LINE_SEP;
- $sbuf .= "Thread | " . LOG4PHP_LINE_SEP;
- $sbuf .= "Level | " . LOG4PHP_LINE_SEP;
- $sbuf .= "Category | " . LOG4PHP_LINE_SEP;
+ public function getHeader() {
+ $sbuf = "" . PHP_EOL;
+ $sbuf .= "" . PHP_EOL;
+ $sbuf .= "" . PHP_EOL;
+ $sbuf .= "" . $this->title . "" . PHP_EOL;
+ $sbuf .= "" . PHP_EOL;
+ $sbuf .= "" . PHP_EOL;
+ $sbuf .= "" . PHP_EOL;
+ $sbuf .= "
" . PHP_EOL;
+ $sbuf .= "Log session start time " . strftime('%c', time()) . "
" . PHP_EOL;
+ $sbuf .= "
" . PHP_EOL;
+ $sbuf .= "" . PHP_EOL;
+ $sbuf .= "" . PHP_EOL;
+ $sbuf .= "| Time | " . PHP_EOL;
+ $sbuf .= "Thread | " . PHP_EOL;
+ $sbuf .= "Level | " . PHP_EOL;
+ $sbuf .= "Category | " . PHP_EOL;
if ($this->locationInfo)
- $sbuf .= "File:Line | " . LOG4PHP_LINE_SEP;
- $sbuf .= "Message | " . LOG4PHP_LINE_SEP;
- $sbuf .= "
" . LOG4PHP_LINE_SEP;
+ $sbuf .= "File:Line | " . PHP_EOL;
+ $sbuf .= "Message | " . PHP_EOL;
+ $sbuf .= "" . PHP_EOL;
return $sbuf;
}
@@ -247,10 +201,9 @@ class LoggerLayoutHtml extends LoggerLayout {
/**
* @return string Returns the appropriate HTML footers.
*/
- function getFooter()
- {
- $sbuf = "
" . LOG4PHP_LINE_SEP;
- $sbuf .= "
" . LOG4PHP_LINE_SEP;
+ public function getFooter() {
+ $sbuf = "
" . PHP_EOL;
+ $sbuf .= "
" . PHP_EOL;
$sbuf .= "";
return $sbuf;
diff --git a/thirdparty/apache-log4php/src/main/php/layouts/LoggerPatternLayout.php b/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutPattern.php
index 80208c0..df2fd3e 100644
--- a/thirdparty/apache-log4php/src/main/php/layouts/LoggerPatternLayout.php
+++ b/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutPattern.php
@@ -1,5 +1,5 @@
The goal of this class is to {@link format()} a {@link LoggerLoggingEvent} and return the results as a string.
@@ -154,109 +136,67 @@ define('LOG4PHP_LOGGER_PATTERN_LAYOUT_TTCC_CONVERSION_PATTERN', '%r [%t] %p %
* then truncate from the beginning.
*
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 777552 $
* @package log4php
* @subpackage layouts
* @since 0.3
*/
-class LoggerPatternLayout extends LoggerLayout {
+class LoggerLayoutPattern extends LoggerLayout {
+ /** Default conversion Pattern */
+ const DEFAULT_CONVERSION_PATTERN = '%m%n';
+
+ /** Default conversion TTCC Pattern */
+ const TTCC_CONVERSION_PATTERN = '%r [%t] %p %c %x - %m%n';
+
+ /** @var string output buffer appended to when format() is invoked */
+ private $sbuf;
+
+ /** @var string */
+ private $pattern;
- /**
- * @var string output buffer appended to when format() is invoked
- */
- var $sbuf;
+ /** @var LoggerPatternConverter head chain */
+ private $head;
- /**
- * @var string
- */
- var $pattern;
+ private $timezone;
- /**
- * @var LoggerPatternConverter head chain
- */
- var $head;
+ /**
+ * Constructs a PatternLayout using the
+ * {@link DEFAULT_LAYOUT_PATTERN}.
+ * The default pattern just produces the application supplied message.
+ */
+ public function __construct($pattern = null) {
+ if ($pattern === null) {
+ $this->pattern = self :: DEFAULT_CONVERSION_PATTERN;
+ } else {
+ $this->pattern = $pattern;
+ }
+ }
- var $timezone;
+ /**
+ * Set the ConversionPattern option. This is the string which
+ * controls formatting and consists of a mix of literal content and
+ * conversion specifiers.
+ */
+ public function setConversionPattern($conversionPattern) {
+ $this->pattern = $conversionPattern;
+ $patternParser = new LoggerPatternParser($this->pattern);
+ $this->head = $patternParser->parse();
+ }
- /**
- * Constructs a PatternLayout using the
- * {@link LOG4PHP_LOGGER_PATTERN_LAYOUT_DEFAULT_LAYOUT_PATTERN}.
- * The default pattern just produces the application supplied message.
- */
- function LoggerPatternLayout($pattern = null)
- {
- if ($pattern === null) {
- $this->LoggerPatternLayout(LOG4PHP_LOGGER_PATTERN_LAYOUT_DEFAULT_CONVERSION_PATTERN);
- } else {
- $this->pattern = $pattern;
- }
- }
-
- /**
- * Set the ConversionPattern option. This is the string which
- * controls formatting and consists of a mix of literal content and
- * conversion specifiers.
- */
- function setConversionPattern($conversionPattern)
- {
- $this->pattern = $conversionPattern;
- $patternParser = $this->createPatternParser($this->pattern);
- $this->head = $patternParser->parse();
- }
-
- /**
- * @return string Returns the value of the ConversionPattern option.
- */
- function getConversionPattern()
- {
- return $this->pattern;
- }
-
- /**
- * Does not do anything as options become effective
- */
- function activateOptions()
- {
- // nothing to do.
- }
-
- function ignoresThrowable()
- {
- return true;
- }
-
- /**
- * Returns LoggerPatternParser used to parse the conversion string. Subclasses
- * may override this to return a subclass of PatternParser which recognize
- * custom conversion characters.
- *
- * @param string $pattern
- * @return LoggerPatternParser
- */
- function createPatternParser($pattern)
- {
- return new LoggerPatternParser($pattern);
- }
-
- /**
- * Produces a formatted string as specified by the conversion pattern.
- *
- * @param LoggerLoggingEvent $event
- * @return string
- */
- function format($event)
- {
- LoggerLog::debug("LoggerPatternLayout::format()");
-
- // Reset working stringbuffer
- $this->sbuf = '';
- $c = $this->head;
- while($c !== null) {
- $c->format($this->sbuf, $event);
- $c = $c->next;
- }
- return $this->sbuf;
- }
-
-}
+ /**
+ * Produces a formatted string as specified by the conversion pattern.
+ *
+ * @param LoggerLoggingEvent $event
+ * @return string
+ */
+ public function format(LoggerLoggingEvent $event) {
+ // Reset working stringbuffer
+ $this->sbuf = '';
+ $c = $this->head;
+ while ($c !== null) {
+ $c->format($this->sbuf, $event);
+ $c = $c->next;
+ }
+ return $this->sbuf;
+ }
+}
\ No newline at end of file
diff --git a/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutSimple.php b/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutSimple.php
index 80c6d9e..1001a41 100644
--- a/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutSimple.php
+++ b/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutSimple.php
@@ -1,5 +1,5 @@
level, followed by " - " and then the message.
* For example,
- * INFO - "A message"
+ * INFO - A message
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 777451 $
* @package log4php
* @subpackage layouts
*/
class LoggerLayoutSimple extends LoggerLayout {
-
/**
* Constructor
*/
- function LoggerLayoutSimple()
- {
- return;
- }
-
- function activateOptions()
- {
- return;
+ public function __construct() {
}
/**
@@ -78,9 +48,8 @@ class LoggerLayoutSimple extends LoggerLayout {
* @param LoggerLoggingEvent $event
* @return string
*/
- function format($event)
- {
+ public function format(LoggerLoggingEvent $event) {
$level = $event->getLevel();
- return $level->toString() . ' - ' . $event->getRenderedMessage(). LOG4PHP_LINE_SEP;
+ return $level->toString() . ' - ' . $event->getRenderedMessage(). PHP_EOL;
}
}
diff --git a/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutTTCC.php b/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutTTCC.php
index 20a72da..e177ff9 100644
--- a/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutTTCC.php
+++ b/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutTTCC.php
@@ -21,29 +21,6 @@
*/
/**
- * @ignore
- */
-if (!defined('LOG4PHP_DIR')) define('LOG4PHP_DIR', dirname(__FILE__) . '/..');
-
-if (!defined('LOG4PHP_LINE_SEP')) {
- if (substr(php_uname(), 0, 7) == "Windows") {
- /**
- * @ignore
- */
- define('LOG4PHP_LINE_SEP', "\r\n");
- } else {
- /**
- * @ignore
- */
- define('LOG4PHP_LINE_SEP', "\n");
- }
-}
-
-/**
- */
-require_once(LOG4PHP_DIR . '/LoggerLayout.php');
-
-/**
* String constant designating no time information. Current value of
* this constant is NULL.
*/
@@ -72,8 +49,7 @@ define ('LOG4PHP_LOGGER_LAYOUT_RELATIVE_TIME_DATE_FORMAT', 'RELATIVE');
* - {@link $microSecondsPrinting} (true|false) enable/disable micro seconds reporting in timestamp.
* - {@link $dateFormat} (string) set date format. See php {@link PHP_MANUAL#date} function for details.
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 777451 $
* @package log4php
* @subpackage layouts
*/
@@ -96,14 +72,10 @@ class LoggerLayoutTTCC extends LoggerLayout {
* @param string date format
* @see dateFormat
*/
- public function __construct($dateFormat = '')
- {
- if (!empty($dateFormat))
+ public function __construct($dateFormat = '') {
+ if (!empty($dateFormat)) {
$this->dateFormat = $dateFormat;
- return;
- }
-
- public function activateOptions() {
+ }
return;
}
@@ -111,9 +83,7 @@ class LoggerLayoutTTCC extends LoggerLayout {
* The ThreadPrinting option specifies whether the name of the
* current thread is part of log output or not. This is true by default.
*/
- public function setThreadPrinting($threadPrinting)
- {
-
+ public function setThreadPrinting($threadPrinting) {
$this->threadPrinting = is_bool($threadPrinting) ?
$threadPrinting :
(bool)(strtolower($threadPrinting) == 'true');
@@ -130,8 +100,7 @@ class LoggerLayoutTTCC extends LoggerLayout {
* The CategoryPrefixing option specifies whether {@link Category}
* name is part of log output or not. This is true by default.
*/
- public function setCategoryPrefixing($categoryPrefixing)
- {
+ public function setCategoryPrefixing($categoryPrefixing) {
$this->categoryPrefixing = is_bool($categoryPrefixing) ?
$categoryPrefixing :
(bool)(strtolower($categoryPrefixing) == 'true');
@@ -158,8 +127,7 @@ class LoggerLayoutTTCC extends LoggerLayout {
/**
* @return boolean Returns value of the ContextPrinting option.
*/
- public function getContextPrinting()
- {
+ public function getContextPrinting() {
return $this->contextPrinting;
}
@@ -177,22 +145,19 @@ class LoggerLayoutTTCC extends LoggerLayout {
/**
* @return boolean Returns value of the MicroSecondsPrinting option.
*/
- public function getMicroSecondsPrinting()
- {
+ public function getMicroSecondsPrinting() {
return $this->microSecondsPrinting;
}
- public function setDateFormat($dateFormat)
- {
+ public function setDateFormat($dateFormat) {
$this->dateFormat = $dateFormat;
}
/**
* @return string
*/
- public function getDateFormat()
- {
+ public function getDateFormat() {
return $this->dateFormat;
}
@@ -204,8 +169,7 @@ class LoggerLayoutTTCC extends LoggerLayout {
* @param LoggerLoggingEvent $event
* @return string
*/
- public function format($event)
- {
+ public function format(LoggerLoggingEvent $event) {
$timeStamp = (float)$event->getTimeStamp();
$format = strftime($this->dateFormat, (int)$timeStamp);
@@ -216,9 +180,10 @@ class LoggerLayoutTTCC extends LoggerLayout {
$format .= ' ';
- if ($this->threadPrinting)
+ if ($this->threadPrinting) {
$format .= '['.getmypid().'] ';
-
+ }
+
$level = $event->getLevel();
$format .= $level->toString().' ';
@@ -234,13 +199,12 @@ class LoggerLayoutTTCC extends LoggerLayout {
}
$format .= '- '.$event->getRenderedMessage();
- $format .= LOG4PHP_LINE_SEP;
+ $format .= PHP_EOL;
return $format;
}
- public function ignoresThrowable()
- {
+ public function ignoresThrowable() {
return true;
}
}
diff --git a/thirdparty/apache-log4php/src/main/php/layouts/LoggerXmlLayout.php b/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutXml.php
index 1039bad..22a521f 100644
--- a/thirdparty/apache-log4php/src/main/php/layouts/LoggerXmlLayout.php
+++ b/thirdparty/apache-log4php/src/main/php/layouts/LoggerLayoutXml.php
@@ -21,23 +21,6 @@
*/
/**
- * @ignore
- */
-if (!defined('LOG4PHP_DIR')) define('LOG4PHP_DIR', dirname(__FILE__) . '/..');
-
-define('LOG4PHP_LOGGER_XML_LAYOUT_LOG4J_NS_PREFIX', 'log4j');
-define('LOG4PHP_LOGGER_XML_LAYOUT_LOG4J_NS', 'http://jakarta.apache.org/log4j/');
-
-define('LOG4PHP_LOGGER_XML_LAYOUT_LOG4PHP_NS_PREFIX', 'log4php');
-define('LOG4PHP_LOGGER_XML_LAYOUT_LOG4PHP_NS', 'http://logging.apache.org/log4php/');
-
-/**
- */
-require_once(LOG4PHP_DIR . '/helpers/LoggerOptionConverter.php');
-require_once(LOG4PHP_DIR . '/helpers/LoggerTransform.php');
-require_once(LOG4PHP_DIR . '/LoggerLayout.php');
-
-/**
* The output of the LoggerXmlLayout consists of a series of log4php:event elements.
*
* Parameters: {@link $locationInfo}.
@@ -46,12 +29,22 @@ require_once(LOG4PHP_DIR . '/LoggerLayout.php');
* The output is designed to be included as an external entity in a separate file to form
* a correct XML file.
*
- * @author Marco Vassura
- * @version $Revision: 635069 $
+ * @version $Revision: 778059 $
* @package log4php
* @subpackage layouts
*/
-class LoggerXmlLayout extends LoggerLayout {
+class LoggerLayoutXml extends LoggerLayout {
+ const LOG4J_NS_PREFIX ='log4j';
+ const LOG4J_NS = 'http://jakarta.apache.org/log4j/';
+
+ const LOG4PHP_NS_PREFIX = 'log4php';
+ const LOG4PHP_NS = 'http://logging.apache.org/log4php/';
+
+ const CDATA_START = '';
+ const CDATA_PSEUDO_END = ']]>';
+
+ const CDATA_EMBEDDED_END = ']]>]]>LocationInfo option takes a boolean value. By default,
@@ -61,45 +54,43 @@ class LoggerXmlLayout extends LoggerLayout {
* origin of the log statement will be output.
* @var boolean
*/
- var $locationInfo = true;
+ private $locationInfo = true;
/**
* @var boolean set the elements namespace
*/
- var $log4jNamespace = false;
+ private $log4jNamespace = false;
/**
* @var string namespace
* @private
*/
- var $_namespace = LOG4PHP_LOGGER_XML_LAYOUT_LOG4PHP_NS;
+ private $_namespace = self::LOG4PHP_NS;
/**
* @var string namespace prefix
* @private
*/
- var $_namespacePrefix = LOG4PHP_LOGGER_XML_LAYOUT_LOG4PHP_NS_PREFIX;
+ private $_namespacePrefix = self::LOG4PHP_NS_PREFIX;
/**
* No options to activate.
*/
- function activateOptions()
- {
+ public function activateOptions() {
if ($this->getLog4jNamespace()) {
- $this->_namespace = LOG4PHP_LOGGER_XML_LAYOUT_LOG4J_NS;
- $this->_namespacePrefix = LOG4PHP_LOGGER_XML_LAYOUT_LOG4J_NS_PREFIX;
+ $this->_namespace = self::LOG4J_NS;
+ $this->_namespacePrefix = self::LOG4J_NS_PREFIX;
} else {
- $this->_namespace = LOG4PHP_LOGGER_XML_LAYOUT_LOG4PHP_NS;
- $this->_namespacePrefix = LOG4PHP_LOGGER_XML_LAYOUT_LOG4PHP_NS_PREFIX;
+ $this->_namespace = self::LOG4PHP_NS;
+ $this->_namespacePrefix = self::LOG4PHP_NS_PREFIX;
}
}
/**
* @return string
*/
- function getHeader()
- {
+ public function getHeader() {
return "<{$this->_namespacePrefix}:eventSet ".
"xmlns:{$this->_namespacePrefix}=\"{$this->_namespace}\" ".
"version=\"0.3\" ".
@@ -113,24 +104,23 @@ class LoggerXmlLayout extends LoggerLayout {
* @param LoggerLoggingEvent $event
* @return string
*/
- function format($event)
- {
+ public function format(LoggerLoggingEvent $event) {
$loggerName = $event->getLoggerName();
$timeStamp = number_format((float)($event->getTimeStamp() * 1000), 0, '', '');
$thread = $event->getThreadName();
$level = $event->getLevel();
$levelStr = $level->toString();
- $buf = "<{$this->_namespacePrefix}:event logger=\"{$loggerName}\" level=\"{$levelStr}\" thread=\"{$thread}\" timestamp=\"{$timeStamp}\">\r\n";
+ $buf = "<{$this->_namespacePrefix}:event logger=\"{$loggerName}\" level=\"{$levelStr}\" thread=\"{$thread}\" timestamp=\"{$timeStamp}\">".PHP_EOL;
$buf .= "<{$this->_namespacePrefix}:message>getRenderedMessage());
- $buf .= "]]>{$this->_namespacePrefix}:message>\r\n";
+ $this->appendEscapingCDATA($buf, $event->getRenderedMessage());
+ $buf .= "]]>{$this->_namespacePrefix}:message>".PHP_EOL;
$ndc = $event->getNDC();
if($ndc != null) {
$buf .= "<{$this->_namespacePrefix}:NDC>{$this->_namespacePrefix}:NDC>\r\n";
+ $this->appendEscapingCDATA($buf, $ndc);
+ $buf .= "]]>{$this->_namespacePrefix}:NDC>".PHP_EOL;
}
if ($this->getLocationInfo()) {
@@ -140,11 +130,11 @@ class LoggerXmlLayout extends LoggerLayout {
"file=\"" . htmlentities($locationInfo->getFileName(), ENT_QUOTES) . "\" ".
"line=\"" . $locationInfo->getLineNumber() . "\" ".
"method=\"" . $locationInfo->getMethodName() . "\" ";
- $buf .= "/>\r\n";
+ $buf .= "/>".PHP_EOL;
}
- $buf .= "{$this->_namespacePrefix}:event>\r\n\r\n";
+ $buf .= "{$this->_namespacePrefix}:event>".PHP_EOL.PHP_EOL;
return $buf;
@@ -153,56 +143,58 @@ class LoggerXmlLayout extends LoggerLayout {
/**
* @return string
*/
- function getFooter()
- {
-
+ public function getFooter() {
return "{$this->_namespacePrefix}:eventSet>\r\n";
}
/**
* @return boolean
*/
- function getLocationInfo()
- {
+ public function getLocationInfo() {
return $this->locationInfo;
}
/**
- * @return boolean
- */
- function getLog4jNamespace()
- {
- return $this->log4jNamespace;
- }
-
- /**
- * The XMLLayout prints and does not ignore exceptions. Hence the
- * return value false.
- * @return boolean
- */
- function ignoresThrowable()
- {
- return false;
- }
-
- /**
* The {@link $locationInfo} option takes a boolean value. By default,
* it is set to false which means there will be no location
* information output by this layout. If the the option is set to
* true, then the file name and line number of the statement at the
* origin of the log statement will be output.
*/
- function setLocationInfo($flag)
- {
+ function setLocationInfo($flag) {
$this->locationInfo = LoggerOptionConverter::toBoolean($flag, true);
}
/**
* @param boolean
*/
- function setLog4jNamespace($flag)
- {
+ function setLog4jNamespace($flag) {
$this->log4jNamespace = LoggerOptionConverter::toBoolean($flag, true);
}
+
+ /**
+ * Ensures that embeded CDEnd strings (]]>) are handled properly
+ * within message, NDC and throwable tag text.
+ *
+ * @param string $buf String holding the XML data to this point. The
+ * initial CDStart ()
+ * of the CDATA section are the responsibility of
+ * the calling method.
+ * @param string &str The String that is inserted into an existing
+ * CDATA Section within buf.
+ * @static
+ */
+ private function appendEscapingCDATA(&$buf, $str) {
+ if(empty($str)) {
+ return;
+ }
+
+ $rStr = str_replace(
+ self::CDATA_END,
+ self::CDATA_EMBEDDED_END,
+ $str
+ );
+ $buf .= $rStr;
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/or/LoggerDefaultRenderer.php b/thirdparty/apache-log4php/src/main/php/renderers/LoggerRendererDefault.php
index 0974494..6fa986f 100644
--- a/thirdparty/apache-log4php/src/main/php/or/LoggerDefaultRenderer.php
+++ b/thirdparty/apache-log4php/src/main/php/renderers/LoggerRendererDefault.php
@@ -1,13 +1,13 @@
map = array();
- $this->defaultRenderer = new LoggerDefaultRenderer();
- }
+ /**
+ * Constructor
+ */
+ public function __construct() {
+ $this->map = array();
+ $this->defaultRenderer = new LoggerRendererDefault();
+ }
- /**
- * Add a renderer to a hierarchy passed as parameter.
- * Note that hierarchy must implement getRendererMap() and setRenderer() methods.
- *
- * @param LoggerHierarchy $repository a logger repository.
- * @param string $renderedClassName
- * @param string $renderingClassName
- * @static
- */
- public static function addRenderer($repository, $renderedClassName, $renderingClassName)
- {
- LoggerLog::debug("LoggerRendererMap::addRenderer() Rendering class: [{$renderingClassName}], Rendered class: [{$renderedClassName}].");
- $renderer = LoggerObjectRenderer::factory($renderingClassName);
- if($renderer == null) {
- LoggerLog::warn("LoggerRendererMap::addRenderer() Could not instantiate renderer [{$renderingClassName}].");
- return;
- } else {
- $repository->setRenderer($renderedClassName, $renderer);
- }
- }
+ /**
+ * Add a renderer to a hierarchy passed as parameter.
+ * Note that hierarchy must implement getRendererMap() and setRenderer() methods.
+ *
+ * @param LoggerHierarchy $repository a logger repository.
+ * @param string $renderedClassName
+ * @param string $renderingClassName
+ * @static
+ */
+ public static function addRenderer($repository, $renderedClassName, $renderingClassName) {
+ $renderer = LoggerReflectionUtils::createObject($renderingClassName);
+ if($renderer == null) {
+ return;
+ } else {
+ $repository->setRenderer($renderedClassName, $renderer);
+ }
+ }
- /**
- * Find the appropriate renderer for the class type of the
- * o parameter.
- *
- * This is accomplished by calling the {@link getByObject()}
- * method if o is object or using {@link LoggerDefaultRenderer}.
- * Once a renderer is found, it is applied on the object o and
- * the result is returned as a string.
- *
- * @param mixed $o
- * @return string
- */
- public function findAndRender($o)
- {
- if($o == null) {
- return null;
- } else {
- if (is_object($o)) {
- $renderer = $this->getByObject($o);
- if ($renderer !== null) {
- return $renderer->doRender($o);
- } else {
- return null;
- }
- } else {
- $renderer = $this->defaultRenderer;
- return $renderer->doRender($o);
- }
- }
- }
+ /**
+ * Find the appropriate renderer for the class type of the
+ * o parameter.
+ *
+ * This is accomplished by calling the {@link getByObject()}
+ * method if o is object or using {@link LoggerRendererDefault}.
+ * Once a renderer is found, it is applied on the object o and
+ * the result is returned as a string.
+ *
+ * @param mixed $o
+ * @return string
+ */
+ public function findAndRender($o) {
+ if($o == null) {
+ return null;
+ } else {
+ if(is_object($o)) {
+ $renderer = $this->getByObject($o);
+ if($renderer !== null) {
+ return $renderer->doRender($o);
+ } else {
+ return null;
+ }
+ } else {
+ $renderer = $this->defaultRenderer;
+ return $renderer->doRender($o);
+ }
+ }
+ }
- /**
- * Syntactic sugar method that calls {@link PHP_MANUAL#get_class} with the
- * class of the object parameter.
- *
- * @param mixed $o
- * @return string
- */
- public function getByObject($o)
- {
- return ($o == null) ? null : $this->getByClassName(get_class($o));
- }
+ /**
+ * Syntactic sugar method that calls {@link PHP_MANUAL#get_class} with the
+ * class of the object parameter.
+ *
+ * @param mixed $o
+ * @return string
+ */
+ public function getByObject($o) {
+ return ($o == null) ? null : $this->getByClassName(get_class($o));
+ }
- /**
- * Search the parents of clazz for a renderer.
- *
- * The renderer closest in the hierarchy will be returned. If no
- * renderers could be found, then the default renderer is returned.
- *
- * @param string $class
- * @return LoggerObjectRenderer
- */
- public function getByClassName($class)
- {
- $r = null;
- for($c = strtolower($class); !empty($c); $c = get_parent_class($c)) {
- if (isset($this->map[$c])) {
- return $this->map[$c];
- }
- }
- return $this->defaultRenderer;
- }
+ /**
+ * Search the parents of clazz for a renderer.
+ *
+ * The renderer closest in the hierarchy will be returned. If no
+ * renderers could be found, then the default renderer is returned.
+ *
+ * @param string $class
+ * @return LoggerRendererObject
+ */
+ public function getByClassName($class) {
+ $r = null;
+ for($c = strtolower($class); !empty($c); $c = get_parent_class($c)) {
+ if(isset($this->map[$c])) {
+ return $this->map[$c];
+ }
+ }
+ return $this->defaultRenderer;
+ }
- /**
- * @return LoggerDefaultRenderer
- */
- public function getDefaultRenderer()
- {
- return $this->defaultRenderer;
- }
+ /**
+ * @return LoggerRendererDefault
+ */
+ public function getDefaultRenderer() {
+ return $this->defaultRenderer;
+ }
- public function clear()
- {
- $this->map = array();
- }
+ public function clear() {
+ $this->map = array();
+ }
- /**
- * Register a {@link LoggerObjectRenderer} for clazz.
- * @param string $class
- * @param LoggerObjectRenderer $or
- */
- public function put($class, $or)
- {
- $this->map[strtolower($class)] = $or;
- }
-
- /**
- * @param string $class
- * @return boolean
- */
- public function rendererExists($class)
- {
- $class = basename($class);
- if (!class_exists($class)) {
- include_once(LOG4PHP_DIR ."/or/{$class}.php");
- }
- return class_exists($class);
- }
+ /**
+ * Register a {@link LoggerRendererObject} for clazz.
+ * @param string $class
+ * @param LoggerRendererObject $or
+ */
+ public function put($class, $or) {
+ $this->map[strtolower($class)] = $or;
+ }
+
+ /**
+ * @param string $class
+ * @return boolean
+ */
+ public function rendererExists($class) {
+ $class = basename($class);
+ return class_exists($class);
+ }
}
diff --git a/thirdparty/apache-log4php/src/main/php/or/LoggerObjectRenderer.php b/thirdparty/apache-log4php/src/main/php/renderers/LoggerRendererObject.php
index b9749e7..5774687 100644
--- a/thirdparty/apache-log4php/src/main/php/or/LoggerObjectRenderer.php
+++ b/thirdparty/apache-log4php/src/main/php/renderers/LoggerRendererObject.php
@@ -1,13 +1,13 @@
-
+
-
-
+
+
+
+
@@ -37,18 +40,14 @@ element. -->
-
+
-
-
-
-
@@ -63,46 +62,47 @@ element. -->
-
+
-
+
+
@@ -141,8 +141,8 @@ element. -->
diff --git a/thirdparty/apache-log4php/src/site/apt/download.apt b/thirdparty/apache-log4php/src/site/apt/download.apt
new file mode 100644
index 0000000..48d80f2
--- /dev/null
+++ b/thirdparty/apache-log4php/src/site/apt/download.apt
@@ -0,0 +1,26 @@
+~~ 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.
+ ------
+Download apache-log4php
+ ------
+ ------
+ ------
+
+Download apache-log4php
+
+ Apache log4php is distributed under the {{{http://www.apache.org/licenses/LICENSE-2.0.html} Apache License, version 2.0}}.
+
+
+ No releases have yet been made.
diff --git a/thirdparty/apache-log4php/src/site/apt/index.apt b/thirdparty/apache-log4php/src/site/apt/index.apt
new file mode 100644
index 0000000..71e0d60
--- /dev/null
+++ b/thirdparty/apache-log4php/src/site/apt/index.apt
@@ -0,0 +1,43 @@
+~~ 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.
+ ------
+ Apache log4php
+ ------
+ ------
+ ------
+
+ Log4php is logging framework for PHP undergoing incubation at the Apache Software Foundation (ASF),
+ sponsored by the Apache Logging Services project.
+ Incubation is required of all newly accepted projects until a further review
+ indicates that the infrastructure, communications, and decision making process
+ have stabilized in a manner consistent with other successful ASF projects.
+ While incubation status is not necessarily a reflection of the completeness or
+ stability of the code, it does indicate that the project has yet to be
+ fully endorsed by the ASF.
+
+
+ log4php supports:
+
+ * Configuration through xml and properties file (same structure as log4j).
+
+ * File, RollingFile, DailyFile, Echo, Console, Mail, PEAR::Db, PHP error,
+ Syslog or NT events and Socket appenders.
+
+ * Simple, TTCC, Pattern, Html and Xml Layouts.
+
+ * Nested (NDC) and Mapped (MDC) Diagnostic Contexts.
+
+ * Switchable internal debug.
+
diff --git a/thirdparty/apache-log4php/src/site/apt/roadmap.apt b/thirdparty/apache-log4php/src/site/apt/roadmap.apt
new file mode 100644
index 0000000..1103d30
--- /dev/null
+++ b/thirdparty/apache-log4php/src/site/apt/roadmap.apt
@@ -0,0 +1,25 @@
+~~ 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.
+ ------
+ apache-log4php Roadmap
+ ------
+ Curt Arnold
+ ------
+ 4 June 2007
+ ------
+
+apache-log4php Roadmap
+
+ TODO
diff --git a/thirdparty/apache-log4php/src/site/apt/usage.apt b/thirdparty/apache-log4php/src/site/apt/usage.apt
new file mode 100644
index 0000000..c4e5587
--- /dev/null
+++ b/thirdparty/apache-log4php/src/site/apt/usage.apt
@@ -0,0 +1,142 @@
+~~ 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.
+ ------
+ Apache log4php usage example
+ ------
+ ------
+ ------
+
+Apache Log4php Usage Example">
+
++--
+logger =& LoggerManager::getLogger('Test');
+ }
+
+ function testLog()
+ {
+ $this->logger->debug('this is a DEBUG log generated by Test::testLog() class');
+ $this->logger->info('this is an INFO log generated by Test::testLog() class');
+ $this->logger->warn('this is a WARN log generated by Test::testLog() class');
+ $this->logger->error('this is an ERROR log generated by Test::testLog() class');
+ $this->logger->fatal('this is a FATAL log generated by Test::testLog() class');
+ }
+}
+
+class TestTest extends Test {
+ var $logger;
+
+ function TestTest()
+ {
+ $this->Test();
+ $this->logger =& LoggerManager::getLogger('Test.Test');
+ }
+
+ function testLog()
+ {
+ LoggerNDC::push('NDC generated by TestTest::testLog()');
+
+ $this->logger->debug('this is a DEBUG log generated by TestTest::testLog() class');
+ $this->logger->info('this is an INFO log generated by TestTest::testLog() class');
+ $this->logger->warn('this is a WARN log generated by TestTest::testLog() class');
+ $this>->logger->error('this is an ERROR log generated by TestTest::testLog() class');
+ $this->logger->fatal('this is a FATAL log generated by TestTest::testLog() class');
+
+ LoggerNDC::pop();
+ }
+}
+
+function Bar()
+{
+ $logger =& LoggerManager::getLogger('bar');
+
+ /*
+ note that the message here is an array
+ */
+
+ $logger->debug(array('one', 'two', 'tree'));
+ $logger->info('this is an INFO log generated by Bar() function');
+ $logger->warn('this is a WARN log generated by Bar() function');
+ $logger->error('this is an ERROR log generated by Bar() function');
+ $logger->fatal('this is a FATAL log generated by Bar() function');
+}
+
+$logger =& LoggerManager::getLogger('main');
+$logger->debug('this is a DEBUG log generated by main() function');
+$logger->info('this is an INFO log generated by main() function');
+$logger->warn('this is a WARN log generated by main() function');
+$logger->error('this is an ERROR log generated by main() function');
+$logger->fatal('this is a FATAL log generated by main() function')
+
+$test = new Test();
+$test->testLog();
+
+$testTest = new TestTest();
+$testTest->testLog();
+
+Bar();
+?>
++--
diff --git a/thirdparty/apache-log4php/src/site/resources/css/site.css b/thirdparty/apache-log4php/src/site/resources/css/site.css
new file mode 100644
index 0000000..cab7f25
--- /dev/null
+++ b/thirdparty/apache-log4php/src/site/resources/css/site.css
@@ -0,0 +1,18 @@
+/*
+ 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.
+
+*/
+
diff --git a/thirdparty/apache-log4php/src/site/resources/images/apache-incubator-logo.png b/thirdparty/apache-log4php/src/site/resources/images/apache-incubator-logo.png
new file mode 100644
index 0000000..81fb31e
--- /dev/null
+++ b/thirdparty/apache-log4php/src/site/resources/images/apache-incubator-logo.png
diff --git a/thirdparty/apache-log4php/src/site/resources/images/logo.jpg b/thirdparty/apache-log4php/src/site/resources/images/logo.jpg
new file mode 100644
index 0000000..5b6ede8
--- /dev/null
+++ b/thirdparty/apache-log4php/src/site/resources/images/logo.jpg
diff --git a/thirdparty/apache-log4php/src/site/resources/images/ls-logo.jpg b/thirdparty/apache-log4php/src/site/resources/images/ls-logo.jpg
new file mode 100755
index 0000000..611c5c3
--- /dev/null
+++ b/thirdparty/apache-log4php/src/site/resources/images/ls-logo.jpg
diff --git a/thirdparty/apache-log4php/src/site/site.xml b/thirdparty/apache-log4php/src/site/site.xml
new file mode 100644
index 0000000..44b052b
--- /dev/null
+++ b/thirdparty/apache-log4php/src/site/site.xml
@@ -0,0 +1,68 @@
+
+
+
+ Apache Logging Services Project
+ images/ls-logo.jpg
+ http://logging.apache.org/
+
+
+ Apache Incubator
+ images/apache-incubator-logo.png
+ http://incubator.apache.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/thirdparty/apache-log4php/src/site/xdoc/contributors.xml b/thirdparty/apache-log4php/src/site/xdoc/contributors.xml
new file mode 100644
index 0000000..d5dfd3f
--- /dev/null
+++ b/thirdparty/apache-log4php/src/site/xdoc/contributors.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+ Marco Vassura
+ Log4php - Contributors
+
+
+
+
+
+ Here is a list (in alphabetical order) of the developers that
+ (directly or indirectly) contributed to enhance the project.
+ Thank You all!
+
+
+
+ -
+ Abel Gonzalez
+
Abel is the author of the LoggerAppenderDailyFile appender.
+
+ -
+ Ilker Kiris
+
Bugs hunting, hints and modifications.
+
+ -
+ Domenico Lordi
+
Developer of the LoggerAppenderMailEvent appender.
+
+ -
+ Sergio Strampelli
+
An endless source of ideas, contribs and bugs hunting. Thank You guy!
+
+ -
+ Marco Vassura
+
The founder of the project and source code maintainer.
+
+ -
+ Blake Watters
+
Blake is the author of the LoggerAppenderAdodb appender.
+
+ -
+ Simon Wiest
+
Bugs hunting, hints.
+
+
+
+
+
+
diff --git a/thirdparty/apache-log4php/src/site/xdoc/documentation.xml b/thirdparty/apache-log4php/src/site/xdoc/documentation.xml
new file mode 100644
index 0000000..182ee48
--- /dev/null
+++ b/thirdparty/apache-log4php/src/site/xdoc/documentation.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+ Marco Vassura
+ Log4php - Documentation and Usage
+
+
+
+
+
+
diff --git a/thirdparty/apache-log4php/src/site/xdoc/news.xml b/thirdparty/apache-log4php/src/site/xdoc/news.xml
new file mode 100644
index 0000000..72093cb
--- /dev/null
+++ b/thirdparty/apache-log4php/src/site/xdoc/news.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+ Marco Vassura
+ Welcome to Log4php!
+
+
+
+
+
+ 7th of March 2004 - Log4php project has moved from
+ www.vxr.it/log4php
+ to Apache Logging Services.
+
+ Log4php project has started the incubation phase in order to become
+ an apache project. The license has changed from LGPL to ASL 2.0.
+
+
+
+
+
diff --git a/thirdparty/apache-log4php/src/site/xdoc/qsg.xml b/thirdparty/apache-log4php/src/site/xdoc/qsg.xml
new file mode 100644
index 0000000..58223cc
--- /dev/null
+++ b/thirdparty/apache-log4php/src/site/xdoc/qsg.xml
@@ -0,0 +1,148 @@
+
+
+
+
+
+ Marco Vassura
+ Log4php - Quick Setup Guide
+
+
+
+
+
+ After unpacking the distribution file the following source tree will be created:
+
+log4php-{version}
+ +---docs
+ | +---api
+ | qsg.html (this file)
+ | ...
+ \---src
+ +---log4php
+ | +---appenders
+ | +---config
+ | +---helpers
+ | +---layouts
+ | +---or
+ | +---spi
+ | +---varia
+ | \---xml
+ \---tests
+ ...
+
+
+
+
+
+ Copy the "log4php-{version}/src/log4php" directory in a place accessible by PHP
+ (called in this document {LOG4PHP-ROOT})
+ and that's all! Log4php is installed.
+ Optionally the LOG4PHP_DIR
+ constant can be defined to point to {LOG4PHP-ROOT}.
+
+
+
+
+
+ Three steps are required to use log4php:
+
+
+ -
+ Create a configuration file (can be an ".ini"-type or xml file)
+ that will configure the log4php loggers hierarchy tree.
+ See the tests/*/configs directories for examples.
+ See log4php.dtd for xml elements reference.
+ Finally, take a look at the original log4j manual for more examples.
+
+ -
+ (Optional) Define the
LOG4PHP_CONFIGURATION
+ constant to point to the configuration above.
+
+ -
+ (Optional) Define the
LOG4PHP_CONFIGURATOR_CLASS
+ constant to point to a configuration class file.
+
+ -
+ Include the '
LoggerManager.php'
+ class file in your php scripts.
+
+ -
+ Since log4php makes use of date functions, it is recommended that you have set:
+ date_default_timezone_set(); somewhere within your application.
+
+
+
+ Once the 'LoggerManager' is included,
+ it will start the default init procedure
+ that can be parameterized by the previously defined
+ LOG4PHP_DEFAULT_INIT_OVERRIDE,
+ LOG4PHP_CONFIGURATION and
+ LOG4PHP_CONFIGURATOR_CLASS
+ constants.
+
+ Here is how to use log4php in user PHP code:
+
+<?php
+
+// Setting default timezone
+date_default_timezone_set('Europe/London');
+
+/*
+ Set LOG4PHP_* constants here
+*/
+
+require_once(LOG4PHP_DIR . '/LoggerManager.php');
+
+/*
+ In a class
+*/
+class Log4phpTest {
+ /*
+ Your public and private vars
+ */
+ var $_logger;
+
+ function Log4phpTest()
+ {
+ $this->_logger =& LoggerManager::getLogger('Log4phpTest');
+ $this->_logger->debug('Hello!');
+ }
+
+}
+
+function Log4phpTestFunction()
+{
+ $logger =& LoggerManager::getLogger('Log4phpTestFunction');
+ $logger->debug('Hello again!');
+}
+
+/*
+ Your PHP code
+*/
+
+//Safely close all appenders with...
+
+LoggerManager::shutdown();
+
+?>
+
+
+
+
+
diff --git a/thirdparty/apache-log4php/src/site/xdoc/stylesheets/project.xml b/thirdparty/apache-log4php/src/site/xdoc/stylesheets/project.xml
new file mode 100644
index 0000000..683c20e
--- /dev/null
+++ b/thirdparty/apache-log4php/src/site/xdoc/stylesheets/project.xml
@@ -0,0 +1,42 @@
+
+
+
+
+ Log4php project
+
+
+
+
+
+
+
+
+
diff --git a/thirdparty/apache-log4php/src/test/php/LoggerHierarchyTest.php b/thirdparty/apache-log4php/src/test/php/LoggerHierarchyTest.php
new file mode 100644
index 0000000..7ab3309
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/LoggerHierarchyTest.php
@@ -0,0 +1,112 @@
+hierarchy = new LoggerHierarchy(new LoggerRoot());
+ }
+
+ public function testIfLevelIsInitiallyLevelAllg() {
+ self::assertEquals('ALL', $this->hierarchy->getRootLogger()->getLevel()->toString());
+ }
+
+ public function testIfNameIsRoot() {
+ self::assertEquals('root', $this->hierarchy->getRootLogger()->getName());
+ }
+
+ public function testIfParentIsNull() {
+ self::assertSame(null, $this->hierarchy->getRootLogger()->getParent());
+ }
+
+ public function testSetParent() {
+ $l = $this->hierarchy->getLogger('dummy');
+ $this->hierarchy->getRootLogger()->setParent($l);
+ $this->testIfParentIsNull();
+ }
+
+ public function testResetConfiguration() {
+ $root = $this->hierarchy->getRootLogger();
+ $appender = new LoggerAppenderConsole('A1');
+ $root->addAppender($appender);
+ $logger = $this->hierarchy->getLogger('test');
+ self::assertEquals(count($this->hierarchy->getCurrentLoggers()), 1);
+ $this->hierarchy->resetConfiguration();
+ self::assertEquals($this->hierarchy->getRootLogger()->getLevel()->toString(), 'DEBUG');
+ self::assertEquals($this->hierarchy->getThreshold()->toString(), 'ALL');
+ self::assertEquals(count($this->hierarchy->getCurrentLoggers()), 1);
+ foreach($this->hierarchy->getCurrentLoggers() as $l) {
+ self::assertEquals($l->getLevel(), null);
+ self::assertTrue($l->getAdditivity());
+ self::assertEquals(count($l->getAllAppenders()), 0);
+ }
+ }
+
+ public function testSettingParents() {
+ $hierarchy = $this->hierarchy;
+ $loggerDE = $hierarchy->getLogger("de");
+ $root = $loggerDE->getParent();
+ self::assertEquals('root', $root->getName());
+
+ $loggerDEBLUB = $hierarchy->getLogger("de.blub");
+ self::assertEquals('de.blub', $loggerDEBLUB->getName());
+ $p = $loggerDEBLUB->getParent();
+ self::assertEquals('de', $p->getName());
+
+ $loggerDEBLA = $hierarchy->getLogger("de.bla");
+ $p = $loggerDEBLA->getParent();
+ self::assertEquals('de', $p->getName());
+
+ $logger3 = $hierarchy->getLogger("de.bla.third");
+ $p = $logger3->getParent();
+ self::assertEquals('de.bla', $p->getName());
+
+ $p = $p->getParent();
+ self::assertEquals('de', $p->getName());
+ }
+
+ public function testExists() {
+ $hierarchy = $this->hierarchy;
+ $logger = $hierarchy->getLogger("de");
+
+ self::assertTrue($hierarchy->exists("de"));
+
+ $logger = $hierarchy->getLogger("de.blub");
+ self::assertTrue($hierarchy->exists("de.blub"));
+ self::assertTrue($hierarchy->exists("de"));
+
+ $logger = $hierarchy->getLogger("de.de");
+ self::assertTrue($hierarchy->exists("de.de"));
+ }
+
+ public function testClear() {
+ $hierarchy = $this->hierarchy;
+ $logger = $hierarchy->getLogger("de");
+ self::assertTrue($hierarchy->exists("de"));
+ $hierarchy->clear();
+ self::assertFalse($hierarchy->exists("de"));
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/LoggerLevelTest.php b/thirdparty/apache-log4php/src/test/php/LoggerLevelTest.php
new file mode 100644
index 0000000..9302a50
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/LoggerLevelTest.php
@@ -0,0 +1,78 @@
+toInt(), $code);
+ self::assertEquals( $o->toString(), $str);
+ self::assertEquals( $o->getSyslogEquivalent(), $syslog);
+ }
+
+ public function testLevelOff() {
+ $this->doTestLevel( LoggerLevel::getLevelOff(), LoggerLevel::OFF, 'OFF', 0 );
+ $this->doTestLevel( LoggerLevel::toLevel(LoggerLevel::OFF), LoggerLevel::OFF, 'OFF', 0 );
+ $this->doTestLevel( LoggerLevel::toLevel('OFF'), LoggerLevel::OFF, 'OFF', 0 );
+ }
+
+ public function testLevelFatal() {
+ $this->doTestLevel( LoggerLevel::getLevelFatal(), LoggerLevel::FATAL, 'FATAL', 0 );
+ $this->doTestLevel( LoggerLevel::toLevel(LoggerLevel::FATAL), LoggerLevel::FATAL, 'FATAL', 0 );
+ $this->doTestLevel( LoggerLevel::toLevel('FATAL'), LoggerLevel::FATAL, 'FATAL', 0 );
+ }
+
+ public function testLevelError() {
+ $this->doTestLevel( LoggerLevel::getLevelError(), LoggerLevel::ERROR, 'ERROR', 3 );
+ $this->doTestLevel( LoggerLevel::toLevel(LoggerLevel::ERROR), LoggerLevel::ERROR, 'ERROR', 3 );
+ $this->doTestLevel( LoggerLevel::toLevel('ERROR'), LoggerLevel::ERROR, 'ERROR', 3 );
+ }
+
+ public function testLevelWarn() {
+ $this->doTestLevel( LoggerLevel::getLevelWarn(), LoggerLevel::WARN, 'WARN', 4 );
+ $this->doTestLevel( LoggerLevel::toLevel(LoggerLevel::WARN), LoggerLevel::WARN, 'WARN', 4 );
+ $this->doTestLevel( LoggerLevel::toLevel('WARN'), LoggerLevel::WARN, 'WARN', 4 );
+ }
+
+ public function testLevelInfo() {
+ $this->doTestLevel( LoggerLevel::getLevelInfo(), LoggerLevel::INFO, 'INFO', 6 );
+ $this->doTestLevel( LoggerLevel::toLevel(LoggerLevel::INFO), LoggerLevel::INFO, 'INFO', 6 );
+ $this->doTestLevel( LoggerLevel::toLevel('INFO'), LoggerLevel::INFO, 'INFO', 6 );
+ }
+
+ public function testLevelDebug() {
+ $this->doTestLevel( LoggerLevel::getLevelDebug(), LoggerLevel::DEBUG, 'DEBUG', 7 );
+ $this->doTestLevel( LoggerLevel::toLevel(LoggerLevel::DEBUG), LoggerLevel::DEBUG, 'DEBUG', 7 );
+ $this->doTestLevel( LoggerLevel::toLevel('DEBUG'), LoggerLevel::DEBUG, 'DEBUG', 7 );
+ }
+
+ public function testLevelAll() {
+ $this->doTestLevel( LoggerLevel::getLevelAll(), LoggerLevel::ALL, 'ALL', 7 );
+ $this->doTestLevel( LoggerLevel::toLevel(LoggerLevel::ALL), LoggerLevel::ALL, 'ALL', 7 );
+ $this->doTestLevel( LoggerLevel::toLevel('ALL'), LoggerLevel::ALL, 'ALL', 7 );
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/LoggerLoggingEventTest.php b/thirdparty/apache-log4php/src/test/php/LoggerLoggingEventTest.php
new file mode 100644
index 0000000..9b2474d
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/LoggerLoggingEventTest.php
@@ -0,0 +1,93 @@
+layout->format($event);
+ }
+
+}
+
+class LoggerLoggingEventTestCaseLayout extends LoggerLayout {
+
+ public function activateOptions() {
+ return;
+ }
+
+ public function format(LoggerLoggingEvent $event) {
+ LoggerLoggingEventTest::$locationInfo = $event->getLocationInformation();
+ }
+}
+
+class LoggerLoggingEventTest extends PHPUnit_Framework_TestCase {
+
+ public static $locationInfo;
+
+ public function testConstructWithLoggerName() {
+ $l = LoggerLevel :: getLevelDebug();
+ $e = new LoggerLoggingEvent('fqcn', 'TestLogger', $l, 'test');
+ self::assertEquals($e->getLoggerName(), 'TestLogger');
+ }
+
+ public function testConstructWithTimestamp() {
+ $l = LoggerLevel :: getLevelDebug();
+ $timestamp = microtime(true);
+ $e = new LoggerLoggingEvent('fqcn', 'TestLogger', $l, 'test', $timestamp);
+ self::assertEquals($e->getTimeStamp(), $timestamp);
+ }
+
+ public function testGetStartTime() {
+ $time = LoggerLoggingEvent :: getStartTime();
+ self::assertType('float', $time);
+ $time2 = LoggerLoggingEvent :: getStartTime();
+ self::assertEquals($time, $time2);
+ }
+
+ public function testGetLocationInformation() {
+ $hierarchy = LoggerHierarchy :: singleton();
+ $root = $hierarchy->getRootLogger();
+
+ $a = new LoggerLoggingEventTestCaseAppender('A1');
+ $a->setLayout( new LoggerLoggingEventTestCaseLayout() );
+ $root->addAppender($a);
+
+ $logger = $hierarchy->getLogger('test');
+
+ $line = __LINE__; $logger->debug('test');
+ $hierarchy->shutdown();
+
+ $li = self::$locationInfo;
+
+ self::assertEquals($li->getClassName(), get_class($this));
+ self::assertEquals($li->getFileName(), __FILE__);
+ self::assertEquals($li->getLineNumber(), $line);
+ self::assertEquals($li->getMethodName(), __FUNCTION__);
+
+ }
+
+}
diff --git a/thirdparty/apache-log4php/src/test/php/LoggerManagerTest.php b/thirdparty/apache-log4php/src/test/php/LoggerManagerTest.php
new file mode 100644
index 0000000..691d2ac
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/LoggerManagerTest.php
@@ -0,0 +1,54 @@
+name;
+ }
+
+ public function isMale() {
+ return $this->male;
+ }
+
+ public function setName($name) {
+ $this->name = $name;
+ }
+
+ public function setMale($male) {
+ $this->male = $male;
+ }
+}
+/**
+ * Tests the LoggerReflectionUtils class
+ */
+class LoggerReflectionUtilsTest extends PHPUnit_Framework_TestCase {
+
+ public function testSimpleSet() {
+ $s = new Simple();
+ $ps = new LoggerReflectionUtils($s);
+ $ps->setProperty("name", "Joe");
+ $ps->setProperty("male", true);
+
+ $this->assertEquals($s->isMale(), true);
+ $this->assertEquals($s->getName(), 'Joe');
+ }
+
+ public function testSimpleArraySet() {
+ $arr['xxxname'] = 'Joe';
+ $arr['xxxmale'] = true;
+
+ $s = new Simple();
+ $ps = new LoggerReflectionUtils($s);
+ $ps->setProperties($arr, "xxx");
+
+ $this->assertEquals($s->getName(), 'Joe');
+ $this->assertEquals($s->isMale(), true);
+ }
+
+ public function testStaticArraySet() {
+ $arr['xxxname'] = 'Joe';
+ $arr['xxxmale'] = true;
+
+ $s = new Simple();
+ LoggerReflectionUtils::setPropertiesByObject($s,$arr,"xxx");
+
+ $this->assertEquals($s->getName(), 'Joe');
+ $this->assertEquals($s->isMale(), true);
+ }
+ public function testCreateObject() {
+ $object = LoggerReflectionUtils::createObject('LoggerLayoutSimple');
+ $name = get_class($object);
+ self::assertEquals($name, 'LoggerLayoutSimple');
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/LoggerRootTest.php b/thirdparty/apache-log4php/src/test/php/LoggerRootTest.php
new file mode 100644
index 0000000..5674c3a
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/LoggerRootTest.php
@@ -0,0 +1,52 @@
+loggerRoot = new LoggerRoot();
+ }
+
+ public function testIfLevelIsInitiallyLevelAll() {
+ self::assertEquals($this->loggerRoot->getLevel()->toString(), 'ALL');
+ }
+
+ public function testIfNameIsRoot() {
+ self::assertEquals($this->loggerRoot->getName(), 'root');
+ }
+
+ public function testIfParentIsNull() {
+ self::assertSame($this->loggerRoot->getParent(), null);
+ }
+
+ public function testSetParent() {
+ $hierarchy = new LoggerHierarchy(new LoggerRoot());
+ $l = $hierarchy->getLogger('dummy');
+ $this->loggerRoot->setParent($l);
+ $this->testIfParentIsNull();
+ }
+
+}
diff --git a/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderConsoleTest.php b/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderConsoleTest.php
new file mode 100644
index 0000000..119c044
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderConsoleTest.php
@@ -0,0 +1,75 @@
+setTarget('STDOUT');
+ $appender->setLayout($layout);
+ $appender->activateOptions();
+ $appender->append($event);
+ $appender->close();
+ }
+
+ public function testSimpleStdErrLogging() {
+ $layout = new LoggerLayoutSimple();
+
+ $event = new LoggerLoggingEvent('LoggerAppenderConsoleTest',
+ new Logger('mycategory'),
+ LoggerLevel::getLevelWarn(),
+ "my message");
+
+ $appender = new LoggerAppenderConsole("mylogger");
+ $appender->setTarget('STDERR');
+ $appender->setLayout($layout);
+ $appender->activateOptions();
+ $appender->append($event);
+ $appender->close();
+ }
+
+
+ public function testSimpleDefaultLogging() {
+ $layout = new LoggerLayoutSimple();
+
+ $event = new LoggerLoggingEvent('LoggerAppenderConsoleTest',
+ new Logger('mycategory'),
+ LoggerLevel::getLevelWarn(),
+ "my message");
+
+ $appender = new LoggerAppenderConsole("mylogger");
+ $appender->setLayout($layout);
+ $appender->activateOptions();
+ $appender->append($event);
+ $appender->close();
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderEchoTest.php b/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderEchoTest.php
new file mode 100644
index 0000000..8abc7c9
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderEchoTest.php
@@ -0,0 +1,45 @@
+setLayout($layout);
+ $appender->activateOptions();
+ $event = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
+
+ ob_start();
+ $appender->append($event);
+ $v = ob_get_contents();
+ ob_end_clean();
+
+ $e = "ERROR - testmessage\n";
+ self::assertEquals($v, $e);
+ }
+
+}
diff --git a/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderFileTest.php b/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderFileTest.php
new file mode 100644
index 0000000..b594593
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderFileTest.php
@@ -0,0 +1,58 @@
+setFileName('../../../target/phpunit/TEST.txt');
+ $appender->setLayout($layout);
+ $appender->activateOptions();
+ $appender->append($event);
+ $appender->close();
+
+ $v = file_get_contents('../../../target/phpunit/TEST.txt');
+ $e = "WARN - my message".PHP_EOL;
+ self::assertEquals($e, $v);
+ }
+
+ protected function tearDown() {
+ unlink('../../../target/phpunit/TEST.txt');
+ rmdir('../../../target/phpunit');
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderNullTest.php b/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderNullTest.php
new file mode 100644
index 0000000..af9d923
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderNullTest.php
@@ -0,0 +1,37 @@
+activateOptions();
+ $appender->append(null);
+ $appender->close();
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderPDOTest.php b/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderPDOTest.php
new file mode 100644
index 0000000..bb5a088
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderPDOTest.php
@@ -0,0 +1,70 @@
+setDSN($dsn);
+ $appender->setCreateTable(true);
+ $appender->activateOptions();
+ $appender->append($event);
+
+
+ $db = $appender->getDatabaseHandle();
+ $q = "select * from log4php_log";
+ $error = "";
+ if($result = $db->query($q)) {
+ while($row = $result->fetch()) {
+ self::assertEquals($row['1'], 'TEST');
+ self::assertEquals($row['2'], 'ERROR');
+ self::assertEquals($row['3'], 'testmessage');
+ }
+ } else {
+ // todo propagate exception to phpunit
+ self::assertTrue(false);
+ }
+ $appender->close();
+
+ }
+
+ public function tearDown() {
+ unlink('appenders/pdotest.sqlite');
+ }
+
+}
diff --git a/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderPhpTest.php b/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderPhpTest.php
new file mode 100644
index 0000000..adf97d4
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/appenders/LoggerAppenderPhpTest.php
@@ -0,0 +1,66 @@
+setLayout($layout);
+ $appender->activateOptions();
+ $event = new LoggerLoggingEvent("LoggerAppenderPhpTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
+ $appender->append($event);
+
+ $event = new LoggerLoggingEvent("LoggerAppenderPhpTest", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+ $appender->append($event);
+
+ $event = new LoggerLoggingEvent("LoggerAppenderPhpTest", new Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage");
+ $appender->append($event);
+ }
+
+ protected function tearDown() {
+ restore_error_handler();
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/bootstrap.php b/thirdparty/apache-log4php/src/test/php/bootstrap.php
new file mode 100644
index 0000000..c9e8c75
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/bootstrap.php
@@ -0,0 +1,42 @@
+getAppender('A1');
+ self::assertType('LoggerAppenderConsole', $appender);
+ $layout = $appender->getLayout();
+ self::assertType('LoggerLayoutTTCC', $layout);
+ }
+
+ public function testResetConfiguration() {
+ self::markTestIncomplete();
+
+ $this->testConfigure();
+ //$root = LoggerManager::getRootLogger();
+ $hierarchy = LoggerHierarchy::singleton();
+ var_dump(count($hierarchy->getCurrentLoggers()));
+ LoggerConfiguratorBasic::resetConfiguration();
+ var_dump(count($hierarchy->getCurrentLoggers()));
+ /*
+ $logger = LoggerManager::getLogger('A1');
+
+ $layout = $logger->getLayout();
+ var_dump($layout);
+
+ var_dump($logger->getName());
+ */
+ //$appender = LoggerManager::getRootLogger()->getAppender('A1');
+ //var_dump($appender);
+ }
+
+ /*public function testRootLogger() {
+ $root = LoggerManager::getRootLogger();
+ $a = $root->getAppender('A1');
+ self::assertType('LoggerAppenderConsole', $a);
+ $l = $a->getLayout();
+ self::assertType('LoggerLayoutTTCC', $l);
+ }*/
+
+}
diff --git a/thirdparty/apache-log4php/src/test/php/configurators/LoggerConfiguratorIniTest.php b/thirdparty/apache-log4php/src/test/php/configurators/LoggerConfiguratorIniTest.php
new file mode 100644
index 0000000..741ab85
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/configurators/LoggerConfiguratorIniTest.php
@@ -0,0 +1,73 @@
+getRootLogger();
+ self::assertEquals(LoggerLevel::getLevelWarn(), $root->getLevel());
+ $appender = $root->getAppender("default");
+ self::assertTrue($appender instanceof LoggerAppenderEcho);
+ $layout = $appender->getLayout();
+ self::assertTrue($layout instanceof LoggerLayoutSimple);
+
+ $logger = $hierarchy->getLogger('mylogger');
+ self::assertFalse($logger->getAdditivity());
+
+ $logger2 = $hierarchy->getLogger('mylogger');
+ $logger2->setAdditivity(true);
+ self::assertTrue($logger2->getAdditivity());
+ self::assertTrue($logger->getAdditivity());
+ }
+
+ public function testConfigureWithRootCategory() {
+ LoggerConfiguratorIni::configure('configurators/test3.properties');
+ $hierarchy = LoggerManager::getLoggerRepository();
+ $root = $hierarchy->getRootLogger();
+ self::assertEquals(LoggerLevel::getLevelWarn(), $root->getLevel());
+ $appender = $root->getAppender("default");
+ self::assertTrue($appender instanceof LoggerAppenderEcho);
+ $layout = $appender->getLayout();
+ self::assertTrue($layout instanceof LoggerLayoutSimple);
+ }
+
+ public function testConfigureWithoutIniFile() {
+ self::assertFalse(LoggerConfiguratorIni::configure());
+ }
+
+ public function testConfigureWithEmptyIniFile() {
+ self::assertFalse(LoggerConfiguratorIni::configure('configurators/test2.properties'));
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/configurators/LoggerConfiguratorPhpTest.php b/thirdparty/apache-log4php/src/test/php/configurators/LoggerConfiguratorPhpTest.php
new file mode 100644
index 0000000..c6e59e9
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/configurators/LoggerConfiguratorPhpTest.php
@@ -0,0 +1,47 @@
+getRootLogger();
+// TODO: wrong level in phpUnderControl?
+// self::assertEquals(LoggerLevel::getLevelWarn(), $root->getLevel());
+ $appender = $root->getAppender("default");
+ self::assertTrue($appender instanceof LoggerAppenderEcho);
+ $layout = $appender->getLayout();
+ self::assertTrue($layout instanceof LoggerLayoutSimple);
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/configurators/LoggerConfiguratorXmlTest.php b/thirdparty/apache-log4php/src/test/php/configurators/LoggerConfiguratorXmlTest.php
new file mode 100644
index 0000000..57bdda9
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/configurators/LoggerConfiguratorXmlTest.php
@@ -0,0 +1,49 @@
+getRootLogger();
+ self::assertEquals(LoggerLevel::getLevelWarn(), $root->getLevel());
+ $appender = $root->getAppender("default");
+ self::assertTrue($appender instanceof LoggerAppenderEcho);
+ $layout = $appender->getLayout();
+ self::assertTrue($layout instanceof LoggerLayoutSimple);
+
+// $logger = $hierarchy->getLogger('mylogger');
+// self::assertEquals(LoggerLevel::getLevelInfo(), $logger->getLevel());
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/configurators/test1.php b/thirdparty/apache-log4php/src/test/php/configurators/test1.php
new file mode 100644
index 0000000..2f0697e
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/configurators/test1.php
@@ -0,0 +1,40 @@
+ 'ALL',
+ 'rootLogger' => array(
+ 'level' => 'WARN',
+ 'appenders' => array('default'),
+ ),
+ 'loggers' => array(
+ 'mylogger' => array(
+ 'level' => 'INFO',
+ 'appenders' => array('default'),
+ ),
+ ),
+ 'appenders' => array(
+ 'default' => array(
+ 'class' => 'LoggerAppenderEcho',
+ 'layout' => array(
+ 'class' => 'LoggerLayoutSimple'
+ ),
+ ),
+ ),
+ );
\ No newline at end of file
diff --git a/thirdparty/apache-log4php/src/test/php/configurators/test1.properties b/thirdparty/apache-log4php/src/test/php/configurators/test1.properties
new file mode 100644
index 0000000..4b36145
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/configurators/test1.properties
@@ -0,0 +1,21 @@
+; 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.
+;
+log4php.appender.default = LoggerAppenderEcho
+log4php.appender.default.layout = LoggerLayoutSimple
+
+log4php.additivity.mylogger= "false"
+log4php.logger.mylogger = INFO, default
+log4php.rootLogger = WARN, default
diff --git a/thirdparty/apache-log4php/src/test/php/configurators/test1.xml b/thirdparty/apache-log4php/src/test/php/configurators/test1.xml
new file mode 100644
index 0000000..6ff6cb9
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/configurators/test1.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/thirdparty/apache-log4php/src/test/php/configurators/test2.properties b/thirdparty/apache-log4php/src/test/php/configurators/test2.properties
new file mode 100644
index 0000000..093bdd2
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/configurators/test2.properties
@@ -0,0 +1,16 @@
+; 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.
+;
+; EMPTY PROPERTIES
\ No newline at end of file
diff --git a/thirdparty/apache-log4php/src/test/php/configurators/test3.properties b/thirdparty/apache-log4php/src/test/php/configurators/test3.properties
new file mode 100644
index 0000000..ac5dc24
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/configurators/test3.properties
@@ -0,0 +1,18 @@
+; 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.
+;
+log4php.appender.default = LoggerAppenderEcho
+log4php.appender.default.layout = LoggerLayoutSimple
+log4php.rootCategory = WARN, default
diff --git a/thirdparty/apache-log4php/src/test/php/filters/LoggerFilterDenyAllTest.php b/thirdparty/apache-log4php/src/test/php/filters/LoggerFilterDenyAllTest.php
new file mode 100644
index 0000000..6a25d05
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/filters/LoggerFilterDenyAllTest.php
@@ -0,0 +1,44 @@
+decide($eventError);
+ self::assertEquals($result, LoggerFilter::DENY);
+
+ $result = $filter->decide($eventDebug);
+ self::assertEquals($result, LoggerFilter::DENY);
+
+ $result = $filter->decide($eventWarn);
+ self::assertEquals($result, LoggerFilter::DENY);
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/filters/LoggerFilterLevelMatchTest.php b/thirdparty/apache-log4php/src/test/php/filters/LoggerFilterLevelMatchTest.php
new file mode 100644
index 0000000..2f8d80e
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/filters/LoggerFilterLevelMatchTest.php
@@ -0,0 +1,122 @@
+setAcceptOnMatch(true);
+ $filter->setLevelToMatch(LoggerLevel::getLevelError());
+
+ $eventError = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
+ $eventDebug = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage");
+ $eventWarn = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+
+ $result = $filter->decide($eventError);
+ self::assertEquals($result, LoggerFilter::ACCEPT);
+
+ $result = $filter->decide($eventDebug);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+
+ $result = $filter->decide($eventWarn);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+ }
+
+ public function testDecideDenyErrorLevel() {
+ $filter = new LoggerFilterLevelMatch();
+ $filter->setAcceptOnMatch("false");
+ $filter->setLevelToMatch(LoggerLevel::getLevelError());
+
+ $eventError = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
+ $eventDebug = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage");
+ $eventWarn = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+
+ $result = $filter->decide($eventError);
+ self::assertEquals($result, LoggerFilter::DENY);
+
+ $result = $filter->decide($eventDebug);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+
+ $result = $filter->decide($eventWarn);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+ }
+
+ public function testDecideAcceptWarnLevel() {
+ $filter = new LoggerFilterLevelMatch();
+ $filter->setAcceptOnMatch("true");
+ $filter->setLevelToMatch(LoggerLevel::getLevelWarn());
+
+ $eventError = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
+ $eventDebug = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage");
+ $eventWarn = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+
+ $result = $filter->decide($eventError);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+
+ $result = $filter->decide($eventDebug);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+
+ $result = $filter->decide($eventWarn);
+ self::assertEquals($result, LoggerFilter::ACCEPT);
+ }
+
+ public function testDecideDenyWarnLevel() {
+ $filter = new LoggerFilterLevelMatch();
+ $filter->setAcceptOnMatch("false");
+ $filter->setLevelToMatch(LoggerLevel::getLevelWarn());
+
+ $eventError = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
+ $eventDebug = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage");
+ $eventWarn = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+
+ $result = $filter->decide($eventError);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+
+ $result = $filter->decide($eventDebug);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+
+ $result = $filter->decide($eventWarn);
+ self::assertEquals($result, LoggerFilter::DENY);
+ }
+
+ public function testDecideDenyDebugLevel() {
+ $filter = new LoggerFilterLevelMatch();
+ $filter->setAcceptOnMatch("false");
+ $filter->setLevelToMatch(LoggerLevel::getLevelDebug());
+
+ $eventError = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
+ $eventDebug = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage");
+ $eventWarn = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+
+ $result = $filter->decide($eventError);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+
+ $result = $filter->decide($eventDebug);
+ self::assertEquals($result, LoggerFilter::DENY);
+
+ $result = $filter->decide($eventWarn);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/filters/LoggerFilterLevelRangeTest.php b/thirdparty/apache-log4php/src/test/php/filters/LoggerFilterLevelRangeTest.php
new file mode 100644
index 0000000..7d474f6
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/filters/LoggerFilterLevelRangeTest.php
@@ -0,0 +1,67 @@
+setAcceptOnMatch("true");
+ $filter->setLevelMin(LoggerLevel::getLevelWarn());
+ $filter->setLevelMax(LoggerLevel::getLevelError());
+
+ $eventError = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
+ $eventDebug = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage");
+ $eventWarn = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+
+ $result = $filter->decide($eventError);
+ self::assertEquals($result, LoggerFilter::ACCEPT);
+
+ $result = $filter->decide($eventDebug);
+ self::assertEquals($result, LoggerFilter::DENY);
+
+ $result = $filter->decide($eventWarn);
+ self::assertEquals($result, LoggerFilter::ACCEPT);
+ }
+
+ public function testDecideAcceptFalse() {
+ $filter = new LoggerFilterLevelRange();
+ $filter->setAcceptOnMatch("false");
+ $filter->setLevelMin(LoggerLevel::getLevelWarn());
+ $filter->setLevelMax(LoggerLevel::getLevelError());
+
+ $eventError = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
+ $eventDebug = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage");
+ $eventWarn = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+
+ $result = $filter->decide($eventError);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+
+ $result = $filter->decide($eventDebug);
+ self::assertEquals($result, LoggerFilter::DENY);
+
+ $result = $filter->decide($eventWarn);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+ }
+ }
diff --git a/thirdparty/apache-log4php/src/test/php/filters/LoggerFilterStringMatchTest.php b/thirdparty/apache-log4php/src/test/php/filters/LoggerFilterStringMatchTest.php
new file mode 100644
index 0000000..333f42a
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/filters/LoggerFilterStringMatchTest.php
@@ -0,0 +1,111 @@
+setAcceptOnMatch("true");
+ $filter->setStringToMatch("testmessage");
+
+ $eventError = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
+ $eventError2 = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "xyz");
+ $eventDebug = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
+ $eventDebug2 = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelDebug(), "xyz");
+ $eventWarn = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+ $eventWarn2 = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelWarn(), "xyz");
+
+ $result = $filter->decide($eventError);
+ self::assertEquals($result, LoggerFilter::ACCEPT);
+
+ $result = $filter->decide($eventError2);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+
+ $result = $filter->decide($eventDebug);
+ self::assertEquals($result, LoggerFilter::ACCEPT);
+
+ $result = $filter->decide($eventDebug2);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+
+ $result = $filter->decide($eventWarn);
+ self::assertEquals($result, LoggerFilter::ACCEPT);
+
+ $result = $filter->decide($eventWarn2);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+ }
+
+ public function testDecideDeny() {
+ $filter = new LoggerFilterStringMatch();
+ $filter->setAcceptOnMatch("false");
+ $filter->setStringToMatch("testmessage");
+
+ $eventError = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
+ $eventError2 = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "xyz");
+ $eventDebug = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
+ $eventDebug2 = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelDebug(), "xyz");
+ $eventWarn = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+ $eventWarn2 = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelWarn(), "xyz");
+
+ $result = $filter->decide($eventError);
+ self::assertEquals($result, LoggerFilter::DENY);
+
+ $result = $filter->decide($eventError2);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+
+ $result = $filter->decide($eventDebug);
+ self::assertEquals($result, LoggerFilter::DENY);
+
+ $result = $filter->decide($eventDebug2);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+
+ $result = $filter->decide($eventWarn);
+ self::assertEquals($result, LoggerFilter::DENY);
+
+ $result = $filter->decide($eventWarn2);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+ }
+
+ public function testDecideNullMessage() {
+ $filter = new LoggerFilterStringMatch();
+ $filter->setAcceptOnMatch("false");
+ $filter->setStringToMatch("testmessage");
+
+ $event = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), null);
+
+ $result = $filter->decide($event);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+ }
+
+ public function testDecideNullMatch() {
+ $filter = new LoggerFilterStringMatch();
+ $filter->setAcceptOnMatch("false");
+ $filter->setStringToMatch(null);
+
+ $event = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
+
+ $result = $filter->decide($event);
+ self::assertEquals($result, LoggerFilter::NEUTRAL);
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/layouts/LoggerLayoutHtmlTest.php b/thirdparty/apache-log4php/src/test/php/layouts/LoggerLayoutHtmlTest.php
new file mode 100644
index 0000000..292a5e3
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/layouts/LoggerLayoutHtmlTest.php
@@ -0,0 +1,92 @@
+format($event);
+
+ $e = PHP_EOL."".PHP_EOL.
+ "| ".$event->getTime()." | ".PHP_EOL.
+ "getThreadName()." thread\">".$event->getThreadName()." | ".PHP_EOL.
+ "ERROR | ".PHP_EOL.
+ "TEST | ".PHP_EOL.
+ "testmessage | ".PHP_EOL.
+ "
".PHP_EOL;
+
+ self::assertEquals($v, $e);
+ }
+
+ public function testWarnLayout() {
+ $event = new LoggerLoggingEvent("LoggerLayoutHtmlTest", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+
+ $layout = new LoggerLayoutHtml();
+ $v = $layout->format($event);
+
+ $e = PHP_EOL."".PHP_EOL.
+ "| ".$event->getTime()." | ".PHP_EOL.
+ "getThreadName()." thread\">".$event->getThreadName()." | ".PHP_EOL.
+ "WARN | ".PHP_EOL.
+ "TEST | ".PHP_EOL.
+ "testmessage | ".PHP_EOL.
+ "
".PHP_EOL;
+
+ self::assertEquals($v, $e);
+ }
+
+ public function testContentType() {
+ $layout = new LoggerLayoutHtml();
+ $v = $layout->getContentType();
+ $e = "text/html";
+ self::assertEquals($v, $e);
+ }
+
+ public function testTitle() {
+ $layout = new LoggerLayoutHtml();
+ $v = $layout->getTitle();
+ $e = "Log4php Log Messages";
+ self::assertEquals($v, $e);
+
+ $layout->setTitle("test");
+ $v = $layout->getTitle();
+ $e = "test";
+ self::assertEquals($v, $e);
+ }
+
+ public function testHeader() {
+ $layout = new LoggerLayoutHtml();
+ $v = $layout->getHeader();
+ self::assertTrue(strpos($v, "") === 0);
+ }
+
+ public function testFooter() {
+ $layout = new LoggerLayoutHtml();
+ $v = $layout->getFooter();
+ self::assertTrue(strpos($v, "") === 0);
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/layouts/LoggerLayoutPatternTest.php b/thirdparty/apache-log4php/src/test/php/layouts/LoggerLayoutPatternTest.php
new file mode 100644
index 0000000..782e31f
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/layouts/LoggerLayoutPatternTest.php
@@ -0,0 +1,62 @@
+setConversionPattern("%-5p %c %X{username}: %m in %F at %L%n");
+ $v = $layout->format($event);
+ $e = 'ERROR TEST : testmessage in NA at NA'.PHP_EOL;
+
+ self::assertEquals($v, $e);
+ }
+
+ public function XtestWarnLayout() {
+ /*
+Comment in when this has been fixed:
+
+1) testWarnLayout(LoggerLayoutPatternTest)
+Undefined index: log4php.LoggerPatternConverter.spaces
+/Users/cgrobmeier/Documents/Development/workspace/log4php-trunk/src/main/php/helpers/LoggerPatternConverter.php:131
+/Users/cgrobmeier/Documents/Development/workspace/log4php-trunk/src/main/php/helpers/LoggerPatternConverter.php:104
+/Users/cgrobmeier/Documents/Development/workspace/log4php-trunk/src/main/php/layouts/LoggerPatternLayout.php:216
+/Users/cgrobmeier/Documents/Development/workspace/log4php-trunk/src/test/php/layouts/LoggerLayoutPatternTest.php:45
+
+ *
+ */
+ $event = new LoggerLoggingEvent("LoggerLayoutXml", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+
+ $layout = new LoggerLayoutPattern();
+ $layout->setConversionPattern("%-5p %c %X{username}: %m in %F at %L%n");
+ $v = $layout->format($event);
+ $e = 'WARN TEST : testmessage in NA at NA'.PHP_EOL;
+
+ self::assertEquals($v, $e);
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/layouts/LoggerLayoutSimpleTest.php b/thirdparty/apache-log4php/src/test/php/layouts/LoggerLayoutSimpleTest.php
new file mode 100644
index 0000000..d8dd5ce
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/layouts/LoggerLayoutSimpleTest.php
@@ -0,0 +1,37 @@
+format($event);
+ $e = "ERROR - testmessage\n";
+ self::assertEquals($v, $e);
+ }
+
+}
diff --git a/thirdparty/apache-log4php/src/test/php/layouts/LoggerLayoutTTCCTest.php b/thirdparty/apache-log4php/src/test/php/layouts/LoggerLayoutTTCCTest.php
new file mode 100644
index 0000000..abd50a8
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/layouts/LoggerLayoutTTCCTest.php
@@ -0,0 +1,57 @@
+format($event);
+
+ $pos = strpos($v, "[".$event->getThreadName()."] ERROR TEST - testmessage");
+
+ if ($pos === false) {
+ self::assertTrue(false);
+ } else if ($pos === true) {
+ self::assertTrue(true);
+ }
+ }
+
+ public function testWarnLayout() {
+ $event = new LoggerLoggingEvent("LoggerLayoutXml", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+
+ $layout = new LoggerLayoutTTCC();
+ $v = $layout->format($event);
+
+ $pos = strpos($v, "[".$event->getThreadName()."] WARN TEST - testmessage");
+
+ if ($pos === false) {
+ self::assertTrue(false);
+ } else if ($pos === true) {
+ self::assertTrue(true);
+ }
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/layouts/LoggerLayoutXmlTest.php b/thirdparty/apache-log4php/src/test/php/layouts/LoggerLayoutXmlTest.php
new file mode 100644
index 0000000..66cc121
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/layouts/LoggerLayoutXmlTest.php
@@ -0,0 +1,59 @@
+format($event);
+
+ $e = "getThreadName().
+ "\" timestamp=\"".number_format((float)($event->getTimeStamp() * 1000), 0, '', '')."\">".PHP_EOL.
+ "".PHP_EOL.
+ "".PHP_EOL.
+ "\n".PHP_EOL;
+
+ self::assertEquals($v, $e);
+ }
+
+ public function testWarnLayout() {
+ $event = new LoggerLoggingEvent("LoggerLayoutXml", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+
+ $layout = new LoggerLayoutXml();
+ $v = $layout->format($event);
+
+ $e = "getThreadName().
+ "\" timestamp=\"".number_format((float)($event->getTimeStamp() * 1000), 0, '', '')."\">".PHP_EOL.
+ "".PHP_EOL.
+ "".PHP_EOL.
+ "\n".PHP_EOL;
+
+ self::assertEquals($v, $e);
+ }
+}
diff --git a/thirdparty/apache-log4php/src/test/php/phpunit.xml b/thirdparty/apache-log4php/src/test/php/phpunit.xml
new file mode 100644
index 0000000..15d1600
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/phpunit.xml
@@ -0,0 +1,27 @@
+
+
+
+ .
+
+
+
+
+ ../../main/php
+
+ ../../main/php/appenders/LoggerAppenderAdodb.php
+
+
+
+
+
+
+
+
+
diff --git a/thirdparty/apache-log4php/src/test/php/renderers/LoggerRendererDefaultTest.php b/thirdparty/apache-log4php/src/test/php/renderers/LoggerRendererDefaultTest.php
new file mode 100644
index 0000000..46168bc
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/renderers/LoggerRendererDefaultTest.php
@@ -0,0 +1,40 @@
+doRender($class));
+ }
+
+}
diff --git a/thirdparty/apache-log4php/src/test/php/renderers/LoggerRendererMapTest.php b/thirdparty/apache-log4php/src/test/php/renderers/LoggerRendererMapTest.php
new file mode 100644
index 0000000..6e3a503
--- /dev/null
+++ b/thirdparty/apache-log4php/src/test/php/renderers/LoggerRendererMapTest.php
@@ -0,0 +1,64 @@
+