2016-04-28 14 views
2

Dies ist meine erste Post im Stapelüberlauf, also wenn ich etwas falsch mache, bitte benachrichtigen Sie mich.laravel Änderung Fehlerbericht ohne Grundcode zu verwirren?

Also ich entwickle eine Plattform für einen Kunden und wir haben wenig Zeit für die Lieferphasen, also, um alles rechtzeitig fertig zu bekommen, möchte ich die Fehlermeldeebene in der Produktion ändern.

Um dies zu erreichen, ging ich zu: vendor> Laravel> Rahmen> src> Illuminate> Stiftung> Bootstrap> HandleExceptions.php - Line: 27 (glaube ich) und ersetzt:

error_reporting(-1); 

set_error_handler([$this, 'handleError']); 

set_exception_handler([$this, 'handleException']); 

register_shutdown_function([$this, 'handleShutdown']); 

von :

if(env('APP_DEBUG') == true) { 
    error_reporting(-1); 

    set_error_handler([$this, 'handleError']); 

    set_exception_handler([$this, 'handleException']); 

    register_shutdown_function([$this, 'handleShutdown']); 

}else{ 
    set_error_handler(null); 
    set_exception_handler(null); 
} 

Alles wirkt wie ein Zauber, aber ich möchte, dass meine gute Praktiken in Schach halten und completelly zu Chaos mit Basis-Code zu vermeiden.

Jeder hat eine sugestion, wie kann ich diese Fehlerberichterstattung außer Kraft setzen (außer durch sie auf jedem Blade-Layout zu tun - ich möchte auf ein Minimum Codewiederholung halten)

wieder aufnehmen, die Frage: - I will set_error_handler (null); set_exception_handler (null); - Der Grund ist: wir sind knapp im Zeitplan und mit einem komplizierten Projekt (viele Beziehungen) - Ich habe das Problem bereits gelöst, indem ich es auf dem Framework selbst oder auf jeder Blade-Seite deklariert habe. Aber um gute Programmierpraktiken zu behalten, möchte ich mich nicht mit dem Framework herumschlagen und Code-Wiederholungen vermeiden.

Vielen Dank im Voraus für die Hilfe.

+1

Die meisten Menschen würden in Betracht ziehen, Fehler zu unterdrücken und "gute Programmierpraktiken" sich gegenseitig auszuschließen. – Nick

+0

Sicher, aber lass es uns so machen. Ich habe an dieser Stelle eine Plattform mit fast 500 Methoden in 2 Wochen implementiert. Wir und der Kunde haben zugestimmt, Fehlerberichte zu vermeiden, weil er deutlich gemacht hat, dass es unbedingt notwendig ist, ein funktionierendes Produkt zu entwickeln. So behalten wir diesen Teil –

+0

Unterdrücken von Fehlern ändert nicht ein gebrochenes Produkt in ein Minimum lebensfähiges Produkt, es macht es nur ein gebrochenes Produkt, das nicht einmal Ihnen sagt, wenn es scheitert. Und das ist viel schlimmer! – Nick

Antwort

0

an mehr Informationen haben, Wie Sie wahrscheinlich wissen, gibt es verschiedene verschiedene Arten von Fehlern in PHP: http://php.net/manual/en/errorfunc.constants.php

Bei schwerwiegenden/nicht behebbaren Fehlern möchten Sie wahrscheinlich die Laravel-Fehlerbehandlung beibehalten. Die Alternative ist, dass Ihre Benutzer einfach eine leere weiße Seite sehen, was überhaupt nicht hilfreich ist. Daher würde ich vorschlagen, dass Sie die eigentlichen Fehler- und Ausnahme-Handler intakt lassen.

Die error_reporting() Funktion ändert sich , die Fehler gemeldet werden. Der von Laravel verwendete Wert -1 bedeutet Bericht alle Fehler.Wenn Sie diese Zeile mit Ihrer Änderung umgangen haben, fällt die Fehlermeldungsstufe auf den Wert zurück, der in Ihrer php.ini-Konfiguration festgelegt ist. Sie möchten die Fehlerberichterstattung auf diese Stufe setzen.

Also, Wie überschreibt man das Niveau von error_reporting wie von Laravel gesetzt?

Sie können einfach nach Laravel wieder error_reporting() aufrufen und auf den von Ihnen gewünschten Wert einstellen. Es klingt wie Sie wahrscheinlich wie etwas wollen:

error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED & ~E_WARNING); 

Wo Sie, dass setzen sollte?

überall dort, wo es läuft nach Laravel seiner Fehlerberichterstattung einzurichten und vor Ihr fehlerhafter Code ausgeführt wird. Die genauen Standorte können je nach Version von Laravel variieren. Für 5.x, vielleicht in der boot() Methode von AppServiceProvider?

+0

Nun, das ist die Antwort, die ich gerne hören würde. Ich laufe 5.2. Ich werde nach dem Start versuchen und Ihre Antwort als akzeptiert, wenn es funktioniert –

+0

Fertig und arbeiten - danke Mann! –

0

Ich denke, dass Sie die App verwenden können: Fehler von Laravel für die Behandlung der Fehler.

Auf Ihrem app/start/global.php, können Sie dies setzen:

App::error(function(Exception $exception) 
{ 
    Log::error($exception); 
}); 

Und Sie können alle Fehler von Laravel handhaben und tun, was Sie wollen, wenn sie passiert.

Sie mehr Informationen haben bei https://laravel.com/docs/4.2/errors#handling-errors

Update: Dieses ist für Laravel 5,0

public function report(Exception $e) 
{ 
    if ($e instanceof CustomException) { 
     // 
    } 

    return parent::report($e); 
} 

Sie https://laravel.com/docs/5.0/errors#handling-errors

+0

Versuchte alles, keiner von ihnen funktioniert. Ich habe weiterhin Undefined Offset Ausnahmen –

Verwandte Themen