mkrutikov / microservice_logging
此包的最新版本(v1.0.4)没有提供许可证信息。
包含用于微服务端到端日志记录的类包
v1.0.4
2019-03-20 07:03 UTC
Requires
- php: >=5.4
- guzzlehttp/guzzle: 5.3.1
- monolog/monolog: ~1.24
- php-amqplib/php-amqplib: ~2.8
Requires (Dev)
- phpunit/phpunit: ~4.8.36
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();