class LogMessageParser in Drupal 10
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Logger/LogMessageParser.php \Drupal\Core\Logger\LogMessageParser
- 9 core/lib/Drupal/Core/Logger/LogMessageParser.php \Drupal\Core\Logger\LogMessageParser
Parses log messages and their placeholders.
Hierarchy
- class \Drupal\Core\Logger\LogMessageParser implements \Drupal\Core\Logger\LogMessageParserInterface
Expanded class hierarchy of LogMessageParser
1 file declares its use of LogMessageParser
- LogMessageParserTest.php in core/
tests/ Drupal/ Tests/ Core/ Logger/ LogMessageParserTest.php
1 string reference to 'LogMessageParser'
- core.services.yml in core/
core.services.yml - core/core.services.yml
1 service uses LogMessageParser
File
- core/
lib/ Drupal/ Core/ Logger/ LogMessageParser.php, line 8
Namespace
Drupal\Core\LoggerView source
class LogMessageParser implements LogMessageParserInterface {
/**
* {@inheritdoc}
*/
public function parseMessagePlaceholders(&$message, array &$context) {
$variables = [];
$has_psr3 = FALSE;
if (($start = strpos($message, '{')) !== FALSE && strpos($message, '}') > $start) {
$has_psr3 = TRUE;
// Transform PSR3 style messages containing placeholders to
// \Drupal\Component\Render\FormattableMarkup style.
$message = preg_replace('/\\{([^\\{}]*)\\}/U', '@$1', $message);
}
foreach ($context as $key => $variable) {
// PSR3 style placeholders.
if ($has_psr3) {
// Keys are not prefixed with anything according to PSR3 specs.
// If the message is "User {username} created" the variable key will be
// just "username".
if (strpos($message, '@' . $key) !== FALSE) {
$key = '@' . $key;
}
}
if (!empty($key) && ($key[0] === '@' || $key[0] === '%' || $key[0] === '!')) {
// The key is now in \Drupal\Component\Render\FormattableMarkup style.
$variables[$key] = $variable;
}
}
return $variables;
}
}