public function testSetAndEnableRequiredMessage() { // Remove all the appenders $this->logger->removeAppender('console'); $this->logger->removeAppender('splunk'); $this->logger->removeAppender('null'); // Create a new one $appender = new Console(); // Remove the console stream and replace it with a memory stream. $streamProp = new ReflectionProperty($appender, 'fp'); $memStream = \fopen('php://memory', 'rw'); $streamProp->setAccessible(true); $streamProp->setValue($appender, $memStream); // now add the new Console, with memory stream $this->logger->addAppender($appender); $this->logger->setAndEnableRequiredMessage('this is a required message'); // log something $expected = 'Test Log Message' . PHP_EOL; $this->logger->info($expected, []); $expected = 'this is a required message Test Log Message'; // see what happened! \fseek($memStream, 0); $actual = \stream_get_contents($memStream); $this->assertEquals(trim(preg_replace('/\\s+/', ' ', $expected)), trim(preg_replace('/\\s+/', ' ', $actual))); $pos = ftell($memStream); $this->logger->setAndEnableRequiredMessage('this is a required {MESSAGE}', true); $this->logger->setAndEnableRequiredContext(['some' => 'thing']); // log something $expected = 'Test Log Message' . PHP_EOL; $this->logger->info($expected, []); $expected = 'this is a required Test Log Message'; // see what happened! \fseek($memStream, $pos); $actual = \stream_get_contents($memStream); $this->assertEquals(trim(preg_replace('/\\s+/', ' ', $expected)), trim(preg_replace('/\\s+/', ' ', $actual))); }