2012-06-21 30 views
5

Trong triết lý của chúng tôi, nhật ký lỗi luôn do lỗi lập trình viên gây ra.Làm cách nào để tạo các trang 404 không ghi nhật ký lỗi?

Trong Chơi 1.2.x, chế độ sản, bất kỳ truy cập đến một trang không tồn tại sẽ kích hoạt một bản ghi lỗi:

ERROR (play) ~ 
MyController.myAction action not found 
Action not found 
Action MyController.myAction could not be found. Error raised is No method public static void myAction() was found in class controllers.MyController 
play.exceptions.ActionNotFoundException: Action MyController.myAction not found 
    at play.mvc.ActionInvoker.getActionMethod(ActionInvoker.java:604) 
    at play.mvc.ActionInvoker.resolve(ActionInvoker.java:85) 
    at Invocation.HTTP Request(Play!) 
Caused by: java.lang.Exception: No method public static void myAction() was found in class controllers.MyController 

Làm thế nào tôi có thể cấu hình Chơi không phát hành một bản ghi lỗi trong trường hợp này? Có thể mức độ nhật ký WARN nhiều nhất?

Trả lời

6

Mã để đăng nhập này nằm ở ActionInvoker.java (chơi 1.2.5RC4):

catch (ActionNotFoundException e) { 
      Logger.error(e, "%s action not found", e.getAction()); 
      throw new NotFound(String.format("%s action not found", e.getAction())); 
     } 

Vì vậy, nó dường như không có cách nào để điều chỉnh mức độ khai thác gỗ của ActionNotFoundException. Tôi đồng ý rằng điều này không nên ở cấp 'lỗi'. Tôi khuyên bạn nên mở một vé tại https://play.lighthouseapp.com/dashboard.

0

Trong khi không phải là thanh lịch nhất của các giải pháp, bạn có thể sử dụng lớp ExpressionFilter từ gói Apache log4j Extras để lọc những ngoại lệ này ra khỏi log lỗi mặc định của bạn với những thay đổi sau:

dependencies.yml:

- log4j -> apache-log4j-extras 1.2.17: 
    transitive: false 

< đăng > conf:

log4j.appender.<appender>.filter.1=org.apache.log4j.filter.ExpressionFilter 
log4j.appender.<appender>.filter.1.expression=EXCEPTION ~= play.exceptions.ActionNotFoundException 
log4j.appender.<appender>.filter.1.acceptOnMatch=false 

Điều này cũng cho phép bạn chuyển hướng các thư cụ thể đó đến một đích riêng biệt bằng cách tạo một ứng dụng log4j mới và đảo ngược thuộc tính acceptOnMatch trong quy tắc trên để chỉ chấp nhận đăng nhập cho ngoại lệ ActionNotFound.

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