webman-tech / laravel-http-client

Laravel httpClient for webman
6 stars 0 forks source link

咨询问题: 如何不记录request中的二进制文件 #4

Closed leedom-hub closed 5 months ago

leedom-hub commented 5 months ago

现在如果设计文件传输 日志会记录二进制内容 导致日志乱码以及冗长; 求指点一下怎么设置不记录二进制参数(请求和响应最好都不记录文件) 看了日志设置应该是自己写一个middleware @link https://docs.guzzlephp.org/en/stable/handlers-and-middleware.html#middleware

 protected function getMessage(RequestInterface $request, ResponseInterface $response, float $sec): string
    {
        return "Time {$sec}sec\r\n"
            . "Request\r\n"
            . strtr(Message::toString($request), $this->config['log_replacer']) . "\r\n"
            . "Response\r\n"
            . strtr(Message::toString($response), $this->config['log_replacer']);
    }

如何处理$request才能达到目的呢?

krissss commented 5 months ago

如果是已知的字段名的话,可以通过config里的log_replacer参数来替换为空 如果想过滤全部的话,可能需要自己写个CustomLog 的(或继承已有的覆盖方法),然后在config里替换custom配置就好了

leedom-hub commented 5 months ago

感谢回答; 我的是form-data格式的请求; 会跟着记录一些二进制乱码

--f6498972459e14c93ca9485104f57e01bcbc4521
Content-Disposition: form-data; name="file"; filename="660ba0530ee8.jpg"
Content-Length: 498533
Content-Type: image/jpeg

???0x00JFIF

我在配置

            $config = [
                'log_channel' => $config['channel'],
                'log_replacer' => [
                    'file' => ""
                ],
            ];

还是不起作用, 请问这种情况我该如何处理?

krissss commented 5 months ago

v1.3.0 改为支持自动过滤 file 了,同时也对 body 长度做了控制,以防 body 超大的问题