Skip to content

Commit 1891330

Browse files
committed
fix bug response middleware file upload logging
1 parent ad9e276 commit 1891330

File tree

1 file changed

+30
-25
lines changed

1 file changed

+30
-25
lines changed

src/Middlewares/ActivityMonitor.php

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
class ActivityMonitor
3434
{
3535
private Context $contextService;
36-
private StdClass $log;
36+
private array $fileData = [];
3737

3838
/**
3939
* Create instance of ServiceActivity
@@ -43,7 +43,6 @@ class ActivityMonitor
4343
public function __construct(Context $contextService)
4444
{
4545
$this->contextService = $contextService;
46-
$this->log = new StdClass();
4746
}
4847

4948
/**
@@ -86,8 +85,8 @@ public function handle($request, Closure $next)
8685
$this->contextService->set('Accept', $request->header('Accept'));
8786
$this->contextService->set('Accept-Encoding', $request->header('Accept-Encoding'));
8887

89-
$this->log->requestBody = strlen(json_encode($request->all())) > 5000 ? 'more than 5000 characters' : $request->all();
9088
$this->logFileRequest($request);
89+
$this->contextService->set('fileData', $this->fileData);
9190

9291
return $next($request);
9392
}
@@ -102,36 +101,42 @@ public function handle($request, Closure $next)
102101
*/
103102
public function terminate($request, $response)
104103
{
105-
$this->log->app_name = getenv('APP_NAME');
106-
$this->log->host = getenv('HTTP_HOST');
107-
$this->log->clientip = $request->header('X-Forwarded-For') !== null ? $request->header('X-Forwarded-For') : $request->ip();
108-
$this->log->clientapp = $request->header('X-App') !== null ? $request->header('X-App') : null;
109-
$this->log->path = $request->getPathInfo();
110-
$this->log->path_alias = $request->header('X-Path-Gateway') !== null ? $request->header('X-Path-Gateway') : null;
111-
$this->log->requestFrom = $request->header('X-Request-From') !== null ? $request->header('X-Request-From') : null;
112-
$this->log->requestUser = $request->header('X-Request-User') !== null ? $request->header('X-Request-User') : null;
113-
$this->log->deviceID = $request->header('X-Device-ID') !== null ? $request->header('X-Device-ID') : null;
114-
$this->log->requestID = $request->header('X-Request-ID') !== null ? $request->header('X-Request-ID') : null;
115-
$this->log->requestTags = $request->header('X-Request-Tags') !== null ? $request->header('X-Request-Tags') : null;
104+
$fileData = (array) $this->contextService->get('fileData');
105+
$log = new StdClass();
106+
$log->app_name = getenv('APP_NAME');
107+
$log->host = getenv('HTTP_HOST');
108+
$log->clientip = $request->header('X-Forwarded-For') !== null ? $request->header('X-Forwarded-For') : $request->ip();
109+
$log->clientapp = $request->header('X-App') !== null ? $request->header('X-App') : null;
110+
$log->path = $request->getPathInfo();
111+
$log->path_alias = $request->header('X-Path-Gateway') !== null ? $request->header('X-Path-Gateway') : null;
112+
$log->requestFrom = $request->header('X-Request-From') !== null ? $request->header('X-Request-From') : null;
113+
$log->requestUser = $request->header('X-Request-User') !== null ? $request->header('X-Request-User') : null;
114+
$log->deviceID = $request->header('X-Device-ID') !== null ? $request->header('X-Device-ID') : null;
115+
$log->requestID = $request->header('X-Request-ID') !== null ? $request->header('X-Request-ID') : null;
116+
$log->requestTags = $request->header('X-Request-Tags') !== null ? $request->header('X-Request-Tags') : null;
117+
$log->requestBody = strlen(json_encode($request->all())) > 5000 ? 'more than 5000 characters' : $request->all();
118+
if (count($fileData) > 0) {
119+
$log->requestBody = array_merge($log->requestBody, $fileData);
120+
}
116121
// hashing secret information
117-
if (isset($this->log->requestBody['password'])) {
118-
$this->log->requestBody['password'] = hash('sha256', $this->log->requestBody['password']);
122+
if (isset($log->requestBody['password'])) {
123+
$log->requestBody['password'] = hash('sha256', $log->requestBody['password']);
119124
}
120125
$responseObjContent = json_decode($response->getContent());
121126
if (strlen($response->getContent()) > 5000 && isset($responseObjContent->responseData)) {
122127
$responseObjContent->responseData = 'more than 5000 characters';
123128
}
124-
$this->log->responseBody = $request->getPathInfo() !== '/docs' ? $responseObjContent : ['responseCode' => '00', 'responseDesc' => 'Sukses API Docs'];
125-
$this->log->responseTime = round((microtime(true) - $request->server('REQUEST_TIME_FLOAT')) * 1000);
126-
$this->log->httpCode = $response->status();
127-
$this->log->memoryUsage = memory_get_usage();
128-
$this->log->requestAt = \DateTime::createFromFormat(
129+
$log->responseBody = $request->getPathInfo() !== '/docs' ? $responseObjContent : ['responseCode' => '00', 'responseDesc' => 'Sukses API Docs'];
130+
$log->responseTime = round((microtime(true) - $request->server('REQUEST_TIME_FLOAT')) * 1000);
131+
$log->httpCode = $response->status();
132+
$log->memoryUsage = memory_get_usage();
133+
$log->requestAt = \DateTime::createFromFormat(
129134
'U.u',
130135
number_format((float) $request->server('REQUEST_TIME_FLOAT'), 6, '.', '')
131136
)
132137
->setTimezone(new \DateTimeZone('Asia/Jakarta'))
133138
->format(\DateTimeInterface::RFC3339_EXTENDED);
134-
Log::activity()->info((array) $this->log);
139+
Log::activity()->info((array) $log);
135140
}
136141

137142
/**
@@ -144,18 +149,18 @@ public function terminate($request, $response)
144149
private function logFileRequest(&$request): void
145150
{
146151
foreach ($request->allFiles() as $key => $value) {
147-
$this->log->requestBody[$key] = [];
152+
$this->fileData[$key] = [];
148153
if (is_array($files = $request->file($key))) {
149154
foreach ($files as $file) {
150-
$this->log->requestBody[$key][] = [
155+
$this->fileData[$key][] = [
151156
'filename' => $file->getClientOriginalName(),
152157
'mimetype' => $file->getMimeType(),
153158
'size' => $file->getSize()
154159
];
155160
}
156161
continue;
157162
}
158-
$this->log->requestBody[$key][] = [
163+
$this->fileData[$key][] = [
159164
'filename' => $value->getClientOriginalName(),
160165
'mimetype' => $value->getMimeType(),
161166
'size' => $value->getSize()

0 commit comments

Comments
 (0)