DATETIME HOSTNAME PROGRAM: MESSAGE * * This format works as input to rsyslog and can also be processed by the * default Logstash syslog input handler. * * @since 1.25 * @copyright © 2015 Wikimedia Foundation and contributors */ class SyslogHandler extends SyslogUdpHandler { /** * @var string $appname */ private $appname; /** * @var string $hostname */ private $hostname; /** * @param string $appname Application name to report to syslog * @param string $host Syslog host * @param int $port Syslog port * @param int $facility Syslog message facility * @param string $level The minimum logging level at which this handler * will be triggered * @param bool $bubble Whether the messages that are handled can bubble up * the stack or not */ public function __construct( $appname, $host, $port = 514, $facility = LOG_USER, $level = Logger::DEBUG, $bubble = true ) { parent::__construct( $host, $port, $facility, $level, $bubble ); $this->appname = $appname; $this->hostname = php_uname( 'n' ); } protected function makeCommonSyslogHeader( $severity ) { $pri = $severity + $this->facility; // Goofy date format courtesy of RFC 3164 :( // RFC 3164 actually specifies that the day of month should be space // padded rather than unpadded but this seems to work with rsyslog and // Logstash. $timestamp = date( 'M j H:i:s' ); return "<{$pri}>{$timestamp} {$this->hostname} {$this->appname}: "; } }