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