2010-10-15 40 views
9

Tôi phải thay đổi đường dẫn đăng nhập mặc định của ứng dụng đường ray vì quá trình triển khai phần mềm nội bộ của công ty: về cơ bản ứng dụng đường ray của tôi kết thúc ở vị trí chỉ đọc và tôi cần tệp nhật ký được ghi trong thư mục "được tạo cho điều này".Làm thế nào để thay đổi đường dẫn đăng nhập mặc định của Rails 3.0?

Với Rails 2.x chúng tôi đã sử dụng để thêm một số ma thuật đen trong tập lệnh FCGI của chúng tôi để ép buộc khi được triển khai trên sản phẩm. host:

class Rails::Configuration 
    def default_log_path 
    File.join(ENV['SOME_ENVIRONMENT_VAR'], "var/output/logs/rails.log") 
    end 
end 

Tuy nhiên, cấu hình không phải là một lớp nữa trong Rails 2.3 (đó là một mô-đun), và nó dường như tôi không có bất kỳ default_log_path tham gia ở đó nữa cũng ...

Trả lời

7

Bạn chỉ cần xác định nhật ký của mình

config.logger = ActiveSupport::BufferedLogger.new(File.join(ENV['SOME_ENVIRONMENT_VAR'], "var/output/logs/rails.log")) 

Thủ thuật này cũng hoạt động với Rails 2. Và bạn có thể xác định theo môi trường nơi bạn thực sự muốn tệp nhật ký của mình.

+2

Thực tế Rails3 (ít nhất) có config.log_path mà tôi đã sử dụng và hoạt động hoàn hảo. Nhưng tôi sẽ không tìm thấy nếu không có giải pháp (thực sự rất hợp lý) của bạn :) – Romain

+0

như bạn muốn. Bạn cũng có thể thay đổi logger của mình bằng cấu hình config.logger. Sử dụng Syslogger bằng ví dụ. Đặt bạn tìm thấy câu trả lời. Nó tốt hơn. – shingara

+0

Thực ra, có nguồn thông tin chuẩn về các thuộc tính cấu hình này không? Tôi đã không tìm thấy một trong những toàn diện cho đến nay ... – Romain

6

Thiết lập config.log_path đã bị phản đối - các giải pháp khuyến khích bây giờ là:

config.paths.log = "/some/path/#{Rails.env}.log"

+1

Cú pháp này không xuất hiện chính xác. Trong khối cấu hình, nếu bạn làm một 'config.paths ['logfile'] = '...'' có vẻ đúng nhưng LogTailer vẫn than phiền. – aceofspades

+2

Đối với tôi, 'config.paths ['log']' như được gợi ý bởi @aceofspades (bên dưới, không phải 'logfile') hoạt động tốt. – iGEL

4

Tính đến Rails 3.2.3, trông giống như tên đường dẫn đăng nhập cũng được định nghĩa trong Rails::Rack::LogTailer#initialize, và điều đó xuất phát từ Rails: : Máy chủ # log_path.

LOG_PATH = "log/mylog.log" 

require 'rails/commands/server' 
module Rails 
    class Server 
    def log_path 
     LOG_PATH 
    end 
    end 
end 

class Application < Rails::Application 
    ... 
    config.paths['log'] = LOG_PATH 
    ... 
end 
Các vấn đề liên quan