Skip to content

Commit 4c02214

Browse files
committed
Http Request file log improve
1 parent ff48fa4 commit 4c02214

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

src/BaseClient.php

+34-7
Original file line numberDiff line numberDiff line change
@@ -146,19 +146,27 @@ public function requestSent(): bool {
146146
protected function getRequestLogContent(): string {
147147
return $this->client->__toString();
148148
}
149+
protected function getResponseLogContent(Swlib\Saber\Response $response): string {
150+
return $response->__toString();
151+
}
149152
protected function recv(): \Swlib\Saber\Response {
150153
if (! $this->request_sent) {
151154
throw new \Exception('Request not sent');
152155
}
153156
$client = $this->client;
154-
$log_string = date('[Y-m-d H:i:s] ', $this->send_time) . "----------Request----------\n";
155-
$log_string .= $this->getRequestLogContent() . "\n";
157+
$log_buffer = \Swlib\Http\stream_for('');
158+
$log_buffer->write(date('[Y-m-d H:i:s] ', $this->send_time));
159+
$log_buffer->write("----------Request----------\n");
160+
$log_buffer->write($this->getRequestLogContent());
161+
$log_buffer->write("\n");
156162
try {
157163
$response = $client->recv();
158164
$code = $response->statusCode;
159-
$log_string .= date('[Y-m-d H:i:s] ', \Time\now()) . "----------Response---------\n";
160-
$log_string .= $response->__toString() . "\n\n";
161-
$this->writeLog($log_string);
165+
$log_buffer->write(date('[Y-m-d H:i:s] ', \Time\now()));
166+
$log_buffer->write("----------Response---------\n");
167+
$log_buffer->write($this->getResponseLogContent($response));
168+
$log_buffer->write("\n\n");
169+
$this->writeLogWithStream($log_buffer);
162170
if ($code !== 200 && ! $this->handleHttpErrorCode($code)) {
163171
$name = $this->exception_name['error'];
164172
if (! isset($name) || $name === '') {
@@ -170,8 +178,9 @@ protected function recv(): \Swlib\Saber\Response {
170178
} catch (\Swlib\Http\Exception\ConnectException $e) {
171179
$code = $e->getCode();
172180
$error = $e->getMessage();
173-
$log_string .= "----Response:$error----\n\n";
174-
$this->writeLog($log_string);
181+
$log_buffer->write(date('[Y-m-d H:i:s] ', \Time\now()));
182+
$log_buffer->write("----Response:$error----\n\n");
183+
$this->writeLogWithStream($log_buffer);
175184
if ($code === -1 || $code === -2) {
176185
$name = $this->exception_name['timeout'];
177186
if (isset($name)) {
@@ -198,6 +207,24 @@ protected function getLogDir(): string {
198207
}
199208
return $dir;
200209
}
210+
protected function writeLogWithStream(Psr\Http\Message\StreamInterface $log_stream): void {
211+
$log_stream->seek(0);
212+
$log_string = $log_stream->getContents();
213+
if (self::$_echo_log_on && \Swango\Environment::getWorkingMode()->isInCliScript()) {
214+
if (strlen($log_string) > 4096) {
215+
echo substr($log_string, 0, 4096) . "\n\n";
216+
} else {
217+
echo $log_string;
218+
}
219+
}
220+
$dir = $this->getLogDir();
221+
if (! is_dir($dir)) {
222+
mkdir($dir, 0777, true);
223+
}
224+
$fp = fopen($dir . '/' . date('Y-m-d') . '.log', 'a');
225+
fwrite($fp, $log_string);
226+
fclose($fp);
227+
}
201228
protected function writeLog(string &$log_string): void {
202229
if (self::$_echo_log_on && \Swango\Environment::getWorkingMode()->isInCliScript()) {
203230
if (strlen($log_string) > 4096) {

0 commit comments

Comments
 (0)