2012-01-31 29 views
9

Trong Rails 3.2 Tôi nhận cảnh báo không dùng nữa, khi sử dụng logger.silence {}. Trong lưu ý phát hành: "ActiveSupport :: BufferedLogger # im lặng không còn được dùng nữa. Nếu bạn muốn nén nhật ký cho một khối nhất định, hãy thay đổi cấp nhật ký cho khối đó".Rails 3.2 cảnh báo ngưng sử dụng nhật ký im lặng

Tôi có thể dễ dàng thay đổi cấp độ nhật ký cho khối đó bằng cách nào?

Trả lời

2
def silent_method 
    old_level = Rails.logger.level 
    Rails.logger.level = 7 

    result = your_code_here 

    Rails.logger.level = old_level 

    result 
end 
4

Dường như logger.silence đang được thay thế bằng cách đơn giản silence:

logger.silence do 
    #your silenced code here 
end 

trở thành:

silence do 
    #your silenced code here 
end 

Ít nhất nó không tạo ra các cảnh báo khấu hao nữa, và nó im lặng đầu ra đã đăng nhập.

+1

im lặng nên có một đối số, phải không? https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/kernel/reporting.rb#L97 – kuboon

+0

Điều này không hiệu quả chút nào trong Rails 3.2.x và kuboon là chính xác trong rằng 'im lặng' đơn giản cần một đối số. – astjohn

3

Câu trả lời đầu tiên là tốt, nhưng chưa hoàn thành. Chúng tôi đã gặp sự cố khi cố gắng tìm ra vấn đề này. silence &block đã bị phản đối Rails 3, vì vậy bạn nên sử dụng cú pháp cập nhật gọi logger trực tiếp:

Rails.logger.silence do 
    # your code here... 
end 

Đối thậm chí ngọt ngào hơn, customizability ngọt, bạn có thể vượt qua một mức độ đăng nhập để #silence().

0

Hoặc quietly{}, kể từ silence yêu cầu một luồng.

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