2017-02-16 14 views
0

我正在開發一個多租戶應用程序,我需要記錄更多數據,而不是傳遞給日誌外觀。我的意思是,每次我這樣做的時候......記錄上下文數據(沒有明確指定它)

Log::info('something happened'); 

我得到這個:

[2017年2月15日18點12分55秒] local.INFO:事情發生

但我希望得到這個:

[2017年2月15日18時12分55秒] [我的EC2實例ID] [CLIENT_ID] local.INFO:事情發生

正如您所看到的,我正在記錄EC2實例ID和我的應用的客戶端ID。我當然會簡化它,因爲我需要在那裏記錄更多的東西。當我消費和彙總這些日誌時,讓這些額外的字段使他們非常方便地確定出錯的地方和地點。

在Zend框架中,我通常對記錄器進行子類化,並將這些額外的字段添加到我的子類中,但我不確定如何使用Laravel做到這一點。我無法找到記錄器的實例化位置,這樣我就可以插入我的自定義記錄器(如果這是Laravel的路徑)。所以,我不問如何獲得EC2實例ID和其他東西,我只是問什麼Laravel記錄器的「熱線」的正確方式是能夠插入這個。

回答

1

只是一個想法......在Laravel記錄器是一個真正的獨白實例...你可以在上面按一個處理程序,並做你想做的任何處理每個條目......像這樣......

<?php 

$logger->pushProcessor(function ($record) { 
    $record['extra']['dummy'] = 'Hello world!'; 

    return $record; 
}); 

按照Laravel文檔,您可以在啓動時連接到monolog配置中...

定製獨白配置

如果你想有超過獨白是如何 配置爲您的應用程序,你可以使用應用程序的 configureMonologUsing方法完全控制。你應該在呼叫此方法 在你的引導/ app.php文件中的$應用程序變量 文件返回前右:

$app->configureMonologUsing(function ($monolog) { 
    $monolog->pushHandler(...); 
}); 

return $app; 

所以不是隻是把在$獨白實例處理器傳遞到鉤...

只是一個想法,我還沒有在Laravel嘗試過,但之前使用Monolog ...

相關問題