���� JFIF �� � ( %"1"%)+...383,7(-.-
![]() Server : Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.20 System : Linux st2.domain.com 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64 User : apache ( 48) PHP Version : 7.4.20 Disable Function : NONE Directory : /var/www/html/123vid/vendor/monolog/monolog/tests/Monolog/Handler/ |
<?php /* * This file is part of the Monolog package. * * (c) Jordi Boggiano <[email protected]> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Monolog\Handler; use Monolog\TestCase; use Monolog\Logger; class DeduplicationHandlerTest extends TestCase { /** * @covers Monolog\Handler\DeduplicationHandler::flush */ public function testFlushPassthruIfAllRecordsUnderTrigger() { $test = new TestHandler(); @unlink(sys_get_temp_dir().'/monolog_dedup.log'); $handler = new DeduplicationHandler($test, sys_get_temp_dir().'/monolog_dedup.log', 0); $handler->handle($this->getRecord(Logger::DEBUG)); $handler->handle($this->getRecord(Logger::INFO)); $handler->flush(); $this->assertTrue($test->hasInfoRecords()); $this->assertTrue($test->hasDebugRecords()); $this->assertFalse($test->hasWarningRecords()); } /** * @covers Monolog\Handler\DeduplicationHandler::flush * @covers Monolog\Handler\DeduplicationHandler::appendRecord */ public function testFlushPassthruIfEmptyLog() { $test = new TestHandler(); @unlink(sys_get_temp_dir().'/monolog_dedup.log'); $handler = new DeduplicationHandler($test, sys_get_temp_dir().'/monolog_dedup.log', 0); $handler->handle($this->getRecord(Logger::ERROR, 'Foo:bar')); $handler->handle($this->getRecord(Logger::CRITICAL, "Foo\nbar")); $handler->flush(); $this->assertTrue($test->hasErrorRecords()); $this->assertTrue($test->hasCriticalRecords()); $this->assertFalse($test->hasWarningRecords()); } /** * @covers Monolog\Handler\DeduplicationHandler::flush * @covers Monolog\Handler\DeduplicationHandler::appendRecord * @covers Monolog\Handler\DeduplicationHandler::isDuplicate * @depends testFlushPassthruIfEmptyLog */ public function testFlushSkipsIfLogExists() { $test = new TestHandler(); $handler = new DeduplicationHandler($test, sys_get_temp_dir().'/monolog_dedup.log', 0); $handler->handle($this->getRecord(Logger::ERROR, 'Foo:bar')); $handler->handle($this->getRecord(Logger::CRITICAL, "Foo\nbar")); $handler->flush(); $this->assertFalse($test->hasErrorRecords()); $this->assertFalse($test->hasCriticalRecords()); $this->assertFalse($test->hasWarningRecords()); } /** * @covers Monolog\Handler\DeduplicationHandler::flush * @covers Monolog\Handler\DeduplicationHandler::appendRecord * @covers Monolog\Handler\DeduplicationHandler::isDuplicate * @depends testFlushPassthruIfEmptyLog */ public function testFlushPassthruIfLogTooOld() { $test = new TestHandler(); $handler = new DeduplicationHandler($test, sys_get_temp_dir().'/monolog_dedup.log', 0); $record = $this->getRecord(Logger::ERROR); $record['datetime']->modify('+62seconds'); $handler->handle($record); $record = $this->getRecord(Logger::CRITICAL); $record['datetime']->modify('+62seconds'); $handler->handle($record); $handler->flush(); $this->assertTrue($test->hasErrorRecords()); $this->assertTrue($test->hasCriticalRecords()); $this->assertFalse($test->hasWarningRecords()); } /** * @covers Monolog\Handler\DeduplicationHandler::flush * @covers Monolog\Handler\DeduplicationHandler::appendRecord * @covers Monolog\Handler\DeduplicationHandler::isDuplicate * @covers Monolog\Handler\DeduplicationHandler::collectLogs */ public function testGcOldLogs() { $test = new TestHandler(); @unlink(sys_get_temp_dir().'/monolog_dedup.log'); $handler = new DeduplicationHandler($test, sys_get_temp_dir().'/monolog_dedup.log', 0); // handle two records from yesterday, and one recent $record = $this->getRecord(Logger::ERROR); $record['datetime']->modify('-1day -10seconds'); $handler->handle($record); $record2 = $this->getRecord(Logger::CRITICAL); $record2['datetime']->modify('-1day -10seconds'); $handler->handle($record2); $record3 = $this->getRecord(Logger::CRITICAL); $record3['datetime']->modify('-30seconds'); $handler->handle($record3); // log is written as none of them are duplicate $handler->flush(); $this->assertSame( $record['datetime']->getTimestamp() . ":ERROR:test\n" . $record2['datetime']->getTimestamp() . ":CRITICAL:test\n" . $record3['datetime']->getTimestamp() . ":CRITICAL:test\n", file_get_contents(sys_get_temp_dir() . '/monolog_dedup.log') ); $this->assertTrue($test->hasErrorRecords()); $this->assertTrue($test->hasCriticalRecords()); $this->assertFalse($test->hasWarningRecords()); // clear test handler $test->clear(); $this->assertFalse($test->hasErrorRecords()); $this->assertFalse($test->hasCriticalRecords()); // log new records, duplicate log gets GC'd at the end of this flush call $handler->handle($record = $this->getRecord(Logger::ERROR)); $handler->handle($record2 = $this->getRecord(Logger::CRITICAL)); $handler->flush(); // log should now contain the new errors and the previous one that was recent enough $this->assertSame( $record3['datetime']->getTimestamp() . ":CRITICAL:test\n" . $record['datetime']->getTimestamp() . ":ERROR:test\n" . $record2['datetime']->getTimestamp() . ":CRITICAL:test\n", file_get_contents(sys_get_temp_dir() . '/monolog_dedup.log') ); $this->assertTrue($test->hasErrorRecords()); $this->assertTrue($test->hasCriticalRecords()); $this->assertFalse($test->hasWarningRecords()); } public static function tearDownAfterClass() { @unlink(sys_get_temp_dir().'/monolog_dedup.log'); } }