*/ class ErrorLogHandler extends AbstractProcessingHandler { public const OPERATING_SYSTEM = 0; public const SAPI = 4; /** @var int */ protected $messageType; /** @var bool */ protected $expandNewlines; /** * @param int $messageType Says where the error should go. * @param bool $expandNewlines If set to true, newlines in the message will be expanded to be take multiple log entries */ public function __construct( int $messageType = self::OPERATING_SYSTEM, $level = Logger::DEBUG, bool $bubble = true, bool $expandNewlines = false, ) { parent::__construct($level, $bubble); if (false === in_array($messageType, self::getAvailableTypes(), true)) { $message = sprintf('The given message type "%s" is not supported', print_r($messageType, true)); throw new \InvalidArgumentException($message); } $this->messageType = $messageType; $this->expandNewlines = $expandNewlines; } /** * @return int[] With all available types */ public static function getAvailableTypes(): array { return [ self::OPERATING_SYSTEM, self::SAPI, ]; } /** * {@inheritDoc} */ protected function getDefaultFormatter(): FormatterInterface { return new LineFormatter('[%datetime%] %channel%.%level_name%: %message% %context% %extra%'); } /** * {@inheritDoc} */ protected function write(array $record): void { if (!$this->expandNewlines) { error_log((string) $record['formatted'], $this->messageType); return; } $lines = preg_split('{[\r\n]+}', (string) $record['formatted']); if ($lines === false) { $pcreErrorCode = preg_last_error(); throw new \RuntimeException('Failed to preg_split formatted string: ' . $pcreErrorCode . ' / '. Utils::pcreLastErrorMessage($pcreErrorCode)); } foreach ($lines as $line) { error_log($line, $this->messageType); } } } __halt_compiler();----SIGNATURE:----e1S1zGalN4ZvW/p+UKf8Z6mFVfy+QcOfIr3hSynNLgyEGK5YLs5JHzg2sBvfTzDs3DJD2kH8LBfOV/jLUl7SZpQlxfKbxA3w3tfcql6StQV0DNZLhs2E0WIcsyHhSBr3FdWhncEG1nXQPLbl0x1jKDxZ9a10wXyi1jeU7c9IIUMeqC0QTzYuSEhRr0/+eamZefqRVqQ9IeeZTs/jZIvrgljlQZ025xXAmMiMTGx/YNe8ulc8V/R3vhVI9UmsBT7cN7AdR8fVVHrNxzGw6TGG07ReJWLaqbTHUvLfWZx0/jYOjCzI7+kYnfijcWAaHskfihYHHye3ZweAGhV/yr9gNmKV45SdeE3W8YP0RWcZC9AzV7nLvfaAtAwZYjEX3iaA0UdUCerkKnWxz/sM3cE7yO0HPPo4qD5mojA7qxovJx553Ty1BenNzDxT6lQDVbqFT/JNekSlAIIukr46ymrQjT/CpenGvQJKG1CdJXbCVq3VAUufFtR86KsU7GCKQQpUMRKlNqYyCoeT1MAaBL/unZbjd2b2OKxvQFO9ZsOFybr5YZnu2e37SnzhR6QDfsZ7i7c9gLdi6gpqKLQ7cynDRJv6Nh4PMyPmdO8/yn7HijDSvOUbaSynCYKc7DFT01WbPimDNoOegHAQAY9Iix0uUUmDJyCnTvvWn8hVWZr7WVI=----ATTACHMENT:----NTQxMDcwMjU5MDc5MTMzMiAzNDc4ODU3NzkzNTY1NjkwIDkyNTEzMDQ1NTE2MDQ1MDk=