2012-06-21 10 views
5

W naszej filozofii dziennik błędów jest zawsze spowodowany błędem programisty.Jak zrobić, że 404 strony nie zapisują dziennika błędów?

In Play 1.2.x, tryb prod dowolny dostęp do nieistniejącej strony wywoła dziennik błędów:

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 

Jak mogę skonfigurować grać, aby nie wydać dziennik błędów w tym przypadku? A może poziom logu WARN, co najwyżej?

Odpowiedz

6

kod do logowania to znajduje się w ActionInvoker.java (grać 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())); 
     } 

Wygląda więc na to nie ma sposobu, aby dostosować poziom rejestrowania ActionNotFoundException. Zgadzam się, że nie powinno to być na poziomie "błędu". Polecam otwarcie biletu pod numerem https://play.lighthouseapp.com/dashboard.

0

Choć nie jest to najbardziej elegancki rozwiązań, można użyć klasy ExpressionFilter z pakietu Apache log4j Dodatki do filtrowania te wyjątki z domyślnego dziennika błędów z następującymi zmianami:

dependencies.yml:

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

<zalogowaniu> .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 

Umożliwia to również przekierowanie tych konkretnych wiadomości do oddzielnego miejsca docelowego poprzez utworzenie nowego dodatku log4j i odwrócenie właściwości acceptOnMatch w powyższej zasadzie, aby akceptować tylko rejestrowanie dla wyjątku ActionNotFound.

Powiązane problemy