2012-01-22 16 views
5

Jak uzyskać logi serwera w stylu Apache z Heroku? Używam Railsów na stosie Cedar.Rejestrowanie w stylu Apache z Heroku + Rails

„Apache-style” znaczenie, chciałbym zobaczyć każde żądanie HTTP tak (ja właściwie nie obchodzi mnie, czy format jest dokładnie tak, jak 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)" 

uznałem za pomocą Rejestrator Rack-Middleware, taki jak Clogger, ale nie jestem pewien, czy istnieje łatwy sposób na przeniesienie plików dziennika z (efemerycznych) dynos do centralnej (stałej) lokalizacji pamięci.

Odpowiedz

4

Heroku obsługuje syslog opróżnia, więc możesz po prostu ustawić jedną, aby przekazywać żądania do innej lokalizacji i tam je czytać.

Możesz przeczytać więcej na temat drenaży syslog here w swojej dokumentacji.

0

Chociaż ten post może nie odpowiedzieć na pytanie o wylogowanie się z Heroku, to pytanie było jednym z nielicznych haseł, które wyszły podczas poszukiwania lepszego logowania w Heroku, które zapewnia adres URL odnośnika i klienta użytkownika.

Dlatego chcę się podzielić tym, jak to zrobiłem, aby uzyskać logi w stylu apache logując się w Heroku na wypadek, gdyby ktoś go szukał.

W config.ru:

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

Jest rzeczywiście Formatowanie :: Combined, ale nie konkretnie pracować z Heroku ponieważ przekaźniki przez AWS i zawsze kończy się widząc IP z sieci 10/8.

Powyższe rozwiązanie jest oparte na wewnętrznej definicji clogger dla : W połączeniu.

To rozwiązanie ma jedną wadę: Widziałem "IP1, IP2" dla $ ip raz z siecią firmową (prawdopodobnie filtr/proxy za innym proxy/filtr). Nie chciałem zagłębiać się głębiej, ponieważ moje rozwiązanie działa z mojej przyczyny, ale może zawieść, jeśli umieścisz te dane w analizatorze dzienników.

Powiązane problemy