2012-01-22 22 views
5

如何用Heroku獲取Apache式服務器日誌?我在雪松堆棧上使用Rails。用Heroku + Rails進行Apache式日誌記錄

「Apache風格」的意思,我希望看到這樣的每一個人HTTP請求(我並不真正關心,如果格式是完全一樣Apache的):

66.249.71.85 - - [22/Jan/2012:15:15:04 +0000] "GET /robots.txt HTTP/1.1" 200 149 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 

我認爲使用像Clogger這樣的機架中間件日誌記錄器,但我不確定是否有一種簡單的方法可以將日誌文件從(臨時)dynos轉移到中央(永久)存儲位置。

回答

4

Heroku支持系統日誌流失,所以你可以設置一個推送請求到另一個位置並在那裏讀取它們。

你可以在他們的文檔中閱讀更多關於系統日誌排水管here

0

儘管這篇文章可能不會回答你從Heroku獲取日誌的問題,但這個問題是在Heroku中尋找更好的日誌時出現的幾個命中之一,它提供了請求的引用URL和用戶代理。

因此,我想分享我如何完成獲取apache日誌樣式記錄在Heroku中,以防其他人搜索它。

config.ru

require 'clogger' 
use Clogger, logger: $stdout, 
    format: %Q|$ip - $remote_user [$time_local] "$request" status $response_length "$http_referer" "$http_user_agent"| 

有實際上是一個格式::聯合,但是Heroku的,因爲它通過中繼AWS和你最後總是看到一個IP這樣做特別是不工作來自10/8網絡。

以上解決方案基於的內部阻塞器定義:組合

這個解決方案也有缺點:我看到「IP1,IP2」從企業網絡(可能是後面的另一代理/過濾器的過濾器/代理)$ IP一次。 因爲我的解決方案適用於我的原因,所以我不想深入研究,但如果將此數據放入日誌分析器中可能會失敗。