Automattic\WooCommerce\Internal\Admin\Logging
PageController::format_line
Format a log file line.
Метод класса: PageController{}
Хуков нет.
Возвращает
Строку.
Использование
// private - только в коде основоного (родительского) класса $result = $this->format_line( $line, $line_number ): string;
- $line(строка) (обязательный)
- The unformatted log file line.
- $line_number(int) (обязательный)
- The line number.
Код PageController::format_line() PageController::format line WC 10.7.0
private function format_line( string $line, int $line_number ): string {
$classes = array( 'line' );
$line = esc_html( $line );
if ( empty( $line ) ) {
$line = ' ';
}
$segments = explode( ' ', $line, 3 );
$has_timestamp = false;
$has_level = false;
if ( isset( $segments[0] ) && false !== strtotime( $segments[0] ) ) {
$classes[] = 'log-entry';
$segments[0] = sprintf(
'<span class="log-timestamp">%s</span>',
$segments[0]
);
$has_timestamp = true;
}
if ( isset( $segments[1] ) && WC_Log_Levels::is_valid_level( strtolower( $segments[1] ) ) ) {
$segments[1] = sprintf(
'<span class="%1$s">%2$s</span>',
esc_attr( 'log-level log-level--' . strtolower( $segments[1] ) ),
esc_html( WC_Log_Levels::get_level_label( strtolower( $segments[1] ) ) )
);
$has_level = true;
}
if ( isset( $segments[2] ) && $has_timestamp && $has_level ) {
$message_chunks = explode( 'CONTEXT:', $segments[2], 2 );
if ( isset( $message_chunks[1] ) ) {
try {
$maybe_json = html_entity_decode( addslashes( trim( $message_chunks[1] ) ) );
// Decode for validation.
$context = json_decode( $maybe_json, false, 512, JSON_THROW_ON_ERROR );
// Re-encode to make it pretty.
$context = wp_json_encode( $context, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE );
$message_chunks[1] = sprintf(
'<details><summary>%1$s</summary>%2$s</details>',
esc_html__( 'Additional context', 'woocommerce' ),
stripslashes( $context )
);
$segments[2] = implode( ' ', $message_chunks );
$classes[] = 'has-context';
} catch ( \JsonException $exception ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch
// It's not valid JSON so don't do anything with it.
}
}
}
if ( count( $segments ) > 1 ) {
$line = implode( ' ', $segments );
}
$classes = implode( ' ', $classes );
return sprintf(
'<span id="L%1$d" class="%2$s">%3$s%4$s</span>',
absint( $line_number ),
esc_attr( $classes ),
sprintf(
'<a href="#L%1$d" class="line-anchor"></a>',
absint( $line_number )
),
sprintf(
'<span class="line-content">%s</span>',
wp_kses_post( $line )
)
);
}