如何将Log日志事件从Laravel发送到Loggly?

问题描述:

我想从我的Laravel 5.1应用程序发送Monolog日志到Loggly.com在线日志管理服务。来自所有可能的环境,包括当地的发展。如何将Log日志事件从Laravel发送到Loggly?

我发现一些过时的库和复杂的方法来做到这一点。所以我结束了非常简单的解决方案。实际上,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

是的,随意编辑答案,包括本地日志 –

我能够管理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')); 
    } 
}); 

要在哈桑的贡献扩大(张贴作为一个答案,因为我仍不很没有足够的声望发表评论)。

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

$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);