2009-03-10 40 views
13

Tôi gặp lỗi sau khi khởi động lại ứng dụng đường ray của mình. Tôi đã gặp vấn đề này trước đây, trên một máy chủ khác với một ứng dụng khác, nhưng không thể nhớ vấn đề là gì, hoặc cách tôi giải quyết nó.Đường ray: Không thể truy cập tệp nhật ký

Rails Error: Unable to access log file. Please ensure that /apps/staging/releases/20090310162127/log/staging.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed. 

Tôi đang triển khai một cụm mongrel với capistrano trên Ubuntu.

Khi tôi làm ls -l /apps/staging/releases/20090310162127/log/staging.log

kết quả là:

-rw-rw-rw- 1 me grp 51 Mar 10 16:07 /apps/staging/releases/20090310162127/log/staging.log 

Các dir log là một link đến/apps/dàn/chia sẻ/log.

Điều gì đang xảy ra?

Trả lời

26

Nó bật ra được một đường ray lỗi tinh tế:

Khi một ngoại lệ xảy ra trong hai dòng sau

logger = ActiveSupport::BufferedLogger.new(configuration.log_path) 
logger.level = ActiveSupport::BufferedLogger.const_get(configuration.log_level.to_s.upcase) 

ray giả định nó không thể tìm thấy tập tin đăng nhập. Tuy nhiên, lỗi thực sự xảy ra trong dòng thứ hai: một NameError vì hằng số không chính xác. Lý do là có mức nhật ký cũ trong tệp cấu hình của tôi:

config.log_level = Logger::INFO 

Rails 2.2 sử dụng trình ghi nhật ký riêng và không hiểu dòng trên.

Giải pháp: loại bỏ dòng, hoặc sử dụng:

config.log_level = :info 
+0

Điều cần biết. Tôi nghĩ rằng tôi đã đi qua vấn đề này bản thân mình một vài lần. –

+0

Tôi gặp phải vấn đề này khi tôi chuyển đổi các lệnh gửi thư và trình đăng nhập của mình: config.log_level =: sendmail D'oh! – wesgarrison

+0

Cảm ơn vì điều này, cứ nghĩ đó là lỗi VirtualBox. –

0

Đường ray có đang hoạt động như me không? Nếu không, người dùng đang chạy như thế nào? Người dùng đó có phải là biên tập viên của jail không? Người dùng có quyền truy cập cho tất cả các thành phần của /apps/staging/shared/log cũng như tất cả các thành phần của /apps/staging/releases/20090310162127/log không?

+0

Vâng, nó chạy như "tôi", không có ý tưởng gì jail'ed nghĩa mặc dù. Có, tất cả các thành phần dir đều có thể di chuyển được. bản phát hành/20090310162127 có thể được truy cập thông qua liên kết (được gọi là hiện tại). –

+2

@Michiel, bị bỏ tù có nghĩa là/được chuyển vào thư mục đặc biệt vì lý do bảo mật. Bạn có thể xác nhận rằng nếu bạn 'su - me' và 'touch /apps/staging/releases/20090310162127/log/staging.log' bạn không gặp lỗi, đúng không? – vladr

+0

Thú vị - Tôi nên xem xét điều đó. Các thông báo lỗi đã hoàn toàn gây hiểu nhầm mặc dù - không có gì để làm với các tập tin đăng nhập. –

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