Skip to content

Commit d4e1348

Browse files
committed
use configuration Schema
1 parent 92beb8e commit d4e1348

File tree

1 file changed

+29
-27
lines changed

1 file changed

+29
-27
lines changed

src/DI/MonologExtension.php

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
use Kdyby\Monolog\Processor\TracyUrlProcessor;
1818
use Kdyby\Monolog\Tracy\BlueScreenRenderer;
1919
use Kdyby\Monolog\Tracy\MonologAdapter;
20+
use Nette;
2021
use Nette\Configurator;
2122
use Nette\DI\Compiler;
22-
use Nette\DI\Config\Helpers;
2323
use Nette\DI\Helpers as DIHelpers;
2424
use Nette\DI\Statement;
2525
use Nette\PhpGenerator\ClassType as ClassTypeGenerator;
2626
use Nette\PhpGenerator\PhpLiteral;
27+
use Nette\Schema\Expect;
28+
use Nette\Schema\Schema;
2729
use Psr\Log\LoggerAwareInterface;
2830
use Tracy\Debugger;
2931
use Tracy\ILogger;
@@ -40,28 +42,29 @@ class MonologExtension extends \Nette\DI\CompilerExtension
4042
const TAG_PROCESSOR = 'monolog.processor';
4143
const TAG_PRIORITY = 'monolog.priority';
4244

43-
/**
44-
* @var mixed[]
45-
*/
46-
private $defaults = [
47-
'handlers' => [],
48-
'processors' => [],
49-
'name' => 'app',
50-
'hookToTracy' => TRUE,
51-
'tracyBaseUrl' => NULL,
52-
'usePriorityProcessor' => TRUE,
53-
// 'registerFallback' => TRUE,
54-
'accessPriority' => ILogger::INFO,
55-
];
45+
/** @var array */
46+
protected $config = [];
47+
48+
public function getConfigSchema(): Schema
49+
{
50+
return Expect::structure([
51+
'handlers' => Expect::anyOf(Expect::arrayOf('Nette\DI\Definitions\Statement'), 'false')->default([]),
52+
'processors' => Expect::anyOf(Expect::arrayOf('Nette\DI\Definitions\Statement'), 'false')->default([]),
53+
'name' => Expect::string('app'),
54+
'hookToTracy' => Expect::bool(TRUE),
55+
'tracyBaseUrl' => Expect::string(),
56+
'usePriorityProcessor' => Expect::bool(TRUE),
57+
'accessPriority' => Expect::string(ILogger::INFO),
58+
'logDir' => Expect::string(),
59+
])->castTo('array');
60+
}
5661

5762
public function loadConfiguration(): void
5863
{
5964
$builder = $this->getContainerBuilder();
60-
61-
$config = $this->validateConfig($this->defaults);
62-
$config['logDir'] = self::resolveLogDir($builder->parameters);
65+
$this->config['logDir'] = self::resolveLogDir($builder->parameters);
66+
$config = $this->config;
6367
self::createDirectory($config['logDir']);
64-
$this->setConfig($config);
6568

6669
if (!isset($builder->parameters[$this->name]) || (is_array($builder->parameters[$this->name]) && !isset($builder->parameters[$this->name]['name']))) {
6770
$builder->parameters[$this->name]['name'] = $config['name'];
@@ -100,6 +103,7 @@ public function loadConfiguration(): void
100103

101104
$this->loadHandlers($config);
102105
$this->loadProcessors($config);
106+
$this->setConfig($config);
103107
}
104108

105109
protected function loadHandlers(array $config): void
@@ -171,17 +175,15 @@ public function beforeCompile(): void
171175
$logger->addSetup('pushProcessor', ['@' . $serviceName]);
172176
}
173177

174-
// This part of code used deprecated methods, that were removed in Nette 3.0
175-
// Rewritten so that the output is same as before
176-
$originalConfig = Helpers::merge($this->getConfig(), DIHelpers::expand($this->defaults, $builder->parameters));
177-
/** @var array $config */
178-
$config = Helpers::merge($originalConfig, DIHelpers::expand(['registerFallback' => empty($handlers)], $builder->parameters));
178+
if (empty($handlers) && !array_key_exists('registerFallback', $this->config)) {
179+
$this->config['registerFallback'] = TRUE;
180+
}
179181

180-
if (array_key_exists('registerFallback', $config) && !empty($config['registerFallback'])) {
182+
if (array_key_exists('registerFallback', $this->config) && !empty($this->config['registerFallback'])) {
181183
$logger->addSetup('pushHandler', [
182184
new Statement(FallbackNetteHandler::class, [
183-
'appName' => $config['name'],
184-
'logDir' => $config['logDir'],
185+
'appName' => $this->config['name'],
186+
'logDir' => $this->config['logDir'],
185187
]),
186188
]);
187189
}
@@ -210,7 +212,7 @@ public function afterCompile(ClassTypeGenerator $class): void
210212
{
211213
$initialize = $class->getMethod('initialize');
212214

213-
if (Debugger::$logDirectory === NULL && isset($this->config['logDir'])) {
215+
if (Debugger::$logDirectory === NULL && array_key_exists('logDir', $this->config)) {
214216
$initialize->addBody('?::$logDirectory = ?;', [new PhpLiteral(Debugger::class), $this->config['logDir']]);
215217
}
216218
}

0 commit comments

Comments
 (0)