2016-07-24 61 views
0

我執行一個try catch語句,我需要代碼來做某件事情,如果它失敗了,就捕獲錯誤,將它記錄到laravel日誌文件並繼續循環。我的代碼是:如何在try/catch語句laravel中記錄錯誤?

foreach ($logins as $login) { 
     try { 
      // Do something here 
     } catch (Exception $e) { 
      // Log errors 
      \Log::error($e->getMessage()); 
      continue; 
     } 
    } 

但我得到讀取

[Symfony\Component\Debug\Exception\FatalErrorException]       
Namespace declaration statement has to be the very first statement in the script 

我用\登錄::名稱空間中,也嘗試添加了use Log;但我仍然得到這個錯誤的錯誤。

回答

0

在腳本之一,有一個類似的命名空間聲明:

namespace projects\name; 

錯誤被觸發,因爲在聲明之前的一些其他腳本行。這是非法的:命名空間聲明必須是第一個執行語句。

一旦你解決這個問題,那麼這行:

\Log::error(...) 

也將導致你的錯誤。領先的\意味着您正在訪問全局PHP名稱空間中的類。如果您的Log類位於特定的命名空間中,例如projects\name,則可以通過以下兩種方式之一使用該類。使用完全合格的名稱:

\projects\name\Log::error(...) 

或使用use聲明。

use projects\name\Log; //early in the file. No need for leading \ 
... 
Log::error(...) 
+0

謝謝你是我的問題。因爲laravel是命名空間,所以還必須爲'\ Exception $ e'添加\。 – kevinabraham

+0

Log是Laravel的根(全局)命名空間中的一個外觀。 – Devon