在 laravel 的错误日志中记录 IP

缘起是这种日志:

image-20240310上午92427013

一般来说这种日志在 nginx 上很常见,但穿透到 nginx 到实际的应用里,已经说明是有针对性的攻击行为了,需要记录在案。先把 IP 记录下来。

要在 Laravel 中的错误日志中打印客户端 IP,你可以使用 Laravel 的异常处理机制:

  1. 打开 app/Exceptions/Handler.php 文件。

  2. 导入 Illuminate\Http\Request 类。

    use Illuminate\Http\Request;
    
  3. 使用 PHP 默认的 $__SERVER 字段获取远端IP:

    image-20240310上午92905943

  4. 也可以用 request() 方法 :

    public function report(Exception $exception)
    {
        if ($this->shouldReport($exception)) {
            $this->logClientIP($exception, request());
        }
       
        parent::report($exception);
    }
    protected function logClientIP(Exception $exception, Request $request)
    {
        $ip = $request->ip();
        $message = $exception->getMessage();
        $trace = $exception->getTraceAsString();
        $log = "IP: $ip\nMessage: $message\nTrace: $trace";
       
        \Log::error($log);
    }
    

员工不努力,也不主动承担很多责任,但总是想要加薪 - 知乎 论语 摘抄