缘起是这种日志:
一般来说这种日志在 nginx 上很常见,但穿透到 nginx 到实际的应用里,已经说明是有针对性的攻击行为了,需要记录在案。先把 IP 记录下来。
要在 Laravel 中的错误日志中打印客户端 IP,你可以使用 Laravel 的异常处理机制:
打开 app/Exceptions/Handler.php
文件。
导入 Illuminate\Http\Request
类。
use Illuminate\Http\Request;
在 report()
方法中,可以访问异常和请求。你可以在这里将客户端 IP 写入日志。
也可以用以下的方法,也做个记录:
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);
}