Heim > Artikel > PHP-Framework > Über Fehler und Protokolle in Laravel
Die folgende Tutorial-Kolumne von laravel stellt Ihnen die Fehler und Protokolle in Laravel vor (Sie können das Protokollverzeichnis und den Namen der Protokolldatei anpassen).
Log
Die Protokolle in Laravel sind basierend auf Monolog gekapselt. Laravel hat mehrere Dinge daran vorgenommen:
Okay, sehen wir uns an, wie die folgenden Anforderungen implementiert werden:
Diese Anforderung kommt sehr häufig vor, z. B. beim Aufrufen von Bestellungen. Das Protokoll muss in order.log aufgezeichnet werden , und die Aufzeichnung des Abrufens von Geschäftsinformationen muss in shop.log aufgezeichnet werden. Sie können dies tun:
<?php use Monolog\Logger; use Monolog\Handler\StreamHandler; use Illuminate\Log\Writer; class BLogger { // 所有的LOG都要求在这里注册 const LOG_ERROR = 'error'; private static $loggers = array(); // 获取一个实例 public static function getLogger($type = self::LOG_ERROR, $day = 30) { if (empty(self::$loggers[$type])) { self::$loggers[$type] = new Writer(new Logger($type)); self::$loggers[$type]->useDailyFiles(storage_path().'/logs/'. $type .'.log', $day); } $log = self::$loggers[$type]; return $log; } }
Auf diese Weise werden unterschiedliche Protokolldaten in verschiedenen Protokolldateien gespeichert. Es können auch Protokolldateninformationen aufgezeichnet werden.
Verwenden Sie die obige Blogger-Klasse und zeichnen Sie die erforderlichen Fehlerinformationen in start/global.php auf.
Auch in start/global.php// 错误日志信息
App::error(function(Exception $exception, $code)
{
Log::error($exception);
$err = [
'message' => $exception->getMessage(),
'file' => $exception->getFile(),
'line' => $exception->getLine(),
'code' => $exception->getCode(),
'url' => Request::url(),
'input' => Input::all(),
];
BLogger::getLogger(BLogger::LOG_ERROR)->error($err);
});
So zeichnen Sie das SQL-Protokoll einer Anfrage auf
Dies sollte weiter verfeinert werden und gefragt werden: Möchten Sie es in Echtzeit aufzeichnen?
Wenn Sie keine Echtzeitaufzeichnung wünschen, verfügt Laravel über DB::getQueryLog, um die durch eine App-Anfrage erhaltene SQL-Anfrage abzurufen: Log::useDailyFiles(storage_path().'/logs/laravel.log', 30);
Wenn Sie eine Echtzeitaufzeichnung benötigen (d. h. wenn Sie irgendwo sterben, Wenn die SQL-Anforderung der Seite ebenfalls aufgezeichnet wird, müssen Sie das illuminate.query-Ereignis abhören Wenn Sie beispielsweise eine Schnittstelle entwerfen und JSON-Daten auch dann zurückgeben möchten, wenn ein Fehler auftritt, können Sie Folgendes tun:
## 在filters.php中 App::after(function($request, $response) { // 数据库查询进行日志 $queries = DB::getQueryLog(); if (Config::get('query.log', false)) { BLogger::getLogger('query')->info($queries); } }
Wenn Sie auch den 404-Fehler behalten möchten:
// 数据库实时请求的日志 if (Config::get('database.log', false)) { Event::listen('illuminate.query', function($query, $bindings, $time, $name) { $data = compact('query','bindings', 'time', 'name'); BLogger::getLogger(BLogger::LOG_QUERY_REAL_TIME)->info($data); }); }
Das obige ist der detaillierte Inhalt vonÜber Fehler und Protokolle in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!