public function testReopen() { $f1 = '/tmp/log1'; $f2 = '/tmp/log2'; if (is_file($f1)) { unlink($f1); } if (is_file($f1 . '_tmp')) { unlink($f1 . '_tmp'); } if (is_file($f2)) { unlink($f2); } if (is_file($f2 . '_tmp')) { unlink($f2 . '_tmp'); } Logger::configure(['appenders' => ['stream1' => ['class' => AppenderStream::class, 'stream' => $f1], 'stream2' => ['class' => AppenderStream::class, 'stream' => $f2]], 'root' => ['appenders' => ['stream1', 'stream2']]]); Logger::getRootLogger()->info($expected = uniqid()); $this->assertSame($expected, file_get_contents($f1)); $this->assertSame($expected, file_get_contents($f2)); rename($f1, $f1 . '_tmp'); rename($f2, $f2 . '_tmp'); Logger::reopen(); $this->assertSame('', file_get_contents($f1)); $this->assertSame('', file_get_contents($f2)); Logger::getRootLogger()->info($expected = uniqid()); $this->assertSame($expected, file_get_contents($f1)); $this->assertSame($expected, file_get_contents($f2)); }
protected function beforeRun() { $signalHandler = $this->getQueue()->getProcessor()->getSignalHandler(); // даже если сигнал был прислан до подписки, метод dispatch() еще не вызывался, // поэтому terminate нормально обработается $signalHandler->addHandler(SIGTERM, [$this, 'signalTerminate'], false); $signalHandler->addHandler(SIGINT, [$this, 'signalTerminate'], false); Logger::reopen(); }