in src/Elastic/Monolog/Formatter/ElasticCommonSchemaFormatter.php [83:133]
public function format(LogRecord $record): string
{
$inRecord = $this->normalize($record->toArray());
// Build Skeleton with "@timestamp" and "log.level"
$outRecord = [
'@timestamp' => $inRecord['datetime'],
'log.level' => $inRecord['level_name'],
];
// Add "message"
if (isset($inRecord['message']) === true) {
$outRecord['message'] = $inRecord['message'];
}
// Add "ecs.version"
$outRecord['ecs.version'] = self::ECS_VERSION;
// Add "log": { "logger": ..., ... }
$outRecord['log'] = [
'logger' => $inRecord['channel'],
];
// Add Tracing Context
if (isset($inRecord['context']['tracing']['Elastic\Types\Tracing']) === true) {
$outRecord += $inRecord['context']['tracing']['Elastic\Types\Tracing'];
unset($inRecord['context']['tracing']);
}
// Add Service Context
if (isset($inRecord['context']['service']['Elastic\Types\Service']) === true) {
$outRecord += $inRecord['context']['service']['Elastic\Types\Service'];
unset($inRecord['context']['service']);
}
// Add User Context
if (isset($inRecord['context']['user']['Elastic\Types\User']) === true) {
$outRecord += $inRecord['context']['user']['Elastic\Types\User'];
unset($inRecord['context']['user']);
}
$this->formatContext($inRecord['extra'], /* ref */ $outRecord);
$this->formatContext($inRecord['context'], /* ref */ $outRecord);
// Add ECS Tags
if (empty($this->tags) === false) {
$outRecord['tags'] = $this->normalize($this->tags);
}
return $this->toJson($outRecord) . "\n";
}