You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Daniel Kulp (Commented) (JIRA)" <ji...@apache.org> on 2011/10/25 22:46:33 UTC

[jira] [Commented] (CXF-3878) org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper does not print the WebApplicationException stack trace even when log level is set to FINEST

    [ 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