<?php namespace Vichan\Data\Driver; defined('TINYBOARD') or exit; /** * Log to syslog. */ class SyslogLogDriver implements LogDriver { private int $level; public function __construct(string $name, int $level, bool $print_stderr) { $flags = \LOG_ODELAY; if ($print_stderr) { $flags |= \LOG_PERROR; } if (!\openlog($name, $flags, \LOG_USER)) { throw new \RuntimeException('Unable to open syslog'); } $this->level = $level; } public function log(int $level, string $message): void { if ($level <= $this->level) { if (isset($_SERVER['REMOTE_ADDR'], $_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI'])) { // CGI \syslog($level, "$message - client: {$_SERVER['REMOTE_ADDR']}, request: \"{$_SERVER['REQUEST_METHOD']} {$_SERVER['REQUEST_URI']}\""); } else { \syslog($level, $message); } } } }