使用log4j输出详细错误日志

使用log4j输出详细错误日志,方法如下:
protected static Logger logger = LoggerFactory.getLogger(NewClass.class);
try{
  doSomething();
}catch (Exception e) 
{
  e.printStackTrace();
  logger.error("保存信息失败,错误原因:"+e.getMessage(),e); 
}

输出信息如下: 
[2016-10-18 15:59:45] [[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'] ERROR com.tax.interfaces.service.TrdiRefundTaxBill.getRefundTaxBillBatch[238] - 获取信息失败,错误原因:Adding text to an XML document must not be null
java.lang.IllegalArgumentException: Adding text to an XML document must not be null
    at org.dom4j.DocumentFactory.createText(DocumentFactory.java:174) ~[dom4j-1.6.1.jar:1.6.1]
    at org.dom4j.tree.AbstractElement.addText(AbstractElement.java:899) ~[dom4j-1.6.1.jar:1.6.1]
    at org.dom4j.tree.AbstractElement.setText(AbstractElement.java:1120) ~[dom4j-1.6.1.jar:1.6.1]
    at com.tax.interfaces.service.TrdiRefundTaxBill.getOneBillXmlData(TrdiRefundTaxBill.java:288) ~[TrdiRefundTaxBill.class:na]
    at com.tax.interfaces.service.TrdiRefundTaxBill.getRefundTaxBillBatch(TrdiRefundTaxBill.java:232) ~[TrdiRefundTaxBill.class:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_29]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_29]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_29]
    at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_29]
    at com.tax.interfaces.impl.SysInterfaceImpl.service(SysInterfaceImpl.java:158) ~[SysInterfaceImpl.class:na]
    at com.tax.webservice.impl.TrdiWebServiceImpl.service(TrdiWebServiceImpl.java:53) ~[TrdiWebServiceImpl.class:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_29]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_29]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_29]
    at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_29]
    at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:136) ~[cxf-2.1.3.jar:2.1.3]
    at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:82) ~[cxf-2.1.3.jar:2.1.3]
    at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:54) ~[cxf-2.1.3.jar:2.1.3]
    at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:68) ~[cxf-2.1.3.jar:2.1.3]
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:56) ~[cxf-2.1.3.jar:2.1.3]
    at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:38) ~[cxf-2.1.3.jar:2.1.3]
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:92) ~[cxf-2.1.3.jar:2.1.3]
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220) ~[cxf-2.1.3.jar:2.1.3]
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:78) ~[cxf-2.1.3.jar:2.1.3]
    at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:94) ~[cxf-2.1.3.jar:2.1.3]
    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:285) ~[cxf-2.1.3.jar:2.1.3]
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:168) ~[cxf-2.1.3.jar:2.1.3]
    at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:175) ~[cxf-2.1.3.jar:2.1.3]
    at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:154) ~[cxf-2.1.3.jar:2.1.3]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) ~[javax.servlet_1.0.0.0_2-5.jar:2.5]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:821) ~[javax.servlet_1.0.0.0_2-5.jar:2.5]
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) ~[weblogic.jar:10.3.6.0]
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) ~[weblogic.jar:10.3.6.0]
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) ~[weblogic.jar:10.3.6.0]
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:185) ~[weblogic.jar:10.3.6.0]
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3729) ~[weblogic.jar:10.3.6.0]
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696) ~[weblogic.jar:10.3.6.0]
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) ~[com.bea.core.weblogic.security.identity_1.2.0.0.jar:1.2.0.0]
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) ~[com.bea.core.weblogic.security.wls_1.0.0.0_6-2-0-0.jar:6.2.0.0]
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273) ~[weblogic.jar:10.3.6.0]
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179) ~[weblogic.jar:10.3.6.0]
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490) ~[weblogic.jar:10.3.6.0]
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) [com.bea.core.weblogic.workmanager_1.11.0.0.jar:1.11.0.0]
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) [com.bea.core.weblogic.workmanager_1.11.0.0.jar:1.11.0.0]

你可能感兴趣的:(Java)