2012-01-22 33 views
5

Làm cách nào để nhận nhật ký máy chủ kiểu Apache với Heroku? Tôi đang sử dụng Rails trên ngăn xếp Cedar.Ghi nhật ký kiểu Apache với Heroku + Rails

"Apache kiểu" ý nghĩa, tôi muốn xem mỗi yêu cầu HTTP cá nhân như thế này (tôi không thực sự quan tâm nếu định dạng là giống hệt như 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)" 

Tôi xem là sử dụng một Rack-middleware logger như Clogger, nhưng tôi không chắc liệu có một cách dễ dàng để có được các tập tin log ra khỏi dynos (ephemeral) đến một vị trí lưu trữ trung tâm (cố định).

Trả lời

4

Heroku hỗ trợ cống syslog, vì vậy bạn chỉ có thể thiết lập một yêu cầu đẩy tới vị trí khác và đọc chúng ở đó.

Bạn có thể đọc thêm về cống rãnh syslog here trong tài liệu của chúng.

0

Mặc dù bài đăng này có thể không trả lời câu hỏi của bạn về việc đăng xuất khỏi Heroku, câu hỏi này là một trong số ít lần truy cập xuất hiện khi tìm kiếm đăng nhập tốt hơn Heroku cung cấp URL tham chiếu và tác nhân người dùng yêu cầu.

Vì vậy, tôi muốn chia sẻ cách tôi hoàn thành để có được một phong cách đăng nhập apache đăng nhập trong Heroku trong trường hợp người khác tìm kiếm nó.

Trong config.ru:

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

Có thực sự là một định dạng :: Kết hợp, nhưng điều này đặc biệt không làm việc với Heroku vì nó chuyển tiếp qua AWS và bạn luôn luôn kết thúc khi nhìn thấy một IP từ mạng 10/8.

Giải pháp ở trên được dựa trên định nghĩa clogger nội bộ cho : Kết hợp.

Giải pháp này có một lỗ hổng: Tôi đã thấy "IP1, IP2" cho $ ip một lần từ một mạng công ty (có thể là một bộ lọc/proxy đằng sau một proxy/bộ lọc). Tôi không muốn tìm hiểu kỹ hơn vì giải pháp của tôi hoạt động vì lý do của tôi, nhưng có thể thất bại nếu bạn đặt dữ liệu này vào một trình phân tích nhật ký.

Các vấn đề liên quan