- 日志统一接收记录管理平台
- 由于考虑想做成服务化的日志平台,固采用RPC的方式提供方法给各个项目调用,不局限于PHP的项目
- 管理后台的权限控制已经实现,后台代码来自我的项目Laravel5.2-AdminLTE-RBAC
- PHP安装swoole扩展
- mongodb
- 在项目里开启2个artisan命令:
php artisan swoole:server
php artisan hprose:server
- 以其他PHP项目为例,在任何PHP项目中,composer引入hprose/hprose,日志的内容请遵循Monolog的定义来实现,写个公共的方法调用
polyLog/app/Console/Commands/HproseServer.php
里写好的方法polyLog()
即可.$log
数组的结构请务必参考Monolog的定义来实现,这样方便统计查看.polyLog()
方法会返回一个唯一的log_id
便于追踪; 如果是链路追踪,系统支持在$log
中指定log_id
.
<?php
function platformLog($log)
{
try {
$client = new \Hprose\Socket\Client('tcp://127.0.0.1:1314', false);
return $client->polyLog($log);
} catch (\Exception $e) {
//TODO:需要上报平台日志服务连接不上
return true;
}
}
$log = array(
"message" => "Exception: wwww in /home/Code/illegal_lumen/app/Http/Controllers/Service/CarSyncController.php:20",
"context" => array(
"SERVER_ADDR" => "192.168.56.102"
),
"level" => 400,
"level_name" => "ERROR",
"channel" => "lumen",
"extra" => array(
"url" => "/illegal/car/sync/3.0",
"ip" => "192.168.56.1",
"http_method" => "GET",
)
);
$log_id = platformLog($log);
- 其他语言项目均只要实现客户端的逻辑来调用polyLog,hprose支持多种语言的