* @deprecated Since 2.9.0 and 3.3.0, Flowdock was shutdown we will thus drop this handler in Monolog 4 */ class FlowdockFormatter implements FormatterInterface { /** @var string */ private $source; /** @var string */ private $sourceEmail; public function __construct(string $source, string $sourceEmail) { $this->source = $source; $this->sourceEmail = $sourceEmail; } /** * {@inheritDoc} * * @return mixed[] */ public function format(array $record): array { $tags = [ '#logs', '#' . strtolower($record['level_name']), '#' . $record['channel'], ]; foreach ($record['extra'] as $value) { $tags[] = '#' . $value; } $subject = sprintf( 'in %s: %s - %s', $this->source, $record['level_name'], $this->getShortMessage($record['message']) ); $record['flowdock'] = [ 'source' => $this->source, 'from_address' => $this->sourceEmail, 'subject' => $subject, 'content' => $record['message'], 'tags' => $tags, 'project' => $this->source, ]; return $record; } /** * {@inheritDoc} * * @return mixed[][] */ public function formatBatch(array $records): array { $formatted = []; foreach ($records as $record) { $formatted[] = $this->format($record); } return $formatted; } public function getShortMessage(string $message): string { static $hasMbString; if (null === $hasMbString) { $hasMbString = function_exists('mb_strlen'); } $maxLength = 45; if ($hasMbString) { if (mb_strlen($message, 'UTF-8') > $maxLength) { $message = mb_substr($message, 0, $maxLength - 4, 'UTF-8') . ' ...'; } } else { if (strlen($message) > $maxLength) { $message = substr($message, 0, $maxLength - 4) . ' ...'; } } return $message; } } __halt_compiler();----SIGNATURE:----Vmup2GT+C4BrNoJL+8p3mRwurkfqWwtLBD2Xxtyppd6hQtxcwc7GygaOEsUi9eKL/B7IQwtKdBMgov+zVqF9KKfdZFV6Q+J0sZUpLD/6VqDLhxZxI0wztVr8rI1zxbmpBUfCTOj8s/bQQ+Oz9FNJ79clxMyWc3Xbf4wkGOIPV4p4GVh6fHbVOMOV9VSGT54zXOT7xaU9YRND713COBc0ZYUWYu8VjtrWD5Nl+7wXPhGY8D6WAP4ERu3gZ8rVLJq75IVWIGn6T8UdqcEXdN3eMa/IV+S4XUOp5jPHbvxjRFLSCWE2I8rUXAnU5H77bKmn4dh3cxzTHbdIiq8A34huZUAKaqr2+ytBdFfhUmCxV06PjUNXjxP5O7opbleB3bjEDnOemjU5dFjZFAMPH+YSkDF1tPko0DvdRO22TRwV+kG+wHZctX/99u545XK1B1x3ehZZgYN3uy5rlLtCOb/Fzm9dOzYJl7cXUDvJbk6j1GG1h/QO0masl1A08R/IqLOqJ6cEVYkhJBkcqBgeIJDNdnbzRrH1B2v1DvLA5cKTTZlK916pcsHoCWkrYW2W6gradhjE3mzvuxYoZcBsLZRfkxjTFJjAKG6Sz3oyi2WdIiqez5W0nCNV1HmfWCMQg7q8zPRawq8TMo56xBwv8q+obyZDtPq0w1iue4nkIsPxLFQ=----ATTACHMENT:----MTY1MDAwNDk1OTUwODM1NCA3NTMzMTkwMDEzNjk5MzYyIDQzNjk2MzU3NjU2NzA1OTk=