| <?php |
| /** |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| * @category tests |
| * @package log4php |
| * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 |
| * @link http://logging.apache.org/log4php |
| */ |
| |
| use PHPUnit\Framework\TestCase; |
| |
| /** |
| * @group main |
| */ |
| class LoggerTest extends TestCase { |
| |
| private $testConfig1 = array ( |
| 'rootLogger' => array ( |
| 'level' => 'ERROR', |
| 'appenders' => array ( |
| 'default', |
| ), |
| ), |
| 'appenders' => array ( |
| 'default' => array ( |
| 'class' => 'LoggerAppenderEcho', |
| ), |
| ), |
| 'loggers' => array ( |
| 'mylogger' => array ( |
| 'additivity' => 'false', |
| 'level' => 'DEBUG', |
| 'appenders' => array ( |
| 'default', |
| ), |
| ), |
| ), |
| ); |
| |
| // For testing additivity |
| private $testConfig2 = array ( |
| 'appenders' => array ( |
| 'default' => array ( |
| 'class' => 'LoggerAppenderEcho', |
| ), |
| ), |
| 'rootLogger' => array( |
| 'appenders' => array('default'), |
| ), |
| 'loggers' => array ( |
| 'foo' => array ( |
| 'appenders' => array ( |
| 'default', |
| ), |
| ), |
| 'foo.bar' => array ( |
| 'appenders' => array ( |
| 'default', |
| ), |
| ), |
| 'foo.bar.baz' => array ( |
| 'appenders' => array ( |
| 'default', |
| ), |
| ), |
| ), |
| ); |
| |
| // For testing additivity |
| private $testConfig3 = array ( |
| 'appenders' => array ( |
| 'default' => array ( |
| 'class' => 'LoggerAppenderEcho', |
| ), |
| ), |
| 'rootLogger' => array( |
| 'appenders' => array('default'), |
| ), |
| 'loggers' => array ( |
| 'foo' => array ( |
| 'appenders' => array ( |
| 'default', |
| ), |
| ), |
| 'foo.bar' => array ( |
| 'appenders' => array ( |
| 'default', |
| ), |
| ), |
| 'foo.bar.baz' => array ( |
| 'level' => 'ERROR', |
| 'appenders' => array ( |
| 'default', |
| ), |
| ), |
| ), |
| ); |
| |
| protected function setUp() { |
| Logger::clear(); |
| Logger::resetConfiguration(); |
| } |
| |
| protected function tearDown() { |
| Logger::clear(); |
| Logger::resetConfiguration(); |
| } |
| |
| public function testLoggerExist() { |
| $l = Logger::getLogger('test'); |
| self::assertEquals($l->getName(), 'test'); |
| self::assertTrue(Logger::exists('test')); |
| } |
| |
| public function testCanGetRootLogger() { |
| $l = Logger::getRootLogger(); |
| self::assertEquals($l->getName(), 'root'); |
| } |
| |
| public function testCanGetASpecificLogger() { |
| $l = Logger::getLogger('test'); |
| self::assertEquals($l->getName(), 'test'); |
| } |
| |
| public function testCanLogToAllLevels() { |
| Logger::configure($this->testConfig1); |
| |
| $logger = Logger::getLogger('mylogger'); |
| ob_start(); |
| $logger->info('this is an info'); |
| $logger->warn('this is a warning'); |
| $logger->error('this is an error'); |
| $logger->debug('this is a debug message'); |
| $logger->fatal('this is a fatal message'); |
| $v = ob_get_contents(); |
| ob_end_clean(); |
| |
| $e = 'INFO - this is an info'.PHP_EOL; |
| $e .= 'WARN - this is a warning'.PHP_EOL; |
| $e .= 'ERROR - this is an error'.PHP_EOL; |
| $e .= 'DEBUG - this is a debug message'.PHP_EOL; |
| $e .= 'FATAL - this is a fatal message'.PHP_EOL; |
| |
| self::assertEquals($v, $e); |
| } |
| |
| public function testIsEnabledFor() { |
| Logger::configure($this->testConfig1); |
| |
| $logger = Logger::getLogger('mylogger'); |
| |
| self::assertFalse($logger->isTraceEnabled()); |
| self::assertTrue($logger->isDebugEnabled()); |
| self::assertTrue($logger->isInfoEnabled()); |
| self::assertTrue($logger->isWarnEnabled()); |
| self::assertTrue($logger->isErrorEnabled()); |
| self::assertTrue($logger->isFatalEnabled()); |
| |
| $logger = Logger::getRootLogger(); |
| |
| self::assertFalse($logger->isTraceEnabled()); |
| self::assertFalse($logger->isDebugEnabled()); |
| self::assertFalse($logger->isInfoEnabled()); |
| self::assertFalse($logger->isWarnEnabled()); |
| self::assertTrue($logger->isErrorEnabled()); |
| self::assertTrue($logger->isFatalEnabled()); |
| } |
| |
| public function testGetCurrentLoggers() { |
| Logger::clear(); |
| Logger::resetConfiguration(); |
| |
| self::assertEquals(0, count(Logger::getCurrentLoggers())); |
| |
| Logger::configure($this->testConfig1); |
| self::assertEquals(1, count(Logger::getCurrentLoggers())); |
| $list = Logger::getCurrentLoggers(); |
| self::assertEquals('mylogger', $list[0]->getName()); |
| } |
| |
| public function testAdditivity() { |
| Logger::configure($this->testConfig2); |
| |
| $logger = Logger::getLogger('foo.bar.baz'); |
| ob_start(); |
| $logger->info('test'); |
| $actual = ob_get_contents(); |
| ob_end_clean(); |
| |
| // The message should get logged 4 times: once by every logger in the |
| // hierarchy (including root) |
| $expected = str_repeat('INFO - test' . PHP_EOL, 4); |
| self::assertSame($expected, $actual); |
| } |
| |
| public function testAdditivity2() { |
| Logger::configure($this->testConfig3); |
| |
| $logger = Logger::getLogger('foo.bar.baz'); |
| ob_start(); |
| $logger->info('test'); |
| $actual = ob_get_contents(); |
| ob_end_clean(); |
| |
| // The message should get logged 3 times: once by every logger in the |
| // hierarchy, except foo.bar.baz which is set to level ERROR |
| $expected = str_repeat('INFO - test' . PHP_EOL, 3); |
| self::assertSame($expected, $actual); |
| } |
| } |