Symfony 独白:使用多个格式化程序

问题描述 投票:0回答:1

我正在开发一个 symfony 项目,我们已经在使用来自私人库的自定义格式化程序。

monolog:
    handlers:
        main:
            type:  stream
            path:  "%log_file_path%"
            level: "%log_level%"
            formatter: logstash_formatter_private_lib

我想添加一个新的格式化程序来过滤敏感数据。这就是为什么我为此创建了一个新处理器:


<?php

namespace App\CoreBundle\Logger;

use Monolog\Processor\ProcessorInterface;

class PIIFilterProcessor implements ProcessorInterface
{
    private $piiFields = ['password', 'email', 'phone', 'address'];

    public function __invoke(array $record)
    {
        // Loop through each PII field and unset it if exists
        foreach ($this->piiFields as $field) {
            if (isset($record['context'][$field])) {
                $record['context'][$field] = '***FILTERED***';
            }
        }

        return $record;
    }
}

如何在已经运行的处理器/格式化程序之后或之前执行该处理器/格式化程序?

php symfony monolog
1个回答
0
投票

您需要按照

此处
所述使用 monolog.processor 标记您的处理器:

<?php

namespace App\CoreBundle\Logger;

use Monolog\Processor\ProcessorInterface;
use Monolog\Attribute\AsMonologProcessor;

#[AsMonologProcessor]
class PIIFilterProcessor
{
© www.soinside.com 2019 - 2024. All rights reserved.