Hyperf 下使用阿里雲日誌 SLS

xiaoyin199發表於2020-01-02
  1. 在學習hyperf框架過程中,日誌處理這一塊思考了很長時間,專案有大小複雜度不同,日誌的處理也就需要多一些方案。在完成了filelog、dblog後,第三方日誌系統也是需要接入的。因為一直用阿里雲日誌sls,所以對官方的sdk進行修改,適配在hyperf使用。
  2. 這也是第一次寫composer包,邊學邊寫,將官方sdk查閱一遍一遍,最終完成了(不過目前只實現了putlogs日誌儲存功能),後續會繼續完善
  3. 比較心酸的就是,阿里官方的文件、與sdk的程式碼實現居然不一樣,導致遇到了資料編碼解碼問題,浪費了不少時間(編寫過程中並不是直接copy)。
  4. 能力有限,基礎薄弱,官方sdk有些程式碼也沒有深究為啥意義是啥能否修改,直接照用。例如:Protobuf、LogGroupList、LogGroup等

問題

阿里雲文件https://help.aliyun.com/document_detail/29026.html?spm=a2c4g.11186623.2.8.a66874316mHoR3 ,有問題的地方框選了
Hyperf下使用阿里雲日誌SLS
sdk程式碼
Hyperf下使用阿里雲日誌SLS
由上可見,sdk與官方文件給出的不一樣的三個地方,請求地址壓縮型別是否shard,壓縮型別要用sdk的否則出錯,其餘兩個由於沒測試目前還不知道要用文件還是sdk的。

一. 安裝

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 協議》,轉載必須註明作者和本文連結

小尹你好!
成功細中取,寶貴險中求;細節決定成敗,態度決定一切。

相關文章