friendship ended with social-app. php is my new best friend
1<?php declare(strict_types = 1);
2
3namespace Contributte\Logging\Slack\Formatter;
4
5use Throwable;
6use Tracy\Helpers;
7
8final class ExceptionFormatter implements IFormatter
9{
10
11 public function format(SlackContext $context, Throwable $exception, string $priority): SlackContext
12 {
13 $context = clone $context;
14
15 $attachment = $context->createAttachment();
16 $attachment->setColor('danger');
17 $attachment->setMarkdown();
18
19 $message = $attachment->createField();
20 $message->setTitle(':date: Date');
21 $message->setValue(@date('[d.m.Y]'));
22 $message->setShort();
23
24 $message = $attachment->createField();
25 $message->setTitle(':timer_clock: Time');
26 $message->setValue(@date('[H:i:s]'));
27 $message->setShort();
28
29 $message = $attachment->createField();
30 $message->setTitle(':computer: Source');
31 $message->setValue(Helpers::getSource());
32
33 $message = $attachment->createField();
34 $message->setTitle(':mag_right: Exception');
35 $message->setValue(get_class($exception));
36
37 $message = $attachment->createField();
38 $message->setTitle(':envelope: Message');
39 $message->setValue($exception->getMessage());
40 $message->setShort();
41
42 $code = $attachment->createField();
43 $code->setTitle(':1234: Code');
44 $code->setValue((string) $exception->getCode());
45 $code->setShort();
46
47 $file = $attachment->createField();
48 $file->setTitle(':open_file_folder: File');
49 $file->setValue('```' . $exception->getFile() . ':' . $exception->getLine() . '```');
50
51 return $context;
52 }
53
54}