在 laravel 的错误日志中记录 IP
2024-03-09 tech laravel 2 mins 2 图 775 字
缘起是这种日志:
一般来说这种日志在 nginx 上很常见,但穿透到 nginx 到实际的应用里,已经说明是有针对性的攻击行为了,需要记录在案。先把 IP 记录下来。
要在 Laravel 中的错误日志中打印客户端 IP,你可以使用 Laravel 的异常处理机制:
-
打开
app/Exceptions/Handler.php
文件。 -
导入
Illuminate\Http\Request
类。use Illuminate\Http\Request;
-
使用 PHP 默认的 $__SERVER 字段获取远端IP:
-
也可以用 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); }