| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- <?php
- namespace App\Module\System\Services;
- use Google\Protobuf\Internal\Message;
- use Illuminate\Http\Request as HttpRequest;
- use UCore\Model\RequestLog;
- use Uraus\Kku\Request;
- class RequestLogger
- {
- static $di;
- /**
- * @var RequestLog $requestLog
- */
- private $requestLog;
- private $httpRequest;
- private $response;
- public function __construct(HttpRequest $httpRequest)
- {
- $this->httpRequest = $httpRequest;
- $this->requestLog = new RequestLog();
- // 初始化请求日志
- $this->requestLog->request_unid = RUN_UNIQID;
- $this->requestLog->run_unid = RUN_UNIQID;
- $this->requestLog->path = $httpRequest->path();
- $this->requestLog->method = $httpRequest->method();
- $this->requestLog->headers = json_encode($httpRequest->headers->all());
- $this->requestLog->ipaddress = $httpRequest->ip();
- $this->requestLog->host = $httpRequest->getHost();
- $this->requestLog->post = base64_encode($httpRequest->getContent());
- $this->requestLog->sale_date = strtotime(date('Y-m-d'));
- $this->requestLog->save();
- }
- public static function getDi()
- {
- if (!self::$di) {
- self::$di = new RequestLogger(request());
- }
- return self::$di;
- }
- public function setResponse(Message $response)
- {
- $this->response = $response;
- }
- public function setError(string $error)
- {
- $this->requestLog->error = $error;
- }
- public function setUserId(int $user_id)
- {
- $this->requestLog->user_id = $user_id;
- }
- public function setRunTime(float $startTime)
- {
- $endTime = microtime(true);
- $this->requestLog->run_ms = intval(($endTime - $startTime) * 1000);
- }
- public function setProtobuf(Request $request)
- {
- $jsonData = $request->serializeToJsonString();
- $this->requestLog->protobuf_json = $jsonData ;
- $this->requestLog->request_unid = $request->getRequestUnid();
- }
- public function __destruct()
- {
- if ($this->response) {
- $this->requestLog->response = $this->response->serializeToJsonString();
- }
- $this->requestLog->update();
- }
- }
|