* @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:----eCXSdWsiqmr0rP9Ufgj4ARtEbugjfAGkdXhN8MLpf9K9ySuiQmXhSxpETHL95g/XjAeiJFRc4Kmd+NNwWvfjBgoK+Y8B9CXwxuow2mo93BPx2PFSU7MqvD6qamuhnwo/BIlFfSU7b6JEOT6Dceo0DSFjGs2HJvo7lxfWjoapRol/ZyLRMb+ES68oagp/gtzBxJnkWpR5bVZ8dJMaBZtWc3KpTeUlcJ9uHbKvtGNgpRS7IPQvYWhl8b6btGr2tQG+y189PFNgEU1IJdV6cBsW2AB7HB3I8AiMzZ+zX+18MC6CMbzcxBtVqLZphGQf+jO7zmPI7kILrF3AqAMFrE9QT1uYHOGigZ1tH6p4paF2lH4kSCNcSUcgpbagE++WLf/nJ+xL5YexrsG/ul45/eY3lJ05ggYJKpYtgAzA5oGnAlzMSzH4fW/zIxgqjrSYlg3wnTbomR/d/UgSwL7V8iSn5PHi8tU5OGGYkpSKVmWP6pc8E4jOKKKWz84hEHnqLpGd2cMNMJS01owcv0OQiDFzktSYoNGgrkoj9/uUISKM7GHKs3RspSPnfXU0L9MnMb2GEFQxY/g0HxIhDJpAo868R9KxI+0bdjEma46IObTHwVt3x22al9AzbTqRlW3CS1FQI1hmp24Z9gXEB0t6eB+QFxQGAev6ZnNpXxUakMKKoGA=----ATTACHMENT:----MjAzODY3NzM1MzU1MTYwNyAxMjAwNjE5MzkzNzgwMDI1IDQzMjU1NzE3MzMzNTk4MDM=