我正在做一个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;
    }
}

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

推荐答案

您需要用monolog.processor标记您的处理器,如here所述:

<?php

namespace App\CoreBundle\Logger;

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

#[AsMonologProcessor]
class PIIFilterProcessor
{

Php相关问答推荐

有条件的运费率基于购物车小计与WooPayments货币转换

邮箱打开跟踪器不工作时发送邮件使用laravel调度程序

我需要多个SELECT语句的结果(使用由php ECHO创建的表中显示的Limit(X)

LaravelEloquent 地根据表中的值提取记录

为什么正则表达式与得到的文本块之前得到的也行?

根据未用于变体的产品属性隐藏WooCommerce发货方式

如何将隐式乘法添加到PHPPEG基本计算器语法中?

PHP MySQL求和子树并与父树累加

PHP Laravel Web应用启动时间&>15秒

在WooCommerce管理中 for each 运输方法设置添加自定义字段

未收到Strava WebHook事件数据

Laravel 10中的Validator类

PHP按另一个二维数组的排序顺序对二维数组进行排序

使用简码在 WooCommerce 我的帐户中显示一些用户数据

无法允许元素(img:'src')与symfony html-sanitizer(symfony6.3 php 8.2)

用于更新 WooCommerce 管理产品列表中库存数量的自定义输入字段

注册命名空间后如何获取xml node 值?

基于WooCommerce中的产品变体自定义感谢页面跳转

如何设置Mailersend PHP API 模板变量?

将Shopware 6后端中定义的值导入MultiFilter