Monolog günlüklerini Laravel 5.1 uygulamamdan Loggly.com çevrimiçi günlük yönetim hizmetine göndermek istiyorum. Yerel gelişim de dahil olmak üzere tüm olası ortamlardan.Log olayı Laravel'den Loggly'ye nasıl gönderilir?
cevap
Bunu yapmak için bazı güncel olmayan kitaplıklar ve karmaşık yollar buldum. Bu yüzden çok basit bir çözüm buldum. Aslında, Laravel Monolog Handler zaten Loggly Handler'ı kutudan çıkardı.
/services.php yapılandırma için yapılandırma bilgisi ekleyin: $ uygulaması gönderilmeden önce önyükleme/app.php içinde Monolog işleyicisi ekleyin Daha
'loggly' => array(
'key' => 'ENTER_YOUR_LOGGLY_TOKEN_HERE',
'tag' => 'ProjectName_' .strtolower(env('APP_ENV')),
),
:
/*
|--------------------------------------------------------------------------
| 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! Loggly panosunda Monolog Günlüklerinizi alıyorsunuz.
Laravel'in varsayılan yerel günlük davranışını yönetmeyi ve aynı anda mladen-janjetovic's kodunu biraz değiştirerek Loggly'ye basmayı başarabiliyordum. Laravel üzerinde test 5,3
config/services.php:
'loggly' => [
'key' => 'ENTER_YOUR_LOGGLY_TOKEN_HERE',
'tag' => 'ProjectName_' .strtolower(env('APP_ENV')),
],
önyükleme/app.php: Hala don' olarak
Hassan'ın katkısı genişletmek için/*
|--------------------------------------------------------------------------
| 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'));
}
});
(, cevap olarak gönderme Bir yorum göndermek için yeterli itibarınız var.
yerel olarak günlük günlükleri kullanmak için bir ihtiyaç varsa, kod aşağıdaki kullanabilirsiniz: Elbette
$logFile = 'laravel'.'.txt';
$log->useDailyFiles(storage_path().'/logs/'.$logFile);
, logfile adı tamamen keyfidir. Bu örnekte, biçim gibi olacaktır:
laravel-YYYY-MM-DD.txt
Düzenleme: Bu hat artık çalışmıyor 5.4'e yükseltme ile : Çözüm olarak
$log = $app->make(Illuminate\Log\Writer::class);
, el Yazar örneğini oluşturabilir, configureMonologUsing
adresinden ulaşılabilen $ monolog enjekte etme:
$log = new Illuminate\Log\Writer($monolog);
Teşekkürler! ÇALIŞIYOR bir cazibe gibi. – littlebridge
Sadece burada bir şey, bu yapılandırmayı kullanarak yerel olarak hiçbir şey kaydetmeyeceksiniz. Her günlük Loggly'ye aktarılacaktır. – littlebridge
evet, yerel günlükleri dahil etmek için cevabı düzenlemek için çekinmeyin –