2016-03-28 100 views

回答

6

我發現一些過時的庫和複雜的方法來做到這一點。所以我結束了非常簡單的解決方案。實際上,Laravel Monolog Handler已經有了Loggly Handler。

添加配置信息到config/services.php:

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

不是增加獨白處理程序引導/ app.php返回$應用之前:

/* 
|-------------------------------------------------------------------------- 
| 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); 
}); 

瞧!您正在Loggly儀表板中獲取您的Monolog日誌。

+0

謝謝!奇蹟般有效。 – littlebridge

+1

這裏只有一件事,你不會使用這個配置在本地記錄任何東西。每個日誌都會被推送到Loggly。 – littlebridge

+0

是的,隨意編輯答案,包括本地日誌 –

2

我能夠管理Laravel的默認本地日誌行爲,並通過調整mladen-janjetovic's代碼來同時推送到Loggly。在Laravel測試的5.3

配置/ services.php:

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

引導/ 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

要在哈桑的貢獻擴大(張貼作爲一個答案,因爲我仍不很沒有足夠的聲望發表評論)。

如果你有需要在本地使用日常日誌,你可以使用下面的代碼:

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

當然,日誌文件名完全是任意的。在這個例子中,格式將是這樣:

laravel-YYYY-MM-DD.txt 

編輯: 與升級到5.4這條線不工作了:

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

作爲一種變通方法,您可以手動創建作家例如,注入$ monolog可從configureMonologUsing中關閉:

$log = new Illuminate\Log\Writer($monolog); 
相關問題