function SyslogTest::testSyslogWriting

Same name in other branches
  1. 9 core/modules/syslog/tests/src/Kernel/SyslogTest.php \Drupal\Tests\syslog\Kernel\SyslogTest::testSyslogWriting()
  2. 8.9.x core/modules/syslog/tests/src/Kernel/SyslogTest.php \Drupal\Tests\syslog\Kernel\SyslogTest::testSyslogWriting()
  3. 11.x core/modules/syslog/tests/src/Kernel/SyslogTest.php \Drupal\Tests\syslog\Kernel\SyslogTest::testSyslogWriting()

@covers ::log

File

core/modules/syslog/tests/src/Kernel/SyslogTest.php, line 36

Class

SyslogTest
Test syslog logger functionality.

Namespace

Drupal\Tests\syslog\Kernel

Code

public function testSyslogWriting() : void {
    $request = Request::create('/page-not-found', 'GET', [], [], [], [
        'REMOTE_ADDR' => '1.2.3.4',
    ]);
    $request->headers
        ->set('Referer', 'other-site');
    $request->setSession(new Session(new MockArraySessionStorage()));
    \Drupal::requestStack()->push($request);
    $user = $this->getMockBuilder('Drupal\\Core\\Session\\AccountInterface')
        ->getMock();
    $user->method('id')
        ->willReturn(42);
    $this->container
        ->set('current_user', $user);
    \Drupal::logger('my_module')->warning('My warning message.', [
        'link' => '/my-link',
    ]);
    $log_filename = $this->container
        ->get('file_system')
        ->realpath('public://syslog.log');
    $logs = explode(PHP_EOL, file_get_contents($log_filename));
    $log = explode('|', $logs[0]);
    global $base_url;
    $this->assertEquals($base_url, $log[0]);
    $this->assertEquals('my_module', $log[2]);
    $this->assertEquals('1.2.3.4', $log[3]);
    $this->assertEquals($base_url . '/page-not-found', $log[4]);
    $this->assertEquals('other-site', $log[5]);
    $this->assertEquals('42', $log[6]);
    $this->assertEquals('/my-link', $log[7]);
    $this->assertEquals('My warning message.', $log[8]);
    // Test that an empty format prevents writing to the syslog.
    
    /** @var \Drupal\Core\Config\Config $config */
    $config = $this->container
        ->get('config.factory')
        ->getEditable('syslog.settings');
    $config->set('format', '');
    $config->save();
    unlink($log_filename);
    \Drupal::logger('my_module')->warning('My warning message.', [
        'link' => '/my-link',
    ]);
    $this->assertFileDoesNotExist($log_filename);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.