Skip to content

Commit 4dbd72e

Browse files
2 parents 99093c9 + f440b42 commit 4dbd72e

File tree

2 files changed

+69
-41
lines changed

2 files changed

+69
-41
lines changed

src/Event/Subscriber/EchoLogger.php

Lines changed: 6 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -11,51 +11,16 @@
1111

1212
namespace yswery\DNS\Event\Subscriber;
1313

14-
use Psr\Log\AbstractLogger;
15-
use Psr\Log\LogLevel;
16-
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
17-
use yswery\DNS\Event\Events;
18-
use yswery\DNS\Event\QueryReceiveEvent;
19-
use yswery\DNS\Event\QueryResponseEvent;
20-
use yswery\DNS\Event\ServerExceptionEvent;
21-
use yswery\DNS\Event\ServerStartEvent;
14+
use Psr\Log\LoggerInterface;
15+
use Psr\Log\LoggerTrait;
2216

23-
class EchoLogger extends AbstractLogger implements EventSubscriberInterface
17+
class EchoLogger extends LoggerSubscriber implements LoggerInterface
2418
{
25-
public static function getSubscribedEvents(): array
26-
{
27-
return [
28-
Events::SERVER_START => 'onServerStart',
29-
Events::SERVER_START_FAIL => 'onException',
30-
Events::SERVER_EXCEPTION => 'onException',
31-
Events::QUERY_RECEIVE => 'onQueryReceive',
32-
Events::QUERY_RESPONSE => 'onQueryResponse',
33-
];
34-
}
35-
36-
public function onServerStart(ServerStartEvent $event): void
37-
{
38-
$this->log(LogLevel::INFO, 'Server started.');
39-
$this->log(LogLevel::INFO, sprintf('Listening on %s', $event->getSocket()->getLocalAddress()));
40-
}
41-
42-
public function onException(ServerExceptionEvent $event): void
43-
{
44-
$this->log(LogLevel::ERROR, $event->getException()->getMessage());
45-
}
46-
47-
public function onQueryReceive(QueryReceiveEvent $event): void
48-
{
49-
foreach ($event->getMessage()->getQuestions() as $question) {
50-
$this->log(LogLevel::INFO, 'Query: '.$question);
51-
}
52-
}
19+
use LoggerTrait;
5320

54-
public function onQueryResponse(QueryResponseEvent $event): void
21+
public function __construct()
5522
{
56-
foreach ($event->getMessage()->getAnswers() as $answer) {
57-
$this->log(LogLevel::INFO, 'Answer: '.$answer);
58-
}
23+
$this->setLogger($this);
5924
}
6025

6126
public function log($level, $message, array $context = [])
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<?php
2+
3+
/*
4+
* This file is part of PHP DNS Server.
5+
*
6+
* (c) Yif Swery <yiftachswr@gmail.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace yswery\DNS\Event\Subscriber;
13+
14+
use Psr\Log\LoggerAwareInterface;
15+
use Psr\Log\LoggerAwareTrait;
16+
use Psr\Log\LogLevel;
17+
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
18+
use yswery\DNS\Event\Events;
19+
use yswery\DNS\Event\QueryReceiveEvent;
20+
use yswery\DNS\Event\QueryResponseEvent;
21+
use yswery\DNS\Event\ServerExceptionEvent;
22+
use yswery\DNS\Event\ServerStartEvent;
23+
24+
class LoggerSubscriber implements EventSubscriberInterface, LoggerAwareInterface
25+
{
26+
use LoggerAwareTrait;
27+
28+
public static function getSubscribedEvents(): array
29+
{
30+
return [
31+
Events::SERVER_START => 'onServerStart',
32+
Events::SERVER_START_FAIL => 'onException',
33+
Events::SERVER_EXCEPTION => 'onException',
34+
Events::QUERY_RECEIVE => 'onQueryReceive',
35+
Events::QUERY_RESPONSE => 'onQueryResponse',
36+
];
37+
}
38+
39+
public function onServerStart(ServerStartEvent $event): void
40+
{
41+
$this->logger->log(LogLevel::INFO, 'Server started.');
42+
$this->logger->log(LogLevel::INFO, sprintf('Listening on %s', $event->getSocket()->getLocalAddress()));
43+
}
44+
45+
public function onException(ServerExceptionEvent $event): void
46+
{
47+
$this->logger->log(LogLevel::ERROR, $event->getException()->getMessage());
48+
}
49+
50+
public function onQueryReceive(QueryReceiveEvent $event): void
51+
{
52+
foreach ($event->getMessage()->getQuestions() as $question) {
53+
$this->logger->log(LogLevel::INFO, 'Query: '.$question);
54+
}
55+
}
56+
57+
public function onQueryResponse(QueryResponseEvent $event): void
58+
{
59+
foreach ($event->getMessage()->getAnswers() as $answer) {
60+
$this->logger->log(LogLevel::INFO, 'Answer: '.$answer);
61+
}
62+
}
63+
}

0 commit comments

Comments
 (0)