log: load formatter for handlers loaded with loader

This commit is contained in:
Yuri Kuznetsov
2024-08-01 18:47:57 +03:00
parent b34d8ebca8
commit a9e0dad0dd
2 changed files with 16 additions and 2 deletions
@@ -38,6 +38,8 @@ use ReflectionClass;
use RuntimeException;
/**
* @internal
*
* @phpstan-type DefaultHandlerLoaderData array{
* className?: ?class-string<HandlerInterface>,
* params?: ?array<string, mixed>,
@@ -82,9 +84,10 @@ class DefaultHandlerLoader
}
/**
* @internal
* @param DefaultHandlerLoaderData $data
*/
private function loadFormatter(array $data): ?FormatterInterface
public function loadFormatter(array $data): ?FormatterInterface
{
$formatterData = $data['formatter'] ?? null;
@@ -29,6 +29,7 @@
namespace Espo\Core\Log;
use Monolog\Handler\FormattableHandlerInterface;
use Monolog\Handler\HandlerInterface;
use Espo\Core\InjectableFactory;
@@ -71,7 +72,17 @@ class HandlerListLoader
if ($loaderClassName) {
$loader = $this->injectableFactory->create($loaderClassName);
return $loader->load($params);
$handler = $loader->load($params);
if ($handler instanceof FormattableHandlerInterface) {
$formatter = $this->defaultLoader->loadFormatter($data);
if ($formatter) {
$handler->setFormatter($formatter);
}
}
return $handler;
}
return $this->defaultLoader->load($data, $defaultLevel);