‪TYPO3CMS  ‪main
LoggerTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\DataProvider;
21 use PHPUnit\Framework\Attributes\Test;
22 use Psr\Log\LogLevel;
28 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
29 
30 final class ‪LoggerTest extends UnitTestCase
31 {
32  #[Test]
33  public function ‪getNameGetsLoggerName(): void
34  {
35  $logger = new ‪Logger('test.core.log');
36  self::assertSame('test.core.log', $logger->getName());
37  }
38 
39  #[Test]
41  {
42  $logger = new ‪Logger('test.core.log');
43  $writer = new ‪WriterFixture();
44  $logger->addWriter(LogLevel::ERROR, $writer);
45  // warning < error, thus must not be logged
46  $logger->log(LogLevel::WARNING, 'test message');
47  self::assertEmpty($writer->getRecords());
48  }
49 
50  #[Test]
51  public function ‪loggerCallsProcessor(): void
52  {
53  $component = 'test.core.log';
54  $level = LogLevel::DEBUG;
55  $message = 'test';
56  $logger = new ‪Logger($component);
57  $processor = $this->getMockBuilder(NullProcessor::class)
58  ->onlyMethods(['processLogRecord'])
59  ->getMock();
60  $processor->expects(self::once())->method('processLogRecord')->willReturn(new ‪LogRecord($component, $level, $message));
61  $logger->addProcessor($level, $processor);
62  // we need a writer, otherwise we will not process log records
63  $logger->addWriter($level, new ‪NullWriter());
64  $logger->warning($message);
65  }
66 
67  #[Test]
68  public function ‪loggerLogsRecord(): void
69  {
70  $logger = new ‪Logger('test.core.log');
71  $writer = $this->getMockBuilder(NullWriter::class)
72  ->onlyMethods(['writeLog'])
73  ->getMock();
74  $writer->expects(self::once())->method('writeLog');
75  $logger->addWriter(LogLevel::DEBUG, $writer);
76  $logger->warning('test');
77  }
78 
79  #[Test]
81  {
82  $logger = new ‪Logger('test.core.log');
83  $writer = new ‪WriterFixture();
84  $logger->addWriter(LogLevel::NOTICE, $writer);
85  // notice == notice, thus must be logged
86  $logger->log(LogLevel::NOTICE, 'test message');
87  self::assertNotEmpty($writer->getRecords());
88  }
89 
91  {
92  return [
93  ['emergency'],
94  ['alert'],
95  ['critical'],
96  ['error'],
97  ['warning'],
98  ['notice'],
99  ['info'],
100  ['debug'],
101  ];
102  }
103 
104  #[DataProvider('loggerLogsRecordsThroughShorthandMethodDataProvider')]
105  #[Test]
106  public function ‪loggerLogsRecordsThroughShorthandMethod(string $shorthandMethod): void
107  {
108  $logger = new ‪Logger('test.core.log');
109  $writer = new ‪WriterFixture();
110  $logger->addWriter(LogLevel::DEBUG, $writer);
111  $logger->$shorthandMethod('test message');
112  self::assertNotEmpty($writer->getRecords());
113  }
114 
115  #[Test]
117  {
118  $logger = new ‪Logger('test.core.log');
119  $writer = new ‪WriterFixture();
120  $logger->addWriter(LogLevel::NOTICE, $writer);
121  // warning > notice, thus must be logged
122  $logger->log(LogLevel::WARNING, 'test message');
123  self::assertNotEmpty($writer->getRecords());
124  }
125 
126  #[Test]
128  {
129  $logger = new ‪Logger('test.core.log');
130  $writer = new ‪WriterFixture();
131  $logger->addWriter(LogLevel::NOTICE, $writer);
132  $writers = $logger->getWriters();
133  self::assertContains($writer, $writers[LogLevel::NOTICE]);
134  }
135 
136  #[Test]
138  {
139  $logger = new ‪Logger('test.core.log');
140  $writer = new ‪WriterFixture();
141  $logger->addWriter(LogLevel::NOTICE, $writer);
142  $writers = $logger->getWriters();
143  self::assertContains($writer, $writers[LogLevel::EMERGENCY]);
144  }
145 }
‪TYPO3\CMS\Core\Tests\Unit\Log\LoggerTest\loggerLogsRecordsAtLeastAsCriticalAsLogLevel
‪loggerLogsRecordsAtLeastAsCriticalAsLogLevel()
Definition: LoggerTest.php:80
‪TYPO3\CMS\Core\Tests\Unit\Log\LoggerTest\getNameGetsLoggerName
‪getNameGetsLoggerName()
Definition: LoggerTest.php:33
‪TYPO3\CMS\Core\Tests\Unit\Log\LoggerTest\loggerLogsRecordsThroughShorthandMethod
‪loggerLogsRecordsThroughShorthandMethod(string $shorthandMethod)
Definition: LoggerTest.php:106
‪TYPO3\CMS\Core\Tests\Unit\Log\LoggerTest\loggerLogsRecordsMoreCriticalThanLogLevel
‪loggerLogsRecordsMoreCriticalThanLogLevel()
Definition: LoggerTest.php:116
‪TYPO3\CMS\Core\Tests\Unit\Log\LoggerTest\addWriterAddsWriterAlsoToHigherLevelsThanSpecified
‪addWriterAddsWriterAlsoToHigherLevelsThanSpecified()
Definition: LoggerTest.php:137
‪TYPO3\CMS\Core\Tests\Unit\Log
‪TYPO3\CMS\Core\Tests\Unit\Log\LoggerTest\loggerCallsProcessor
‪loggerCallsProcessor()
Definition: LoggerTest.php:51
‪TYPO3\CMS\Core\Tests\Unit\Log\LoggerTest\addWriterAddsWriterToTheSpecifiedLevel
‪addWriterAddsWriterToTheSpecifiedLevel()
Definition: LoggerTest.php:127
‪TYPO3\CMS\Core\Tests\Unit\Log\LoggerTest\loggerLogsRecordsThroughShorthandMethodDataProvider
‪static loggerLogsRecordsThroughShorthandMethodDataProvider()
Definition: LoggerTest.php:90
‪TYPO3\CMS\Core\Tests\Unit\Log\LoggerTest\loggerLogsRecord
‪loggerLogsRecord()
Definition: LoggerTest.php:68
‪TYPO3\CMS\Core\Log\LogRecord
Definition: LogRecord.php:24
‪TYPO3\CMS\Core\Tests\Unit\Log\Fixtures\WriterFixture
Definition: WriterFixture.php:27
‪TYPO3\CMS\Core\Tests\Unit\Log\LoggerTest
Definition: LoggerTest.php:31
‪TYPO3\CMS\Core\Tests\Unit\Log\LoggerTest\loggerDoesNotLogRecordsLessCriticalThanLogLevel
‪loggerDoesNotLogRecordsLessCriticalThanLogLevel()
Definition: LoggerTest.php:40
‪TYPO3\CMS\Core\Log\Logger
Definition: Logger.php:28
‪TYPO3\CMS\Core\Log\Writer\NullWriter
Definition: NullWriter.php:24
‪TYPO3\CMS\Core\Log\Processor\NullProcessor
Definition: NullProcessor.php:24