<?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; } }