mkrutikov/microservice_logging

此包的最新版本(v1.0.4)没有提供许可证信息。

包含用于微服务端到端日志记录的类包

v1.0.4 2019-03-20 07:03 UTC

This package is not auto-updated.

Last update: 2024-09-26 09:40:32 UTC


README

要求

PHP 5.4+,包含bcmath和zip模块

安装

将以下内容添加到composer.json

"mkrutikov/microservice_logging": "~1.0"

包修改

如果需要修改包,请安装依赖项。

安装依赖项

为了开发包,需要安装依赖项。可以使用Docker通过以下命令进行(所有命令都在项目文件夹中执行)

docker-compose build
docker-compose up -d
docker exec php composer install

停止运行的Docker容器

docker-compose down

运行测试

要运行单元测试,请调用(在主机机器上)以下命令

docker exec php vendor/bin/phpunit tests

如果开发不在Docker中,则测试将按以下方式运行

vendor/bin/phpunit tests

使用示例

在客户端代码中需要向RabbitMQ添加日志记录

$connection = new AMQPStreamConnection(HOST, PORT, USER, PASS, VHOST);
$amqpHandlerFactory = new RabbitLogHandlerFactory($connection);
$amqpHandler = $this->amqpHandlerFactory->createHandler('logging', 'log');

$logger = new Logger('logger_name');
$logger->pushHandler($amqpHandler);

// Теперь можно писать в лог сообщения
$logContext = [];
$logContext['guid'] = '555';
$messageBody = 'Текст сообщения';
$logger->debug($messageBody, $this->logContext);

有关Monolog的文档,请参阅官方仓库:https://github.com/Seldaek/monolog

GUID生成:GuidGenerator类

为了生成在微服务之间请求中传递的标识符,使用了GuidGenerator类。在初始化对象时,需要将一个类似于全局数组$_SERVER的数组传递给构造函数(或直接传递$_SERVER变量)。该类将尝试在此数组中通过HTTP_X_CORRELATION_ID键值查找值,该键值对应于X-Correlation-Id头(用于在请求中传递GUID)。如果找不到头,将生成一个新的标识符。

$guidGenerator = new GuidGenerator($_SERVER);
$guid = $guidGenerator->getGuid();

getGuid()方法返回用于日志记录和调用其他服务的标识符。

用于调用微服务的MicroserviceClient类

该类是Guzzle库的包装器。构造函数所需参数是将在请求头中传递的GUID标识符。

$microserviceClient = new MicroserviceClient($guid);
$microserviceResponse = $microserviceClient->request('GET', 'http://city_service.m.krutikov.docker:8080/index.php');
echo $microserviceResponse->getBody();