33
33
class ActivityMonitor
34
34
{
35
35
private Context $ contextService ;
36
- private StdClass $ log ;
36
+ private array $ fileData = [] ;
37
37
38
38
/**
39
39
* Create instance of ServiceActivity
@@ -43,7 +43,6 @@ class ActivityMonitor
43
43
public function __construct (Context $ contextService )
44
44
{
45
45
$ this ->contextService = $ contextService ;
46
- $ this ->log = new StdClass ();
47
46
}
48
47
49
48
/**
@@ -86,8 +85,8 @@ public function handle($request, Closure $next)
86
85
$ this ->contextService ->set ('Accept ' , $ request ->header ('Accept ' ));
87
86
$ this ->contextService ->set ('Accept-Encoding ' , $ request ->header ('Accept-Encoding ' ));
88
87
89
- $ this ->log ->requestBody = strlen (json_encode ($ request ->all ())) > 5000 ? 'more than 5000 characters ' : $ request ->all ();
90
88
$ this ->logFileRequest ($ request );
89
+ $ this ->contextService ->set ('fileData ' , $ this ->fileData );
91
90
92
91
return $ next ($ request );
93
92
}
@@ -102,36 +101,42 @@ public function handle($request, Closure $next)
102
101
*/
103
102
public function terminate ($ request , $ response )
104
103
{
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
+ }
116
121
// 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 ' ]);
119
124
}
120
125
$ responseObjContent = json_decode ($ response ->getContent ());
121
126
if (strlen ($ response ->getContent ()) > 5000 && isset ($ responseObjContent ->responseData )) {
122
127
$ responseObjContent ->responseData = 'more than 5000 characters ' ;
123
128
}
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 (
129
134
'U.u ' ,
130
135
number_format ((float ) $ request ->server ('REQUEST_TIME_FLOAT ' ), 6 , '. ' , '' )
131
136
)
132
137
->setTimezone (new \DateTimeZone ('Asia/Jakarta ' ))
133
138
->format (\DateTimeInterface::RFC3339_EXTENDED );
134
- Log::activity ()->info ((array ) $ this -> log );
139
+ Log::activity ()->info ((array ) $ log );
135
140
}
136
141
137
142
/**
@@ -144,18 +149,18 @@ public function terminate($request, $response)
144
149
private function logFileRequest (&$ request ): void
145
150
{
146
151
foreach ($ request ->allFiles () as $ key => $ value ) {
147
- $ this ->log -> requestBody [$ key ] = [];
152
+ $ this ->fileData [$ key ] = [];
148
153
if (is_array ($ files = $ request ->file ($ key ))) {
149
154
foreach ($ files as $ file ) {
150
- $ this ->log -> requestBody [$ key ][] = [
155
+ $ this ->fileData [$ key ][] = [
151
156
'filename ' => $ file ->getClientOriginalName (),
152
157
'mimetype ' => $ file ->getMimeType (),
153
158
'size ' => $ file ->getSize ()
154
159
];
155
160
}
156
161
continue ;
157
162
}
158
- $ this ->log -> requestBody [$ key ][] = [
163
+ $ this ->fileData [$ key ][] = [
159
164
'filename ' => $ value ->getClientOriginalName (),
160
165
'mimetype ' => $ value ->getMimeType (),
161
166
'size ' => $ value ->getSize ()
0 commit comments