2016-04-29 6 views
1

ich den Namen des aktuellen Protokolls in einer App Laravel 5.Laravel: Name des aktiven Protokolls zur Laufzeit erhalten

Versuchen Suche nach diesem auf Iluminate\Log\Writer wissen müssen.

Nur $ path var beim Aufruf einiger Funktionen, aber ich verstehe nicht, wie man diesen Wert bekommt.

Grundsätzlich muss ich die Datei komprimieren und senden, wenn die App einige Ausnahmen bekommt. Dazu muss ich den Namen des aktiven Logs kennen.

Meine app conf Protokoll für die tägliche Rotation und sehen Namen von Protokollen wie zum laravel-2016-04-29.log

Ich kenne den Namen PHP, aber ich glaube, es möglich ist, die Log-Klasse selbst zu wissen, verwendet wird.

Das Beste, was ich gedacht habe

use Carbon\Carbon; 
... 

$carbon = new Carbon(); 
$log = storage_path().'/logs/laravel-'.$carbon->toDateString().'.log'; 

Ich denke, es einen besseren Weg

Antwort

0

ich zufällig ist ein wenig in Laravel Anmeldung vor ein paar Tagen und möglicherweise haben eine Lösung für Sie zu graben.

Log::info('abc'); 

foreach (Log::getMonolog()->getHandlers() as $handler) { 
    $stream = $handler->getStream(); 

    if ($stream) { 
     $meta = stream_get_meta_data($stream); 
     echo $meta['uri'] . "<br/>"; 
    } 
} 

Dadurch werden Pfade von Protokolldateien ausgegeben, in die geschrieben wurde. Sonst getStream() wird null zurückgeben und daher Pfad kann nicht so einfach extrahiert werden. Es ist in url Eigenschaft von Monolog\Handler\RotatingFileHandler gespeichert, leider geschützt, daher müssten Sie diese Klasse erweitern, um den Pfad zu erhalten.

+0

Die Route kein Problem. Mit 'storage_path(). '/ Logs /'' erhalten Sie einen einfachen Rute. Seinen Namen. Der Name ist logisch, wenn keine Änderungen vorgenommen wurden. Laravel-DATETIME.log. DATETIME ist das lokale Datumsformat. – abkrim