-
Stocare informatii in Log
Cand creati un proiect Laravel, setarile pentru erori sunt automat configurate. Clasa
App\Exceptions\Handler se ocupa de inregistrarea erorilor si le reda inapoi la utilizator.
Optiunea
debug din fisierul
config/app.php determina ce informatii de eroare sunt afisate utilizatorului. Aceasta optiune e setata sa respecte valoarea din variabila
APP_DEBUG, care se afla in fisierul
.env.
- Pentru lucru pe serverul local, setati
true la valoarea variabilei
APP_DEBUG. In aplicatiile care sunt publice setati valoarea
false.
Pentru inregistrarea informatiilor in Log, Laravel foloseste libraria
Monolog. Fisierele "log" sunt create in directorul
storage/logs.
Erori HTTP - Pagini de Eroare HTTP Personalizate
Pentru a genera coduri de eroare HTTP: 404, 500, etc., puteti folosi metoda
abort() oriunde in aplicatia Laravel.
abort(404);
- Optional, puteti adauga un raspuns text personalizat:
abort(403, 'Unauthorized action.');
Pagini de Eroare HTTP Personalizate
Laravel face foarte usor utilizarea paginilor de eroare personalizate pentru fiecare cod de eroare HTTP. Doar creati un director
errors in directorul
resources/views/, apoi creati un fisier "
Codul_Erorii.blade.php" pentru fiecare eroare HTTP pe care vreti sa o personalizati. Framework-ul Laravel va detecta automat fisierul in directorul "
views/errors/" si il va folosi cand apare acea eroarea.
- Aici aveti un exemplu de fisier template pentru pagina in caz de eroare http
404.
1. Creati un fisier in
resources/views/errors/404.blade.php si copiati codul urmator in acel fisier:
<!doctype html>
<html lang="{{app()->getLocale()}}">
<head>
<meta charset="utf-8">
<title>Error 404</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style>
body {
background:#f7f8fe;
font-family:'Calibri',sans-serif;
margin:1px 1%;
padding:0;
position:relative;
text-align:center;
}
</style>
</head>
<body>
<h1>Error 404 - Page not exists</h1>
<h2>Which does not exist cannot affect you.</h2>
<h3>If you want something that exists, your-self is the Truth in this present.</h3>
</body>
</html>
2. Accesati o adresa a unei pagini care nu exista, spre exemplu:
//localhost:8000/present-gift
- Va afisa continutul din fisierul
resources/views/errors/404.blade.php.
In acelasi mod puteti face pagini de eroare pentru codurile de erori http:
401, 403, 500.
Stocare informatii in Log
Laravel suporta scrierea de informatii log in
fisier unic, fisiere zilnice, in syslog si in
errorlog.
Pentru a configura Laravel ce mecanism de stocare sa foloseasca, modificati optiunea
log in fisierul
config/app.php.
- Spre exemplu pentru a folosi fisierele log
zilnice in loc de un
singur fisier, setati valoarea 'daily' la
log in fisierul
app.php:
'log'=> 'daily'
Maximu de Fisiere Log Zilnice
Cand se foloseste modul log
daily, Laravel va pastra ultimele cinci zile de fisiere log. Ca sa modificati numarul de fisiere retinute, adaugati o valoare cu numarul de zile intr-o proprietate
log_max_files in fisierul
config/app.php:
'log_max_files'=> 7
Nivele de severitate pt. Log
In Laravel puteti folosi urmatoarele nivele de severitate - de la cel mai putin sever la cel mai sever:
debug, info, notice, warning, error, critical, alert, emergency.
In mod implicit, Laravel scrie in log informatii de la toate nivelurile de severitate. Daca doriti sa configurati un anumit minim de severitate care ar trebui inregistrata, schimbati valoarea de la
APP_LOG_LEVEL in fisierul "
.env":
APP_LOG_LEVEL=error
Sau optiunea
log_level in fisierul "
config/app.php".
'log_level'=> 'error'
Laravel va inregistra toate nivelurile mai mari sau egale cu nivelul de severitate specificat. Spre exemplu, daca setati nivelul
error, va inregistra mesaje legate de:
error, critical, alert, emergency.
Scriere informatii in log-uri
Puteti scrie informatii in log-uri folosind
Log facade.
<?php
namespace App\Http\Controllers;
use App\User;
use Illuminate\Support\Facades\Log;
use App\Http\Controllers\Controller;
class UserController extends Controller{
//Show the profile for the given user
//@param int $id
//@return view
public function showProfile($id){
Log::info('Showing user profile for user: '.$id);
return view('user.profile', ['user'=> User::findOrFail($id)]);
}
}
-
Clasa Log furnizeaza opt tipuri de nivele log:
Log::emergency($message);
Log::alert($message);
Log::critical($message);
Log::error($message);
Log::warning($message);
Log::notice($message);
Log::info($message);
Log::debug($message);
- Puteti adauga un array cu date ca al doilea argument in metodele clasei
Log. Aceste date vor fi formmatate si afisate in mesajul salvat in log:
Log::notice('User failed to login.', ['id'=> $user->id]);
- Documentation:
Laravel - Errors and Logging