[ 
https://issues.apache.org/jira/browse/CXF-3878?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13135412#comment-13135412
 ] 

Daniel Kulp commented on CXF-3878:
----------------------------------

Actually, the printStackTrace stuff is kind of crappy as that would just print 
to stderr and not into the logs at all.   I've done:

{code}
        Message msg = PhaseInterceptorChain.getCurrentMessage();
        FaultListener flogger = null;
        if (msg != null) {
            flogger = (FaultListener)PhaseInterceptorChain.getCurrentMessage()
                .getContextualProperty(FaultListener.class.getName());
        }
        if (flogger != null) {
            flogger.faultOccurred(ex, message, msg);
        } else if (LOG.isLoggable(Level.FINE)) {
            LOG.log(Level.FINE, message, ex);
        }
{code}

Which accomplishes two things:

1) If a FaultListener is registered (example: on the bus), the Exception will 
feed into there and the listener can do whatever it wants.

2) Otherwise, log the full exception at FINE level.


                
> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper does not print the 
> WebApplicationException stack trace even when log level is set to FINEST
> ---------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CXF-3878
>                 URL: https://issues.apache.org/jira/browse/CXF-3878
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 2.3.7, 2.4.3
>         Environment: Windows 7 64-bit, JDK 1.7.0
>            Reporter: Kartik Pandya
>            Priority: Minor
>              Labels: log
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> WebApplicationException occurring as a result of a JAXB mapping (an internal 
> NullPointerException caused it), never got printed on the console or in the 
> logs.  The following message did get printed:
>   WARNING WebApplicationException has been caught, cause: 
> java.lang.NullPointerException
> But beyond this, no other information was available. Debugging revealed that 
> the problem was in JAXB mapping in one of my classes, but it would have been 
> very helpful if the exception trace is printed in the logs or on the console.
> The problem remained even after setting the log levels in logging.properties 
> to FINEST.  Other FINEST logs did get printed fine, except for the stack 
> trace of the exception.  My research showed that the 
> setPrintStackTrace(boolean) method of WebApplicationExceptionMapper never 
> gets called from anywhere.  This will mean that the printStackTrace variable 
> of the class always remains false, resulting in eternal shadowing of the 
> stack trace. 
> I made a small change to my local copy of 
> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper Java file and patched 
> it to cxf-2.4.3.jar to get the stack trace in my logs when log level was set 
> to INFO or lower.  The three line change is as below:
>     public Response toResponse(WebApplicationException ex) {
> +     if(LOG.isLoggable(Level.INFO)) {
> +             printStackTrace = true;
> +     }
>       ...
> (lines with + are added lines)
> It would be great if you can make this change in subsequent versions.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to