icon
Update time
Jul 21, 2022 03:05 PM
Internal status
password
原因
公司的php项目之前的日志基本是存数据库,存服务器文件,存在占用数据库大量空间,日志查看存在难以看到完整上下文,服务器上查找日志困难等问题,急需解决方案
方案
1.购买阿里云ELK:缺点贵
2.购买阿里云服务器自己搭ELK:虽然便宜些,但是增加运维成本
- 优点:1.便宜 2:方便接入 3:机器人日志已有使用经验 4:在app即将上线的时候能够快速接入
示例项目
- 依赖引入
- 进入项目根目录,执行
- composer.json文件中会增加
composer require --prefer-dist ranvk/yii2-aliyun-logtarget -vvv
"ranvk/yii2-aliyun-logtarget": "^18.3"
- 修改配置,dev和local环境配置阿里云的外网地址,才可以上传日志,在线上的test和prod环境,使用内网地址,加快日志上传速度
- api/config/dev/main.php
- 修改log的组件
- 其他环境的配置文件类似,别忘了修改
- 具体代码 http://xxxx/-/merge_requests/49/diffs
'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 ], ], ],
查询示例
网址:https://sls.console.aliyun.com/lognext/project/xxx
授权才能访问
比如要查prod环境的异常拦截处理器中的关于库存请求相关的日志
exceptionHandle and "inventory" and __topic__: prod
更多查询方式看文档
总结
- 配置的时候要注意,dev环境使用的阿里云的公网上传日志地址,test和prod环境使用内网传输提高速度,也免收流量费,主要是endpoint配置,topic存环境,区分dev,test,prod