Heim > PHP-Framework > Laravel > Über Fehler und Protokolle in Laravel

Über Fehler und Protokolle in Laravel

藏色散人
Freigeben: 2021-04-09 13:46:33
Original
2357 Leute haben es durchsucht

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).

Über Fehler und Protokolle in Laravel

Log

Die Protokolle in Laravel sind basierend auf Monolog gekapselt. Laravel hat mehrere Dinge daran vorgenommen:

  • Vereinfachte Funktionen wie addInfo in Monolog in Funktionen wie Info
  • Zwei Parameter useFiles und useDailyFiles hinzugefügt, um die Protokollverwaltung und das Schneiden zu vereinfachen
  • Wenn Sie die Monolog-Methode aufrufen möchten, benötigen Sie um die callMonolog-Funktion aufzurufen

Okay, sehen wir uns an, wie die folgenden Anforderungen implementiert werden:

Speichern Sie verschiedene Protokollinformationen in verschiedenen Protokollen

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 = &#39;error&#39;;
 
    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().&#39;/logs/&#39;. $type .&#39;.log&#39;, $day);
        }
 
        $log = self::$loggers[$type];
        return $log;
    }
}
Nach dem Login kopieren

Auf diese Weise werden unterschiedliche Protokolldaten in verschiedenen Protokolldateien gespeichert. Es können auch Protokolldateninformationen aufgezeichnet werden.

Der Fehlerprotokollstapel von Laravel ist zu lang. Was soll ich tun?

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 = [
        &#39;message&#39; => $exception->getMessage(),
        &#39;file&#39; => $exception->getFile(),
        &#39;line&#39; => $exception->getLine(),
        &#39;code&#39; => $exception->getCode(),
        &#39;url&#39; => Request::url(),
        &#39;input&#39; => Input::all(),
    ];
    BLogger::getLogger(BLogger::LOG_ERROR)->error($err);
});
Nach dem Login kopieren
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().&#39;/logs/laravel.log&#39;, 30);
Nach dem Login kopieren
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(&#39;query.log&#39;, false)) {
        BLogger::getLogger(&#39;query&#39;)->info($queries);
    }
}
Nach dem Login kopieren

Wenn Sie auch den 404-Fehler behalten möchten:

// 数据库实时请求的日志
if (Config::get(&#39;database.log&#39;, false))
{
    Event::listen(&#39;illuminate.query&#39;, function($query, $bindings, $time, $name)
    {
        $data = compact(&#39;query&#39;,&#39;bindings&#39;, &#39;time&#39;, &#39;name&#39;);
        BLogger::getLogger(BLogger::LOG_QUERY_REAL_TIME)->info($data);
    });
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage