Đường ray đi kèm với lớp logger
của Ruby trong thư viện chuẩn. Các cấp nhật ký có sẵn là: :debug
, :info
, :warn
, :error
và :fatal
. Tôi đã tự hỏi nếu tôi thêm đăng nhập rộng rãi trong ứng dụng Rails với mức nhật ký được đặt thành :debug
để phát triển và thử nghiệm, sẽ có tác động hiệu suất khi chạy trong sản xuất với tính năng ghi nhật ký bị tắt hoặc được đặt ở cấp cao hơn, chẳng hạn như config.log_level = :fatal
?Đang đăng nhập vào Rails, có hiệu suất nào không?
Trả lời
Câu trả lời ngắn gọn là việc ghi nhật ký sẽ luôn có tác động hiệu suất, đặc biệt khi đăng nhập vào đĩa. Tuy nhiên, có một vài sự tinh tế.
Thứ nhất, sử dụng mức :debug
sẽ có tỷ lệ hiệu suất lớn hơn :fatal
, vì số chuỗi lớn hơn đang được đánh giá và ghi vào đầu ra nhật ký (ví dụ: đĩa).
Một cạm bẫy tiềm năng là nếu bạn có nhiều cuộc gọi như thế này trong mã của bạn:
logger.debug = "my string to debug with a #{variable}"
Sẽ có một tác động hiệu quả ngay cả khi mức sản lượng cho phép không bao gồm gỡ lỗi. Lý do là Ruby phải đánh giá các chuỗi này, bao gồm việc khởi tạo đối tượng hơi nặng String
và nội suy các biến và cần có thời gian.
Do đó, chúng tôi khuyên bạn nên chuyển khối sang phương thức nhật ký, vì chúng chỉ được đánh giá nếu mức đầu ra giống nhau hoặc được bao gồm trong mức cho phép (tức là tải chậm). Cùng một mã được viết lại sẽ là:
logger.debug { "my string to debug with a #{variable}" }
Nội dung của khối và do đó nội suy chuỗi chỉ được đánh giá nếu gỡ lỗi được bật. Điều này tiết kiệm hiệu suất chỉ thực sự đáng chú ý với số lượng lớn đăng nhập, nhưng đó là một thực hành tốt để sử dụng.
Bạn có thể đọc thêm về điều này trong số Logger docs.
- 1. Đang đăng nhập vào busy_job?
- 2. Đang đăng nhập C#: Nhận hiệu suất tên lớp/phương thức
- 3. Thủ thuật hiệu suất cho C# Đăng nhập
- 4. Kiểm tra xem không có người dùng nào hiện đang đăng nhập vào Windows
- 5. Cách đăng nhập có hiệu quả không đồng bộ?
- 6. Đăng nhập vào các chủ đề trong ứng dụng Rails
- 7. Cần tây Đăng nhập vào tập tin
- 8. Đăng nhập vào Groovy Script
- 9. LIMIT 1 có tăng hiệu suất không?
- 10. Logback.xml không đăng nhập vào ConsoleAppender?
- 11. Rails & Devise: Làm cách nào để hiển thị trang đăng nhập mà không có bố cục?
- 12. Để đăng nhập hoặc không đăng nhập?
- 13. Ruby on Rails: Cách tốt nhất để thêm đăng nhập Facebook, đăng nhập Twitter, đăng nhập OpenID, v.v.
- 14. Rails Mật khẩu chỉ đăng nhập
- 15. Hiệu suất hoạt động của việc bật chỉ thị đăng nhập phản hồi apache
- 16. JBoss AS 7 bảo mật: làm thế nào để có được tên đăng nhập hiện đang đăng nhập?
- 17. Đăng nhập vào PostgreSQL - Đăng nhập thất bại
- 18. MethodBase.GetCurrentMethod() Hiệu suất?
- 19. Rails không thể đăng nhập vào postgresql - PG :: Lỗi - mật khẩu - thông tin chính xác
- 20. Không nhập khẩu và các đối tượng không có tác động hiệu suất
- 21. Hiệu suất gây hại có hiệu quả không?
- 22. Hiệu suất của StackFrame như thế nào?
- 23. Mới vào bình và Flask-Login - ImportError: Không có module nào có tên đăng nhập
- 24. Giảm Footrel Rails Memory Footprint & Tăng hiệu suất?
- 25. Việc thêm [Serializable] vào lớp có bất kỳ tác động hiệu suất nào không?
- 26. Không có đăng nhập Commons trong Android?
- 27. Ứng dụng nhiều trang có đăng nhập một lần trên các tên miền trong Rails?
- 28. Có nhập khẩu không sử dụng trong hiệu suất hamper python?
- 29. Có cách nào để đăng nhập vào bàn điều khiển mà không cần mã đột nhập dưới IE không?
- 30. Làm cách nào để làm cho ActiveRecord :: Schema.define không đăng nhập vào stdout?
Không biết bạn có thể chuyển khối để ghi nhật ký. Hoàn hảo! – CuriousMind