Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user