diff options
| author | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-02-10 15:40:46 +0000 | 
|---|---|---|
| committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-03-03 00:39:17 +0000 | 
| commit | 9144f234f0cde55398d19696e42da8dea9c7bade (patch) | |
| tree | 75a4541cefd744c5a299fa347a6d09c283318455 | |
| parent | Add some nice cxxflags (diff) | |
| download | icespider-9144f234f0cde55398d19696e42da8dea9c7bade.tar.bz2 icespider-9144f234f0cde55398d19696e42da8dea9c7bade.tar.xz icespider-9144f234f0cde55398d19696e42da8dea9c7bade.zip | |
Default 500 error handler
Include the exception class name in the error report into the default
error page. Write the same output to the error log after the request
dump.
| -rw-r--r-- | icespider/core/core.cpp | 7 | ||||
| -rw-r--r-- | icespider/unittests/testApp.cpp | 2 | 
2 files changed, 6 insertions, 3 deletions
| diff --git a/icespider/core/core.cpp b/icespider/core/core.cpp index d63464e..057faa6 100644 --- a/icespider/core/core.cpp +++ b/icespider/core/core.cpp @@ -4,6 +4,7 @@  #include <Ice/ObjectAdapter.h>  #include <boost/filesystem/convenience.hpp>  #include <factory.impl.h> +#include <compileTimeFormatter.h>  INSTANTIATEFACTORY(IceSpider::Plugin, Ice::CommunicatorPtr, Ice::PropertiesPtr);  INSTANTIATEPLUGINOF(IceSpider::ErrorHandler); @@ -105,15 +106,17 @@ namespace IceSpider {  		defaultErrorReport(request, exception);  	} +	AdHocFormatter(LogExp, "Exception type: %?\nDetail: %?\n");  	void  	Core::defaultErrorReport(IHttpRequest * request, const std::exception & exception) const  	{  		char * buf = __cxxabiv1::__cxa_demangle(typeid(exception).name(), NULL, NULL, NULL);  		request->setHeader("Content-Type", "text/plain");  		request->response(500, buf); -		free(buf); -		request->getOutputStream() << exception.what(); +		LogExp::write(request->getOutputStream(), buf, exception.what());  		request->dump(std::cerr); +		LogExp::write(std::cerr, buf, exception.what()); +		free(buf);  	}  	Ice::ObjectPrx diff --git a/icespider/unittests/testApp.cpp b/icespider/unittests/testApp.cpp index 5832595..9714d33 100644 --- a/icespider/unittests/testApp.cpp +++ b/icespider/unittests/testApp.cpp @@ -527,7 +527,7 @@ BOOST_AUTO_TEST_CASE( testErrorHandler_Unhandled )  	BOOST_REQUIRE_EQUAL(h["Content-Type"], "text/plain");  	auto & o = requestDeleteItem.output;  	auto b = o.str().substr(o.tellg()); -	BOOST_REQUIRE_EQUAL(b, "test error"); +	BOOST_REQUIRE_EQUAL(b, "Exception type: TestIceSpider::Ex\nDetail: test error\n");  }  BOOST_AUTO_TEST_CASE( testErrorHandler_Handled1 ) | 
