2016-03-28 18 views

Antwort

6

Ich habe einige veraltete Bibliotheken und komplizierte Wege gefunden, dies zu tun. So endete ich mit einer sehr einfachen Lösung. Tatsächlich haben Laravel Monolog Handler bereits Loggly Handler out of the box.

Config Info hinzufügen/services.php config:

'loggly' => array(
    'key' => 'ENTER_YOUR_LOGGLY_TOKEN_HERE', 
    'tag' => 'ProjectName_' .strtolower(env('APP_ENV')), 
), 

als Monolog-Handler in Bootstrap/app.php hinzufügen, bevor $ app zurückgegeben:

/* 
|-------------------------------------------------------------------------- 
| Setup Loggly Handler 
|-------------------------------------------------------------------------- 
*/ 
$app->configureMonologUsing(function($monolog) { 
    $handler = new  \Monolog\Handler\LogglyHandler(config('services.loggly.key'),\Monolog\Logger::DEBUG); 
    $handler->setTag(config('services.loggly.tag')); 

    $monolog->pushHandler($handler); 
}); 

Voila! Sie erhalten Ihre Monolog-Logs im Loggly-Dashboard.

+0

Vielen Dank! Klappt wunderbar. – littlebridge

+1

Einzige Sache hier, Sie werden nichts lokal mit dieser Konfiguration protokollieren. Jedes Protokoll wird zu Loggly verschoben. – littlebridge

+0

ja, fühlen Sie sich frei, Antwort zu bearbeiten, um lokale Protokolle einzubeziehen –

2

Ich war in der Lage, Laravel Standard lokalen Log-Verhalten zu haben, und drängen auf Loggly in der gleichen Zeit, indem Sie mladen-janjetovic's Code ein wenig zwicken. Getestet auf Laravel 5.3

config/services.php:

'loggly' => [ 
    'key' => 'ENTER_YOUR_LOGGLY_TOKEN_HERE', 
    'tag' => 'ProjectName_' .strtolower(env('APP_ENV')), 
], 

Bootstrap/app.php:

/* 
|-------------------------------------------------------------------------- 
| Push to Loggly, and save locally. 
|-------------------------------------------------------------------------- 
*/ 
$app->configureMonologUsing(function($monolog) use ($app) { 
    $log = $app->make(Illuminate\Log\Writer::class); 

    $logglyHandler = new \Monolog\Handler\LogglyHandler(config('services.loggly.key')); 
    $logglyHandler->setTag(config('services.loggly.tag')); 

    if (config('app.env') == 'production') 
    { 
     // Push to Loggly and save local if in production 
     $log->getMonolog()->pushHandler($logglyHandler); 
     $log->useFiles(storage_path('/logs/laravel.log')); 
    } 
    else 
    { 
     // Otherwise, save only locally 
     $log->useFiles(storage_path('/logs/laravel.log')); 
    } 
}); 
0

Um auf Hassan Beitrag zu erweitern (Entsendung als Antwort, als ich noch don‘ Ich habe genug Reputation, um einen Kommentar zu schreiben.

Wenn Sie eine Notwendigkeit, vor Ort die Tagebücher zu verwenden, können Sie folgenden Code verwenden:

$logFile = 'laravel'.'.txt'; 
$log->useDailyFiles(storage_path().'/logs/'.$logFile); 

Natürlich Logfile Name völlig willkürlich ist.

laravel-YYYY-MM-DD.txt 

Edit:: mit einem Upgrade auf 5.4 diese Zeile nicht mehr funktioniert: In diesem Beispiel Format als solche wird

$log = $app->make(Illuminate\Log\Writer::class); 

Als Abhilfe können Sie Writer-Instanz erstellen können manuell, Einspritzung $ Monolog verfügbar von configureMonologUsing Schließung:

$log = new Illuminate\Log\Writer($monolog);