manomano-tech/correlation-ids-monolog

此包已被废弃,不再维护。作者建议使用不再维护的包。

manomano-tech/correlation-ids包的Monolog处理器

1.0.0 2018-09-29 14:29 UTC

This package is auto-updated.

Last update: 2022-07-18 15:01:27 UTC


README

📢 注意: 此存储库不再维护。

Monolog关联插件

在所有记录中注入关联ID。

安装

composer require manomano-tech/correlation-ids-monolog

使用

use ManoManoTech\CorrelationId\CorrelationEntryName;
use ManoManoTech\CorrelationId\Factory\HeaderCorrelationIdContainerFactory;
use ManoManoTech\CorrelationId\Generator\RamseyUuidGenerator;
use ManoManoTech\CorrelationIdMonolog\CorrelationIdProcessor;
use Monolog\Logger;

// We specify which generator will be responsible for generating the
// identification of the current process
$generator = new RamseyUuidGenerator();

// We define what are the http header names to look for
// this is optional. We show the default values here.
$correlationEntryNames = new CorrelationEntryName(
    'current-correlation-id',
    'parent-correlation-id',
    'root-correlation-id'
);

$factory = new HeaderCorrelationIdContainerFactory(
    $generator,
    $correlationEntryNames
);
$correlationIdContainer = $factory->create(getallheaders());

// now you can create your monolog processor

$processor = new CorrelationIdProcessor($correlationIdContainer);

$logger = new Logger('channel-name');
$logger->pushProcessor([$processor]);

$logger->addInfo('message');

自定义输出格式

条目名称

默认情况下,值将呈现如下

$record = [
    'extra' => [
        'current' => '6a051d24-aa5b-4c57-bcb4-bbbb7eda1c16',
        'parent' => '3fc044d9-90fa-4b50-b6d9-3423f567155f',
        'root' => '3b5263fa-1644-4750-8f11-aaf61e58cd9e',
    ],
];

您可以通过向构造函数提供第二个参数来更改此设置

use ManoManoTech\CorrelationId\CorrelationEntryName;
use ManoManoTech\CorrelationIdMonolog\CorrelationIdProcessor;
use Monolog\Logger;

$correlationEntryName = new CorrelationEntryName(
    'current-id',
    'parent-id',
    'root-id'
);

$processor = new CorrelationIdProcessor(
    $correlationIdContainer,
    $correlationEntryName
);

$logger = new Logger('channel-name');
$logger->pushProcessor([$processor]);

$logger->addInfo('message');

将生成

$record = [
    'extra' => [
        'current-id' => '6a051d24-aa5b-4c57-bcb4-bbbb7eda1c16',
        'parent-id' => '3fc044d9-90fa-4b50-b6d9-3423f567155f',
        'root-id' => '3b5263fa-1644-4750-8f11-aaf61e58cd9e',
    ],
];

将请求关联标识符分组在一个条目中

默认情况下,处理器将为每个关联ID键在extra部分中添加一个条目。

您可以将所有ID分组在一个数组中

use ManoManoTech\CorrelationIdMonolog\CorrelationIdProcessor;
use Monolog\Logger;

$processor = new CorrelationIdProcessor($correlationIdContainer);
$processor->groupCorrelationIdsInOneArrayWithKey('correlation');

$logger = new Logger('channel-name');
$logger->pushProcessor([$processor]);

$logger->addInfo('message');

将生成

$record = [
    'extra' => [
        'correlation' => [
            'current' => '6a051d24-aa5b-4c57-bcb4-bbbb7eda1c16',
            'parent' => '3fc044d9-90fa-4b50-b6d9-3423f567155f',
            'root' => '3b5263fa-1644-4750-8f11-aaf61e58cd9e',
        ],
    ],
];

跳过空关联ID

默认情况下,处理器将添加每个关联ID,即使它们为空。

$record = [
    'extra' => [
        'current' => '6a051d24-aa5b-4c57-bcb4-bbbb7eda1c16',
        'parent' => null,
        'root' => null,
    ],
];

您可以使用skipEmptyValues方法更改此行为

use ManoManoTech\CorrelationIdMonolog\CorrelationIdProcessor;
use Monolog\Logger;

$processor = new CorrelationIdProcessor($CorrelationIdContainer);
$processor->skipEmptyValues();

$logger = new Logger('channel-name');
$logger->pushProcessor([$processor]);

$logger->addInfo('message');

将生成

$record = [
    'extra' => [
        'current' => '6a051d24-aa5b-4c57-bcb4-bbbb7eda1c16',
    ],
];