如何将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日志。
答
我能够管理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);
谢谢!奇迹般有效。 – littlebridge
这里只有一件事,你不会使用这个配置在本地记录任何东西。每个日志都会被推送到Loggly。 – littlebridge
是的,随意编辑答案,包括本地日志 –