Hyperf 下使用阿里云日志 SLS

  1. 在学习 hyperf 框架过程中,日志处理这一块思考了很长时间,项目有大小复杂度不同,日志的处理也就需要多一些方案。在完成了 filelog、dblog 后,第三方日志系统也是需要接入的。因为一直用阿里云日志 sls,所以对官方的 sdk 进行修改,适配在 hyperf 使用。
  2. 这也是第一次写 composer 包,边学边写,将官方 sdk 查阅一遍一遍,最终完成了(不过目前只实现了 putlogs 日志存储功能), 后续会继续完善
  3. 比较心酸的就是,阿里官方的文档、与 sdk 的代码实现居然不一样,导致遇到了数据编码解码问题,浪费了不少时间(编写过程中并不是直接 copy)。
  4. 能力有限,基础薄弱,官方 sdk 有些代码也没有深究为啥意义是啥能否修改,直接照用。例如:Protobuf、LogGroupList、LogGroup 等
  5. 看完文章是否可以点个赞!!!!

问题#

阿里云文档 https://help.aliyun.com/document_detail/29026.html?spm=a2c4g.11186623.2.8.a66874316mHoR3 ,有问题的地方框选了
Hyperf下使用阿里云日志SLS
sdk 代码
Hyperf下使用阿里云日志SLS
由上可见,sdk 与官方文档给出的不一样的三个地方,请求地址压缩类型是否shard,压缩类型要用 sdk 的否则出错,其余两个由于没测试目前还不知道要用文档还是 sdk 的。

一 安装#

https://packagist.org/packages/yoctometre/...

composer require yoctometre/aliyun-sls

二 使用#

  1. 生成配置文件
    php bin/hyperf.php vendor:publish yoctometre/aliyun-sls
  2. putlog 到阿里云 sls
    use Hyperf\Di\Annotation\Inject;
    use Ym\AliyunSls\ClientInterface;
    /**
    * @Inject
    * @var ClientInterface
    */
    protected $sls;
    // 注意不能有空置,如果有空值可以处理为0,否则无法压缩数据产生致命错误。
    $logData = ['k1'=>v1,'k2'=>v2,……];
    $this->sls->putLogs($logData);

结语#

  1. 第一次写 copomser 包
  2. 第一次写博文(以前总看)
  3. 希望以后成为自己的常态
本作品采用《CC 协议》,转载必须注明作者和本文链接
小尹你好! 成功细中取,宝贵险中求;细节决定成败,态度决定一切。
本帖由系统于 4年前 自动加精
xiaoyin199
讨论数量: 3

终于找到能用的了,感谢楼主分享

5年前 评论

终于找到能用的了,感谢楼主分享

5年前 评论

终于找到能用的了,感谢楼主分享

5年前 评论