Я пытаюсь очистить журналы сервера в своем приложении JSF 2, чтобы оно было менее загроможденным. Это означает, например, не регистрировать исключения, которые я ожидаю и которые меня совершенно не интересуют. Для этого я создал свой собственный обработчик ошибок, используя технику, описанную на http://jugojava.blogspot.com/2010/09/jsf-2-exception-handling.html.
Однако все исключения, созданные в моих управляемых компонентах, регистрируются несколько раз, прежде чем достичь моего обработчика ошибок, сначала javax.enterprise.resource.webcontainer.jsf.application, а затем javax.enterprise.resource.webcontainer.jsf.lifecycle. Можно ли запретить этим классам регистрировать каждое исключение дважды? Я бы предпочел не отключать эти классы в log4j, поскольку они могут регистрировать другую полезную информацию.
Пример NPE в управляемом компоненте. Только последняя строка заносится в журнал намеренно.ALLVARLIG
означает "СЕРЬЕЗНО", а VARNING
означает "ПРЕДУПРЕЖДЕНИЕ"):
2012-02-01 07:32:43,477 ALLVARLIG [javax.enterprise.resource.webcontainer.jsf.application] (http-0.0.0.0-80-33) java.lang.NullPointerException: javax.faces.el.EvaluationException: java.lang.NullPointerException
[full stack trace]
2012-02-01 07:32:43,477 VARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http-0.0.0.0-80-33) #{myController.doStuff}: java.lang.NullPointerException: javax.faces.FacesException: #{myController.doStuff}: java.lang.NullPointerException
[full stack trace]
2012-02-01 07:32:43,477 ERROR [com.mycompany.myapplication.controller.error.ErrorHandler] (http-0.0.0.0-80-33) Unknown error: javax.faces.FacesException: #{myController.doStuff}: java.lang.NullPointerException
[full stack trace]