make severity an enum only
This commit is contained in:
parent
ee1b3601ce
commit
710822907b
|
|
@ -3,6 +3,7 @@
|
|||
declare(strict_types=1);
|
||||
|
||||
use OpenTelemetry\API\Logs\LogRecord;
|
||||
use OpenTelemetry\API\Logs\Severity;
|
||||
use OpenTelemetry\SDK\Common\Attribute\Attributes;
|
||||
use OpenTelemetry\SDK\Logs\Exporter\ConsoleExporterFactory;
|
||||
use OpenTelemetry\SDK\Logs\LoggerProvider;
|
||||
|
|
@ -24,7 +25,7 @@ $logger = $loggerProvider->getLogger('demo', '1.0', 'http://schema.url', ['foo'
|
|||
|
||||
$record = (new LogRecord(['foo' => 'bar', 'baz' => 'bat', 'msg' => 'hello world']))
|
||||
->setSeverityText('INFO')
|
||||
->setSeverityNumber(9);
|
||||
->setSeverityNumber(Severity::INFO);
|
||||
|
||||
/**
|
||||
* Note that Loggers should only be used directly by a log appender.
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ interface EventLoggerInterface
|
|||
mixed $payload = null,
|
||||
?int $timestamp = null,
|
||||
?ContextInterface $context = null,
|
||||
Severity|int|null $severityNumber = null,
|
||||
?Severity $severityNumber = null,
|
||||
?array $attributes = [],
|
||||
): void;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,9 +42,9 @@ class LogRecord
|
|||
/**
|
||||
* @see https://opentelemetry.io/docs/reference/specification/logs/data-model/#field-severitynumber
|
||||
*/
|
||||
public function setSeverityNumber(Severity|int $severityNumber): self
|
||||
public function setSeverityNumber(Severity $severityNumber): self
|
||||
{
|
||||
$this->severityNumber = ($severityNumber instanceof Severity) ? $severityNumber->value : $severityNumber;
|
||||
$this->severityNumber = $severityNumber->value;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,28 +4,30 @@ declare(strict_types=1);
|
|||
|
||||
namespace OpenTelemetry\API\Logs\Map;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use OpenTelemetry\API\Logs\Severity;
|
||||
use Psr\Log\LogLevel;
|
||||
|
||||
class Psr3
|
||||
{
|
||||
/**
|
||||
* Maps PSR-3 severity level (string) to the appropriate opentelemetry severity number
|
||||
* Maps PSR-3 severity level (string) to the appropriate opentelemetry severity
|
||||
*
|
||||
* @see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/data-model-appendix.md#appendix-b-severitynumber-example-mappings
|
||||
* @see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/data-model.md#field-severitynumber
|
||||
*/
|
||||
public static function severityNumber(string $level): int
|
||||
public static function severityNumber(string $level): Severity
|
||||
{
|
||||
return match (strtolower($level)) {
|
||||
LogLevel::DEBUG => 5,
|
||||
LogLevel::INFO => 9,
|
||||
LogLevel::NOTICE => 10,
|
||||
LogLevel::WARNING => 13,
|
||||
LogLevel::ERROR => 17,
|
||||
LogLevel::CRITICAL => 18,
|
||||
LogLevel::ALERT => 19,
|
||||
LogLevel::EMERGENCY => 21,
|
||||
default => 0,
|
||||
LogLevel::DEBUG => Severity::DEBUG,
|
||||
LogLevel::INFO => Severity::INFO,
|
||||
LogLevel::NOTICE => Severity::INFO2,
|
||||
LogLevel::WARNING => Severity::WARN,
|
||||
LogLevel::ERROR => Severity::ERROR,
|
||||
LogLevel::CRITICAL => Severity::ERROR2,
|
||||
LogLevel::ALERT => Severity::ERROR3,
|
||||
LogLevel::EMERGENCY => Severity::FATAL,
|
||||
default => throw new InvalidArgumentException('Unknown severity: ' . $level),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ class EventLogger implements EventLoggerInterface
|
|||
mixed $payload = null,
|
||||
?int $timestamp = null,
|
||||
?ContextInterface $context = null,
|
||||
Severity|int|null $severityNumber = null,
|
||||
?Severity $severityNumber = null,
|
||||
?array $attributes = [],
|
||||
): void {
|
||||
$logRecord = new LogRecord();
|
||||
|
|
@ -35,7 +35,7 @@ class EventLogger implements EventLoggerInterface
|
|||
$payload && $logRecord->setBody($payload);
|
||||
$logRecord->setTimestamp($timestamp ?? (int) (microtime(true)*LogRecord::NANOS_PER_SECOND));
|
||||
$context && $logRecord->setContext($context);
|
||||
$logRecord->setSeverityNumber($severityNumber ?? Severity::INFO);
|
||||
$severityNumber && $logRecord->setSeverityNumber($severityNumber);
|
||||
|
||||
$this->logger->emit($logRecord);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ class LogRecordTest extends TestCase
|
|||
return [
|
||||
['setBody', 'body', 'foo'],
|
||||
['setAttributes', 'attributes', ['foo' => 'bar']],
|
||||
['setSeverityNumber', 'severityNumber', 5],
|
||||
['setSeverityNumber', 'severityNumber', Severity::ERROR, Severity::ERROR->value],
|
||||
['setSeverityText', 'severityText', 'info'],
|
||||
['setObservedTimestamp', 'observedTimestamp', 999],
|
||||
|
|
|
|||
|
|
@ -32,7 +32,12 @@ class Psr3Test extends TestCase
|
|||
[LogLevel::NOTICE],
|
||||
[LogLevel::INFO],
|
||||
[LogLevel::DEBUG],
|
||||
['unknown'],
|
||||
];
|
||||
}
|
||||
|
||||
public function test_unknown_value_error(): void
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
Psr3::severityNumber('unknown');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ declare(strict_types=1);
|
|||
namespace OpenTelemetry\Tests\Unit\SDK\Logs;
|
||||
|
||||
use OpenTelemetry\API\Logs\LogRecord;
|
||||
use OpenTelemetry\API\Logs\Severity;
|
||||
use OpenTelemetry\Context\ContextInterface;
|
||||
use OpenTelemetry\SDK\Common\Attribute\AttributesFactory;
|
||||
use OpenTelemetry\SDK\Common\Instrumentation\InstrumentationScopeInterface;
|
||||
|
|
@ -39,7 +40,7 @@ class ReadableLogRecordTest extends TestCase
|
|||
public function test_getters(): void
|
||||
{
|
||||
$logRecord = (new LogRecord('body'))
|
||||
->setSeverityNumber(5)
|
||||
->setSeverityNumber(Severity::DEBUG)
|
||||
->setSeverityText('info')
|
||||
->setTimestamp(11)
|
||||
->setObservedTimestamp(22)
|
||||
|
|
|
|||
Loading…
Reference in New Issue