Yii2项目整合阿里云日志服务

Jimmy Lee

技术分享|Sep 29, 2020|Last edited: 2022-7-21|
icon
Update time
Jul 21, 2022 03:05 PM
Internal status
password

原因

公司的php项目之前的日志基本是存数据库,存服务器文件,存在占用数据库大量空间,日志查看存在难以看到完整上下文,服务器上查找日志困难等问题,急需解决方案

方案

1.购买阿里云ELK:缺点贵
2.购买阿里云服务器自己搭ELK:虽然便宜些,但是增加运维成本
  • 优点:1.便宜 2:方便接入 3:机器人日志已有使用经验 4:在app即将上线的时候能够快速接入

示例项目

  1. 依赖引入
    1. 进入项目根目录,执行
      1. composer require --prefer-dist ranvk/yii2-aliyun-logtarget -vvv
    2. composer.json文件中会增加
      1. "ranvk/yii2-aliyun-logtarget": "^18.3"
  1. 修改配置,dev和local环境配置阿里云的外网地址,才可以上传日志,在线上的test和prod环境,使用内网地址,加快日志上传速度
    1. api/config/dev/main.php
    2. 修改log的组件
    3. 'components' => [ 'log' => [ 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning', 'trace', 'info'], ], [ 'levels' => ['error', 'warning', 'info'], 'class' => 'Ranvk\Yii2AliyunLogtarget\AliyunLogTarget', 'logstore' => 'www-xxx-com', 'topic' => YII_ENV, 'project' => 'c5game-webserver', 'accessKeyId' => 'xxx', 'accessKeySecret' => 'xxx', 'endpoint' => 'cn-shanghai.log.aliyuncs.com', //外网地址,内网地址为cn-shanghai-intranet.log.aliyuncs.com ], ], ],
    4. 其他环境的配置文件类似,别忘了修改
    5. 具体代码 http://xxxx/-/merge_requests/49/diffs

查询示例

网址:https://sls.console.aliyun.com/lognext/project/xxx
授权才能访问
比如要查prod环境的异常拦截处理器中的关于库存请求相关的日志
exceptionHandle and "inventory" and __topic__: prod
更多查询方式看文档

总结

  1. 配置的时候要注意,dev环境使用的阿里云的公网上传日志地址,test和prod环境使用内网传输提高速度,也免收流量费,主要是endpoint配置,topic存环境,区分dev,test,prod

参考文章

  1. https://github.com/ranvk/yii2-aliyun-logtarget

开始订阅我的关于终生学习, 生产力以及知识管理的文章. 订阅后, 您将收到我的精选文章.

©2014-2024 Jimmy Lee. All rights reserved. 公众号: 技术管理方法论
Powered By My Lovely Children