如何第一时间收到接口报错?不用测试妹子再质疑你是不是接口挂了。
2021/7/27 8:35:39
本文主要是介绍如何第一时间收到接口报错?不用测试妹子再质疑你是不是接口挂了。,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
啥样的后端程序员是好程序员?能机器做的事绝不自己做,哈哈。
场景复现
客户端:后端接口报错了,我解析数据失败,你看看为啥?
服务端:好,我查查log。你把请求参数给我打印出来。
客户端:我咋打印?
服务端:....我还是自己查log吧
以上这种场景在开发中是不是时有发生?是不是很难顶?有啥好办法让debug更智能一点吗?
分析
不管哪个语言做服务端开发,一定有异常处理和日志。
找到一个三方平台,当捕获到异常或者有新的打印日志时回调,推送错误日志给我们。
经过一番调研之后,发现钉钉的机器人是个好工作
说干就干,刷文档,写实现。
后端实现以PHP的Laravel为例,其他语言也可以借鉴思路。
修改日志配置
<?php
use Monolog\Handler\NullHandler;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\SyslogUdpHandler;
return [
'default' => env('LOG_CHANNEL', 'stack'),
'channels' => [
'stack' => [
'driver' => 'stack',
//测试环境除了使用daily保存每天日志到logs/laravel.log,还使用’dingding‘channel
'channels' => env("APP_ENV") == 'test' ? ['daily', 'dingding'] : ['daily'],
'ignore_exceptions' => false,
],
//配置钉钉 驱动选择 monolog
'dingding' => [
'driver' => 'monolog',
'level' => 'error',
'handler' => \App\Handler\DingdingLogHandler::class, //自定义handler
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
'days' => 14,
],
.
.
.
],
];
上面不重要的代码使用3个竖向排列的.省略显示。
自定义Handler
<?php
namespace App\Handler;
use App\Library\CurlRequest;
use App\Library\Utility;
use Monolog\Logger;
use Monolog\Handler;
class DingdingLogHandler extends Handler\AbstractProcessingHandler
{
private $apiKey;
private $channel;
public function __construct(
$level = Logger::DEBUG,
bool $bubble = true
) {
parent::__construct($level, $bubble);
}
protected function write(array $record): void
{
$this->send($record['formatted']);
}
protected function send(string $message): void
{
$microSecond = Utility::getMicroSecond();
$key = "xxxx";
$hashString = hash_hmac("sha256", $microSecond ."\n" . $key, $key, true);
$sign = urlencode(base64_encode($hashString));
CurlRequest::post("https://oapi.dingtalk.com/robot/send?access_token=xxxxx×tamp=".$microSecond."&sign=".$sign,
[
"msgtype" => "text",
"at" => [
"atMobiles" => [
"xxxx",
"xxxx"
]
],
"text" => [
"content" => $message
]
]);
}
}
部署上线的效果
再也不用爬日志啦!
测试妹子再找我说客户端报错数据解析错误,我也能马上硬气的回答:”应该是客户端解析问题,服务端没收到报错。“
此处放一个机智的表情
作者:王中阳Go
链接:https://juejin.cn/post/6986483309605814308
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
这篇关于如何第一时间收到接口报错?不用测试妹子再质疑你是不是接口挂了。的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-19JAVA分布式id教程:轻松入门与实践
- 2024-11-19Java高并发教程:入门与实践指南
- 2024-11-19JAVA高并发直播教程:新手入门指南
- 2024-11-19Java高并发直播教程:入门与实践指南
- 2024-11-19Java微服务教程:初学者快速入门指南
- 2024-11-19JAVA微服务教程:新手入门的详细指南
- 2024-11-19Java微服务教程:从零开始搭建你的第一个微服务应用
- 2024-11-19Java项目开发教程:初学者必备指南
- 2024-11-19Java项目开发教程:新手快速入门指南
- 2024-11-19Java项目开发教程:零基础入门到实战