59 lines
1.9 KiB
PHP
59 lines
1.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace OpenTelemetry\SDK\Logs;
|
|
|
|
use OpenTelemetry\SDK\Common\Attribute\Attributes;
|
|
use OpenTelemetry\SDK\Common\Configuration\Configuration;
|
|
use OpenTelemetry\SDK\Common\Configuration\Variables;
|
|
use const PHP_INT_MAX;
|
|
|
|
class LogRecordLimitsBuilder
|
|
{
|
|
/** @var ?int Maximum allowed attribute count per record */
|
|
private ?int $attributeCountLimit = null;
|
|
|
|
/** @var ?int Maximum allowed attribute value length */
|
|
private ?int $attributeValueLengthLimit = null;
|
|
|
|
/**
|
|
* @param int $attributeCountLimit Maximum allowed attribute count per record
|
|
*/
|
|
public function setAttributeCountLimit(int $attributeCountLimit): LogRecordLimitsBuilder
|
|
{
|
|
$this->attributeCountLimit = $attributeCountLimit;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param int $attributeValueLengthLimit Maximum allowed attribute value length
|
|
*/
|
|
public function setAttributeValueLengthLimit(int $attributeValueLengthLimit): LogRecordLimitsBuilder
|
|
{
|
|
$this->attributeValueLengthLimit = $attributeValueLengthLimit;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#attribute-limits
|
|
*/
|
|
public function build(): LogRecordLimits
|
|
{
|
|
$attributeCountLimit = $this->attributeCountLimit
|
|
?: Configuration::getInt(Variables::OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT);
|
|
$attributeValueLengthLimit = $this->attributeValueLengthLimit
|
|
?: Configuration::getInt(Variables::OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT);
|
|
|
|
if ($attributeValueLengthLimit === PHP_INT_MAX) {
|
|
$attributeValueLengthLimit = null;
|
|
}
|
|
|
|
$attributesFactory = Attributes::factory($attributeCountLimit, $attributeValueLengthLimit);
|
|
|
|
return new LogRecordLimits($attributesFactory);
|
|
}
|
|
}
|