You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.8 KiB
90 lines
2.8 KiB
11 years ago
|
<?php
|
||
|
/**
|
||
|
* @author Carsten Brandt <mail@cebe.cc>
|
||
|
*/
|
||
|
|
||
|
namespace yiiunit\framework\log;
|
||
|
|
||
|
|
||
|
use yii\debug\LogTarget;
|
||
|
use yii\log\FileTarget;
|
||
|
use yii\log\Logger;
|
||
|
use yii\log\Target;
|
||
|
use yiiunit\TestCase;
|
||
|
|
||
|
class TargetTest extends TestCase
|
||
|
{
|
||
|
public static $messages;
|
||
|
|
||
|
public function filters()
|
||
|
{
|
||
|
return [
|
||
|
[[], ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']],
|
||
|
|
||
|
[['levels' => 0], ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']],
|
||
|
[
|
||
|
['levels' => Logger::LEVEL_INFO | Logger::LEVEL_WARNING | Logger::LEVEL_ERROR | Logger::LEVEL_TRACE],
|
||
|
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
|
||
|
],
|
||
|
[['levels' => ['error']], ['B', 'G', 'H']],
|
||
|
[['levels' => Logger::LEVEL_ERROR], ['B', 'G', 'H']],
|
||
|
[['levels' => ['error', 'warning']], ['B', 'C', 'G', 'H']],
|
||
|
[['levels' => Logger::LEVEL_ERROR | Logger::LEVEL_WARNING], ['B', 'C', 'G', 'H']],
|
||
|
|
||
|
[['categories' => ['application']], ['A', 'B', 'C', 'D', 'E']],
|
||
|
[['categories' => ['application*']], ['A', 'B', 'C', 'D', 'E', 'F']],
|
||
|
[['categories' => ['application.*']], ['F']],
|
||
|
[['categories' => ['application.components']], []],
|
||
|
[['categories' => ['application.components.Test']], ['F']],
|
||
|
[['categories' => ['application.components.*']], ['F']],
|
||
|
[['categories' => ['application.*', 'yii.db.*']], ['F', 'G', 'H']],
|
||
|
[['categories' => ['application.*', 'yii.db.*'], 'except' => ['yii.db.Command.*']], ['F', 'G']],
|
||
|
|
||
|
[['categories' => ['application', 'yii.db.*'], 'levels' => Logger::LEVEL_ERROR], ['B', 'G', 'H']],
|
||
|
[['categories' => ['application'], 'levels' => Logger::LEVEL_ERROR], ['B']],
|
||
|
[['categories' => ['application'], 'levels' => Logger::LEVEL_ERROR | Logger::LEVEL_WARNING], ['B', 'C']],
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dataProvider filters
|
||
|
*/
|
||
|
public function testFilter($filter, $expected)
|
||
|
{
|
||
|
static::$messages = [];
|
||
|
|
||
|
$logger = new Logger([
|
||
|
'targets' => [new TestTarget(array_merge($filter, ['logVars' => []]))],
|
||
|
'flushInterval' => 1,
|
||
|
]);
|
||
|
$logger->log('testA', Logger::LEVEL_INFO);
|
||
|
$logger->log('testB', Logger::LEVEL_ERROR);
|
||
|
$logger->log('testC', Logger::LEVEL_WARNING);
|
||
|
$logger->log('testD', Logger::LEVEL_TRACE);
|
||
|
$logger->log('testE', Logger::LEVEL_INFO, 'application');
|
||
|
$logger->log('testF', Logger::LEVEL_INFO, 'application.components.Test');
|
||
|
$logger->log('testG', Logger::LEVEL_ERROR, 'yii.db.Command');
|
||
|
$logger->log('testH', Logger::LEVEL_ERROR, 'yii.db.Command.whatever');
|
||
|
|
||
|
$this->assertEquals(count($expected), count(static::$messages));
|
||
|
$i = 0;
|
||
|
foreach($expected as $e) {
|
||
|
$this->assertEquals('test' . $e, static::$messages[$i++][0]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class TestTarget extends Target
|
||
|
{
|
||
|
public $exportInterval = 1;
|
||
|
|
||
|
/**
|
||
|
* Exports log [[messages]] to a specific destination.
|
||
|
* Child classes must implement this method.
|
||
|
*/
|
||
|
public function export()
|
||
|
{
|
||
|
TargetTest::$messages = array_merge(TargetTest::$messages, $this->messages);
|
||
|
$this->messages = [];
|
||
|
}
|
||
|
}
|