Select Git revision
SensitiveDataProcessor.php
-
Grzegorz Rola authoredGrzegorz Rola authored
SensitiveDataProcessor.php 981 B
<?php
namespace WPDesk\Logger\Processor;
use Monolog\Processor\ProcessorInterface;
/**
* Can replace data in log.
* Ie. sensitive data.
*
* @package WPDesk\Logger\Processor
*/
class SensitiveDataProcessor implements ProcessorInterface {
/**
* Replace array.
*
* @var array
*/
private array $replace;
public function __construct( array $replace ) {
$this->replace = $replace;
}
public function __invoke( array $record ): array {
return $this->replace_array( $record );
}
private function replace_array( array $value ): array {
foreach ( $value as $key => $item ) {
if ( is_array( $item ) ) {
$value[ $key ] = $this->replace_array( $item );
}
if ( is_string( $item ) ) {
$value[ $key ] = $this->replace( $item );
}
}
return $value;
}
private function replace( string $value ): string {
foreach ( $this->replace as $search => $replace ) {
$value = str_replace( $search, $replace, $value );
}
return $value;
}
}