Laravel记录新用户注册日志时变量返回null的问题求助
问题:Laravel日志方法返回null导致数据库存储错误
我在记录新用户注册日志时遇到问题,代码行$log_message = Log::channel('logRegisterUser')->info("{$name_user} registered using the IP {$ip_user} in {$data}.");中,$log_message的值为null,导致执行'description_log' => $log_message时出错,用dd()验证过该变量确实是null。
相关配置与代码
logging.php
'logRegisterUser' => [ 'driver' => 'single', 'path' => storage_path('logs/logRegisterUser.log'), 'level' => 'debug', ],
RegisteredUserController.php
public function __construct() { $this->logModel = new LoggingModel(); } public function create() { return view('auth.register'); } public function store(Request $request) { $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'confirmed', Rules\Password::defaults()], ]); $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), ]); event(new Registered($user)); $date = Carbon::now()->format('d/m/Y H:i:s'); $name_user = $user->name; $ip_user = request()->ip(); $log_message = Log::channel('logRegisterUser')->info("{$name_user} registered using the IP {$ip_user} in {$data}."); $this->logModel->create([ 'description_log' => $log_message, 'relation' => '', ]); Auth::login($user); return redirect(RouteServiceProvider::HOME); }
解决方法
1. 日志方法本身不返回内容
Laravel的Log::info()(包括其他日志级别方法)无返回值,它仅负责将内容写入指定日志文件,调用后自然返回null。需要先单独构建日志内容字符串,再分别执行“写入日志”和“存入数据库”的操作。
2. 修复变量名拼写错误
代码中定义的变量是$date,但日志字符串里误用了{$data},这会触发Undefined variable: data错误,同时导致日志内容异常。
修正后的代码片段
将store方法中日志相关代码替换为:
$date = Carbon::now()->format('d/m/Y H:i:s'); $name_user = $user->name; $ip_user = request()->ip(); // 先构建完整的日志内容 $logContent = "{$name_user} registered using the IP {$ip_user} in {$date}."; // 写入日志文件 Log::channel('logRegisterUser')->info($logContent); // 存入数据库 $this->logModel->create([ 'description_log' => $logContent, 'relation' => '', ]);
内容的提问来源于stack exchange,提问作者user20338917
相关产品推荐
相关产品推荐

