最近总是看到服务器日志中出现
local.ERROR: Creating default object from empty value
但是,并不知道具体是哪里记录的,需要定位这行错误是哪里抛出来的。
> grep Log::error -r app/
app/Http/Controllers/Admin/CommentCrudController.php: Log::error($e);
app/Http/Controllers/Admin/SmsController.php: \Log::error($e);
app/Http/Controllers/Admin/SmsController.php: \Log::error($e);
app/Http/Controllers/Admin/SmsController.php: \Log::error($e);
app/Http/Controllers/OrderController.php: Log::error($result);
app/Http/Controllers/SmsController.php: \Log::error($e);
app/Http/Controllers/SmsController.php: \Log::error($e);
这样看,其实没有什么头绪。因为记录错误的地方太多了。
找到一个不错的解决方案
\Log::error(sprintf("%s - line %d - SOME ERROR INFO", __FILE__, __LINE__));
把上面的记录错误日志的地方,修改成这样就可以了,下次再出现错误,就知道具体是哪里报错了。
参考
https://stackoverflow.com/questions/39030725/laravel-5-2-get-current-line-of-log-event