Làm cách nào bạn có thể ẩn đầu ra cơ sở dữ liệu trong bảng điều khiển Rails?


103

Trong phiên bản mới hơn của Rails, tôi đoán từ 3 trở lên, các truy vấn cơ sở dữ liệu được xuất ra bảng điều khiển. Điều này thường hữu ích, nhưng làm thế nào bạn có thể ẩn nó khi bạn không muốn xem nó?

Câu trả lời:


177

Một cách tốt hơn để làm điều này là nhập vào bảng điều khiển:

ActiveRecord::Base.logger.level = 1 

vì nó ngăn chặn các sự cố khi cố gắng sử dụng một con trỏ tới một trình ghi nhật ký được đặt thành nil (nguồn: Tắt tính năng đăng nhập Rails SQL trong bảng điều khiển )

Để bật lại

ActiveRecord::Base.logger.level = 0

31
Cảm ơn. Và để bật lại ActiveRecord::Base.logger.level = 0,.
thebenedict

Bất kỳ ý tưởng làm thế nào để làm điều này với Mongoid?
Jesse Farmer,

29
ActiveRecord::Base.logger = nil

từ đây


6
Điều này có thể gây ra NoMethodErrors với ActiveRecord mong đợi ActiveRecord::Base.loggerlà một đối tượng hơn là nil.
Aaron B. Russell

9

Câu trả lời ngắn gọn ... Trong tệp development.rb, hãy thay đổi hoặc thêm giá trị của config.log_levelđể có một dòng như

config.log_level = :info

1
Không, điều này dường như không có bất kỳ tác động nào đến những gì đang diễn ra trong bảng điều khiển. Ngoài ra, tôi muốn một giải pháp không yêu cầu tôi thay đổi các tệp dự án.
Roger Ertesvag

Được rồi, giải pháp phù hợp với tôi với webrick nhưng bạn có thể đang sử dụng máy chủ khác hoặc đang chạy ở chế độ sản xuất hoặc thử nghiệm?
madth3

3
Nó hoạt động để thay đổi nội dung của các tệp nhật ký. Nhưng câu hỏi là về bảng điều khiển rails, không phải các tệp nhật ký.
Roger Ertesvag

6

Từ một người bạn của tôi:

your_query; nil

1
Để cải thiện chất lượng bài đăng của bạn, vui lòng bao gồm cách / lý do bài viết của bạn sẽ giải quyết vấn đề.
Mick MacCallum

7
Điều này sẽ ngăn bảng điều khiển ruby ​​của bạn kết xuất kết quả của các biểu thức sang bảng điều khiển, nhưng nó sẽ không ngăn ActiveRecord kết xuất thông tin sql vào trình ghi nhật ký rails.
ermzeit

1
Đối với những người bình luận trước đây: câu trả lời này trả lời câu hỏi và đó là câu trả lời duy nhất phù hợp với tôi, còn điều gì mong muốn hơn nữa?
valk

3
Tôi không nghĩ rằng điều này trả lời câu hỏi ở tất cả. như @eremzeit đã nói, điều này sẽ không ngăn tất cả các truy vấn sql được kết xuất vào bảng điều khiển của bạn, nó sẽ chỉ ngăn giá trị trả về từ lệnh đó được in ...
opsidao

1
Nó không trả lời câu hỏi nhưng hữu ích cho kết quả không lặp lại
Rutger

4

Trong Rails 3.2, thiết lập

config.logger.level = Logger::INFO

hoạt động tốt đối với tôi vì đã tắt đầu ra SQL.


Tuy nhiên, điều này vẫn ghi đầu ra SQL vào tệp nhật ký?
Joshua Pinter

-2

Tôi thấy bạn đã có câu trả lời cần thiết mặc dù tôi muốn tư vấn cho bạn về viên ngọc 'tài sản yên tĩnh', hầu hết dữ liệu nhật ký sẽ là phần tổng hợp và bao gồm tài sản, viên đá quý này sẽ loại bỏ điều đó và vẫn xuất ra các truy vấn và hành vi dữ liệu.

Chúc vui vẻ


1
Câu hỏi đặt ra là về đầu ra để giao diện điều khiển, không phải file log
Roger Ertesvag
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.