mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-15 12:37:14 +01:00
79 lines
2.1 KiB
PHP
79 lines
2.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Xentral\Components\Logger\Handler;
|
|
|
|
use Xentral\Components\Logger\Context\ContextInterface;
|
|
|
|
final class StreamLogHandler extends AbstractLogHandler
|
|
{
|
|
/** @var string FORMAT */
|
|
private const FORMAT = '%TIME% [%ORIGIN_TYPE%:%ORIGIN_DETAIL%] %CLASS%::%METHOD%(%LINE%)'
|
|
.' %LEVEL% %MESSAGE% %DUMP%';
|
|
|
|
/** @var string $stream */
|
|
private $logFile;
|
|
|
|
/**
|
|
* @param string $logFilePath
|
|
* @param string $level
|
|
*/
|
|
public function __construct(string $logFilePath, string $level)
|
|
{
|
|
$this->logFile = $logFilePath;
|
|
$this->setMinimumLevel($level);
|
|
}
|
|
|
|
/**
|
|
* @param string $level
|
|
* @param string $message
|
|
* @param ContextInterface $context
|
|
*
|
|
* @return void
|
|
*/
|
|
public function addLogEntry(string $level, string $message, ContextInterface $context): void
|
|
{
|
|
if (!$this->canHandle($level)) {
|
|
return;
|
|
}
|
|
$dump = '';
|
|
if ($context->hasDump() && !$context->hasException()) {
|
|
$dump = print_r($context->getDump(), true);
|
|
}
|
|
if ($context->hasException()) {
|
|
$dump = (string)$context->getException();
|
|
}
|
|
$entry = self::FORMAT;
|
|
$entry = preg_replace(
|
|
[
|
|
'/%TIME%/',
|
|
'/%LEVEL%/',
|
|
'/%MESSAGE%/',
|
|
'/%CLASS%/',
|
|
'/%METHOD%/',
|
|
'/%LINE%/',
|
|
'/%ORIGIN_TYPE%/',
|
|
'/%ORIGIN_DETAIL%/',
|
|
'/%DUMP%/',
|
|
],
|
|
[
|
|
$context->getTime()->format('Y-m-d H:i:s'),
|
|
strtoupper($level),
|
|
$message,
|
|
$context->getClass(),
|
|
$context->getFunction(),
|
|
$context->getLine(),
|
|
$context->getOriginType(),
|
|
$context->getOriginDetail(),
|
|
$dump
|
|
],
|
|
$entry
|
|
);
|
|
$entry .= "\r\n";
|
|
$stream = fopen($this->logFile, 'ab+');
|
|
fwrite($stream, $entry);
|
|
fclose($stream);
|
|
}
|
|
}
|