Here is the output from using my method:
try {
nullString.toLowerCase();
}
catch (Exception e) {
String stackTrace = serverProperties.convertStackTraceToString(e, e.getStackTrace());
serverProperties.getLogger().info(stackTrace);
}
05/10 20:16:20 java.lang.NullPointerException
at org.hackystat.kernel.admin.TestServerProperties.testConvertStackTraceToString(TestServerProperties.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:421)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:305)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:186)
At 07:39 PM 5/10/2005, Cedric wrote:
Good suggestion to log stack trace. But I have a different approach:
But what about:
java.util.logging.Logger.throwing(String sourceClass, String
sourceMethod, Throwable thrown).
I have never used this method, but I guess this might be what we need.
Here is the output from Cedric's suggestion:
try {
nullString.toLowerCase();
}
catch (Exception e) {
serverProperties.getLogger().throwing( "class" , "method", e);
}
05/10 20:13:05 THROW
At 08:01 PM 5/10/2005, Hongbing wrote:
There is a better one.
log(Level level, String msg, Throwable thrown)
Here is the output from Hongbing's suggestion:
try {
nullString.toLowerCase();
}
catch (Exception e) {
serverProperties.getLogger().log(Level.SEVERE, "exception", e);
}
05/10 20:04:54 exception
It seems that using these methods requires some additional extensions to the Logger. The Javadoc for both these methods say, "Note that the thrown argument is stored in the LogRecord thrown property, rather than the LogRecord parameters property. Thus is it processed specially by output Formatters and is not treated as a formatting parameter to the LogRecord message property."
I think my solution is a little simpler than creating special output Formatters.
thanks, aaron
