kevinabraham kevinabraham - 4 months ago 19
PHP Question

How to log errors in try/catch statement laravel?

Im performing a try catch statement where I need the code to do something and if it fails catch the error, log it to the laravel log file and continue with the loop. My code is:

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


But I am getting an error that reads

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


I've used \Log:: in the name space and also tried adding the
use Log;
but I still get this error.

Answer

In one of the scripts, there is a namespace declaration similar to this:

namespace projects\name;

The error is triggered because there is some other script line before the declaration. That's illegal: namespace declaration must be the first execution statement.

Once you fix that, then this line:

\Log::error(...)

Will also cause you an error. A leading \ means that you're accessing a class in the global PHP namespace. If your Log class is in a specific namespace, for example projects\name, then you can use the class in one of two ways. Using a fully qualified name:

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

Or using a use statement.

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