Skip to content

Commit d892ada

Browse files
Merge pull request #4 from joaojacome/master
Added a middleware processor, remove unnecessary code
2 parents 3269695 + 0574664 commit d892ada

20 files changed

+270
-283
lines changed

ContextualInterface.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ interface ContextualInterface
1212
/**
1313
* Set the context for the logger
1414
*
15-
* @param array $context
15+
* @param mixed $context
1616
*
1717
* @return mixed
1818
*/
19-
public function setContext(array $context);
19+
public function setContext($context);
2020

2121
/**
2222
* Retrieve the context of this class

DependencyInjection/Configuration.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ public function getConfigTreeBuilder()
4040
->defaultFalse()
4141
->treatNullLike(false)
4242
->end()
43+
->arrayNode('middlewares')
44+
->info('List of middlewares to use')
45+
->prototype('scalar')
46+
->end()
47+
->treatNullLike([])
48+
->end()
4349
->booleanNode('enable_request_id')
4450
->info('Add a request identifier to all log entries. Allows for easier tracking of logs during a request')
4551
->defaultTrue()

DependencyInjection/OnelogExtension.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public function load(array $configs, ContainerBuilder $container)
2727

2828
$container->setParameter('onelog.logger_service', $config['logger_service']);
2929
$container->setParameter('onelog.register_global', $config['register_global']);
30+
$container->setParameter('onelog.middlewares', $config['middlewares']);
3031
$container->setParameter('onelog.register_monolog_channels', $config['register_monolog_channels']);
3132
$container->setParameter('onelog.enable_request_id', $config['enable_request_id']);
3233
}

Helper/ContextualTrait.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace KoderHut\OnelogBundle\Helper;
44

5+
use KoderHut\OnelogBundle\ContextualInterface;
6+
57
/**
68
* Trait ContextualTrait
79
*
@@ -17,8 +19,14 @@ trait ContextualTrait
1719
/**
1820
* @inheritdoc
1921
*/
20-
public function setContext(array $context): self
22+
public function setContext($context): self
2123
{
24+
if (is_object($context) && $context instanceof ContextualInterface) {
25+
$context = $context->getContext();
26+
} else if (!is_array($context)) {
27+
throw new \InvalidArgumentException();
28+
}
29+
2230
$this->contextualData = $context;
2331

2432
return $this;

Middleware/ContextProcessor.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace KoderHut\OnelogBundle\Middleware;
4+
5+
use KoderHut\OnelogBundle\ContextualInterface;
6+
7+
/**
8+
* Class ContextProcessor
9+
*
10+
* @author Joao Jacome <[email protected]>
11+
*/
12+
class ContextProcessor implements MiddlewareInterface
13+
{
14+
/**
15+
* @param string $level
16+
* @param mixed $message
17+
* @param array $context
18+
*
19+
* @return array
20+
*/
21+
public function process($level, $message, $context): array
22+
{
23+
if ($message instanceof ContextualInterface) {
24+
$context = array_merge($context, $message->getContext());
25+
}
26+
27+
return [$message, $context];
28+
}
29+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace KoderHut\OnelogBundle\Middleware;
4+
5+
use KoderHut\OnelogBundle\ContextualInterface;
6+
7+
/**
8+
* Class ExceptionCodeProcessor
9+
*
10+
* @author Joao Jacome <[email protected]>
11+
*/
12+
class ExceptionCodeProcessor implements MiddlewareInterface
13+
{
14+
/**
15+
* @param string $level
16+
* @param mixed $message
17+
* @param array $context
18+
*
19+
* @return array
20+
*/
21+
public function process($level, $message, $context): array
22+
{
23+
if ($message instanceof \Throwable) {
24+
$context = array_merge($context, [
25+
'code' => $message->getCode(),
26+
]);
27+
}
28+
29+
return [$message, $context];
30+
}
31+
}

Middleware/MiddlewareInterface.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace KoderHut\OnelogBundle\Middleware;
4+
5+
/**
6+
* Interface MiddlewareInterface
7+
*
8+
* @author Joao Jacome <[email protected]>
9+
*/
10+
interface MiddlewareInterface
11+
{
12+
/**
13+
* @param string $level
14+
* @param mixed $message
15+
* @param array $context
16+
*
17+
* @return array
18+
*/
19+
public function process($level, $message, $context): array;
20+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace KoderHut\OnelogBundle\Middleware;
4+
5+
use KoderHut\OnelogBundle\ContextualInterface;
6+
7+
/**
8+
* Class SimpleMessageProcessor
9+
*
10+
* @author Joao Jacome <[email protected]>
11+
*/
12+
class SimpleMessageProcessor implements MiddlewareInterface
13+
{
14+
/**
15+
* @param string $level
16+
* @param mixed $message
17+
* @param array $context
18+
*
19+
* @return array
20+
*/
21+
public function process($level, $message, $context): array
22+
{
23+
if ($message instanceof \Throwable) {
24+
$message = $message->getMessage();
25+
}
26+
27+
return [$message, $context];
28+
}
29+
}

Middleware/StackTraceProcessor.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace KoderHut\OnelogBundle\Middleware;
4+
5+
use KoderHut\OnelogBundle\ContextualInterface;
6+
use KoderHut\OnelogBundle\MiddlewareProcessor;
7+
8+
/**
9+
* Class StackTraceProcessor
10+
*
11+
* @author Joao Jacome <[email protected]>
12+
*/
13+
class StackTraceProcessor implements MiddlewareInterface
14+
{
15+
/**
16+
* @param string $level
17+
* @param mixed $message
18+
* @param array $context
19+
*
20+
* @return array
21+
*/
22+
public function process($level, $message, $context): array
23+
{
24+
if ($message instanceof \Throwable) {
25+
$context = array_merge($context, [
26+
'stack_trace' => $message->getTraceAsString(),
27+
]);
28+
}
29+
30+
return [$message, $context];
31+
}
32+
}

MiddlewareProcessor.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace KoderHut\OnelogBundle;
4+
5+
use KoderHut\OnelogBundle\Middleware\MiddlewareInterface;
6+
7+
/**
8+
* Class MiddlewareProcessor
9+
*
10+
* @author Joao Jacome <[email protected]>
11+
*/
12+
class MiddlewareProcessor implements MiddlewareInterface
13+
{
14+
/**
15+
* @var MiddlewareInterface[]
16+
*/
17+
private $middlewares = [];
18+
19+
/**
20+
* @param MiddlewareInterface $middleware
21+
*/
22+
public function registerMiddleware(MiddlewareInterface $middleware)
23+
{
24+
$this->middlewares[] = $middleware;
25+
}
26+
27+
/**
28+
* @param string $level
29+
* @param mixed $message
30+
* @param array $context
31+
*
32+
* @return array
33+
*/
34+
public function process($level, $message, $context): array
35+
{
36+
foreach ($this->middlewares as $middleware) {
37+
[$message, $context] = $middleware->process($level, $message, $context);
38+
}
39+
40+
return [$message, $context];
41+
}
42+
}

0 commit comments

Comments
 (0)